#499 Применение скидки к корзине покупателя 2

Компании:
Яндекс
Темы:
JavaООППрактика

Вы — backend-разработчик в интернет-магазине. Дела идут в гору и магазин решил повысить лояльность покупателей, предоставляя им персональные скидки.

К вам обратился product owner с задачей создать простую систему лояльности, которая предоставляет процентную скидку на корзину.

Размер скидки зависит от покупателя. Аналитики уже определили, какие скидки должны быть предоставлены покупателям.

Определения:

Корзина - список покупок покупателя.

Покупка:

  • id товара;
  • Цена;
  • Итоговая стоимость c учетом скидки.

Задача

Написать часть новой системы лояльности, которая применяет скидку покупателя к корзине:

  • На вход получает id покупателя и корзину;
  • Вычисляет и применяет скидки;
  • Возвращает корзину, в которой учтены скидки;
  • Все расчёты в рублях, точность до копеек. Округления по математическим правилам.

Есть два вида скидки (не могут прийти одновременно):

  • Процент от суммы корзины;
  • Фиксированная скидка.

Сумма скидки распределяется равномерно между товарами, пропорционально цене товара.

Примеры:

Скидка 50%, в корзине товары на 50р и 100р. Скидка 25р и 50р;
Скидка 10р, в корзине товары на 20р и 30р. Скидка 4р и 6р;
Скидка 10р, в корзине товары на 1р и 99р. Скидка 10коп и 9р 90коп.

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти