Контест 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

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме