Контест Middle PHP 8.x: enum, readonly, match обновлено
Машина состояний заказа на enum
Условие
Заказ начинает в статусе new. Переходы: new → pay → paid, new → cancel → cancelled, paid → ship → shipped, paid → refund → refunded, shipped → deliver → delivered, shipped → refund → refunded. Из cancelled, refunded, delivered переходов нет.
Для каждой строки событий выведите итоговый статус или первую ошибку: ERROR unknown event X для неизвестного события, ERROR cannot X when S для недопустимого перехода.
Ввод: n (n ≤ 10⁴), затем n строк с событиями через пробел (строка может быть пустой).
Пример
4
pay ship deliver
pay cancel
refund
pay ship refund
delivered
ERROR cannot cancel when paid
ERROR cannot refund when new
refunded
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.