Додаток для керування візком (Cart), який обробляє закодовані команди для переміщення по 2D-сітці.
- Переміщення візка по 2D-сітці (X, Y).
- Підйом (
PICK) і розміщення (DROP) товарів у вказаних координатах. - Обробка послідовності команд.
- Валідація некоректних команд.
📂 src/
├── 📂 Classes/
│ ├── 📂 Base/
│ │ ├── Cart.php # Основний клас керування візком
│ │ ├── Grid.php # Клас для роботи з сіткою
│ │ ├── Move.php # Клас для руху
│ ├── 📂 Commands/
│ │ ├── CommandFactory.php # Фабрика команд
│ │ ├── DropCommand.php # Команда DROP
│ │ ├── MoveCommand.php # Команда руху
│ │ ├── PickCommand.php # Команда PICK
│ ├── 📂 Contracts/
│ │ ├── AppInterface.php # Інтерфейс застосунку
│ │ ├── CommandInterface.php # Інтерфейс команд
│ │ ├── MovableInterface.php # Інтерфейс рухомих об'єктів
│ ├── 📂 Core/
│ │ ├── App.php # Основний застосунок
│ │ ├── CommandExecutor.php # Виконавець команд
│ ├── 📂 Exceptions/
│ │ ├── InvalidCommandException.php # Обробка винятків
│ ├── 📂 Traits/
│ │ ├── 📂 Cart/
│ │ │ ├── CarryingItemTrait.php # Трейт для перенесення товару
│ │ │ ├── CartTrait.php # Основний трейт візка
│ │ │ ├── PositionTrait.php # Трейт позиції візка
│ │ ├── MoveTrait.php # Трейт для руху
├── config.php # Конфігурація програми (розмір сітки)
├── index.php # Точка входу
- Клонувати репозиторій:
git clone https://github.com/kykyrudza/Cart-Test-Exerice.git cd Cart-Test-Exerice - Встановити залежності:
composer install
- Запустити програму в терміналі:
php src/index.php
Після запуску програма очікує введення команд. Приклад команд:
RIGHT-3-UP-2-PICK-3,2-LEFT-1-DROP-2,2
| Команда | Дія |
|---|---|
| PICK-X,Y | Взяти товар у точці (X,Y) (тільки якщо візок знаходиться в цій точці) |
| DROP-X,Y | Покласти товар у точці (X,Y) (тільки якщо візок знаходиться в цій точці) |
| RIGHT-N | Переміститися вправо на N кроків |
| LEFT-N | Переміститися вліво на N кроків |
| UP-N | Переміститися вгору на N кроків |
| DOWN-N | Переміститися вниз на N кроків |
- По черзі виконуються команди:
RIGHT-3
UP-3
PICK-3,3
DOWN-3
LEFT-3
DROP-0,0
- Введення команд в одному рядку:
RIGHT-3-UP-3-PICK-3,3-DOWN-3-LEFT-3-DROP-0,0
-
Для виходу з програми введіть
exit. -
Для виявлення помилок введіть некоректну команду.
UP-10
PICK-10,10\Cart-Test-Exerice> php src/index.php
Grid size: 10x10
Enter command (or type 'exit' to quit): RIGHT-3
Cart position: (3, 0)
Carrying item: No
Enter command (or type 'exit' to quit): UP-3
Cart position: (3, 3)
Carrying item: No
Enter command (or type 'exit' to quit): PICK-3,3
Item picked on (3, 3)
Cart position: (3, 3)
Carrying item: Yes
Enter command (or type 'exit' to quit): DOWN-3
Cart position: (3, 0)
Carrying item: Yes
Enter command (or type 'exit' to quit): LEFT-3
Cart position: (0, 0)
Carrying item: Yes
Enter command (or type 'exit' to quit): DROP-0,0
Item dropped on (0, 0)
Cart position: (0, 0)
Carrying item: No
Enter command (or type 'exit' to quit): UP-10
Error: Cannot move up, out of bounds
Enter command (or type 'exit' to quit): PICK-10,10
Error: Cannot pick item at (10, 10)
Enter command (or type 'exit' to quit):
- Некоректні команди викликають помилку і не виконуються.
- Переміщення за межі сітки заборонено.
- Невірний формат команди
DROPвикликає помилку. - Команда
PICKабоDROPможе бути виконана лише в тому випадку, якщо координати візка збігаються з координатами команди.