Контест Middle Типы значений и ссылочные обновлено

Задача на Swift: стек отмены для текстового поля

Условие

Текстовое поле поддерживает команды:

  • type <слово>: дописать слово в конец текста;
  • delete <k>: удалить последние k слов (если слов меньше, удалить все);
  • undo: отменить последнюю ещё не отменённую команду type или delete (отменённые повторно не отменяются; если отменять нечего, ничего не делать);
  • print: вывести слова текста через пробел или <empty>, если текст пуст.

Первая строка: n (1 ≤ n ≤ 10⁴). Дальше n команд. Суммарный размер вывода не больше 6·10⁴ символов.

Пример

8
type hello
type big
type world
delete 2
print
undo
print
undo
hello
hello big world

Последний undo отменяет type world.

Как подойти

История обратных операций вместо снимков состояния.

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

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