Нам потрібно змоделювати кошик для покупок для крамниці на розі. Кошик має відстежувати список доданих товарів і правильно обчислювати ціну.
Товари додаються до кошика за допомогою кодів SKU (stock-keeping unit, одиниця зберігання запасу). Товари в крамниці:
| Назва | Ціна | SKU |
|---|---|---|
| Картопля | 10.00 | STAPOT |
| Рис | 30.00 | STARIC |
| Кава | 14.99 | STACOF |
| Газета | 2.99 | MEDNEW |
Кошик для покупок повинен підтримувати такі операції:
Альтернативна версія або розширення цієї історії використовує знижкові купони, які можна додати до кошика для покупок.
Щоб покупці залишалися задоволеними, крамниця на розі додала знижкові купони. Це означає, що для підтримки цих знижок наш кошик для покупок повинен уміти зчитувати знижкові купони та застосовувати їх до поточних товарів. Підтримувані купони:
| Тип | SKU | Правило |
|---|---|---|
| Фіксована знижка | FIX_TEN | Знижує загальну суму кошика на 10.00 |
| Знижка на товар | HALF_STAPOT | Зменшує ціну всіх товарів STAPOT удвічі |
Кошик для покупок має отримати нову операцію scan coupon, яка приймає SKU і додає його до кошика. Памʼятаймо, що total_amount не може бути відʼємним числом: мінімальне значення total_amount дорівнює 0.