Предостережение: я использую ColdFusion, но я чувствую, что это может охватывать широкий круг языков, так как это больше вопрос программирования, а не просто вопрос ColdFusion.
Хорошо, я былпоручено внедрение кода для применения рекламных акций к товарам в корзине.В принципе, может быть любое количество акций для любого количества предметов - например, «Купи 2 предмета« ABC », получи 1 предмета« ABC »со скидкой 50%».Тем не менее, также может быть «купить 3 предмета« ABC », получить 1 предмета« ABC »бесплатно».Или даже «купите 2 предмета« ABC », получите 1 предмета« XYZ »с 50% скидкой».
Итак, представьте себе, что в широком спектре продуктов проводятся подобные акции.
Теперь мне нужно пройтись по каждому возможному сценарию, чтобы применить рекламную акцию (или рекламные акции), которые дают клиенту наилучшее возможное значение (наименьшая общая сумма).
Однако я не могу понять, какнапишите код, который будет работать через любой возможный сценарий.Я могу сузить число рекламных акций, на которые можно претендовать, отфильтровывая те, которые не относятся к товарам в корзине.Очевидно, я также знаю количество подходящих товаров в корзине.
Итак, допустим, у меня в корзине 5 товаров, и у 3 из них есть соответствующие акции (например, те, что указаны выше).1 товар имеет 3 возможных продвижения, другой - 4 возможных, другой - 2 возможных.Моя первая мысль - циклически проходить каждое возможное повышение и внутри этого цикла проходить через каждый возможный порядок подходящих предметов:
1-2-3 1-3-2 2-1-3 2-3-1 3-1-2 3-2-1
... и применяйте акции каждый раз, сохраняя комбинацию, которая дает наименьший промежуточный итог.
Будет ли это работать?Это излишне?У кого-нибудь есть лучшее предложение?
Любые примеры кода будут с благодарностью.Хотя я программирую это в ColdFusion, я прекрасно умею читать / понимать другие языки.
Спасибо.