Недавно я потворствовал некоторой ностальгии в форме Bookworm Deluxe:
Если вы еще этого не видели, это словесная игра, цель которой состоит в том, чтобы соединить соседние плитки и сформировать слова. Чтобы определить, является ли строка допустимым словом, она проверяет его по своему внутреннему словарю, который хранится в сжатом формате, который выглядит следующим образом:
aa
2h
3ed
ing
s
2l
3iis
s
2rdvark
8s
4wolf
7ves
Правила распаковки словаря просты:
Прочитайте число в начале строки и скопируйте столько символов из начала предыдущего слова. (Если числа нет, скопируйте столько символов, сколько вы делали в прошлый раз.)
Добавьте следующие слова к слову.
Итак, наше первое слово aa
, за которым следует 2h
, что означает «скопировать первые две буквы aa
и добавить h
», формируя aah
. Затем 3ed
становится aahed
, и поскольку в следующей строке нет номера, мы снова копируем 3 символа в форму aahing
. Этот процесс продолжается на протяжении всего словаря. Результирующие слова из небольшого примера ввода:
aa
aah
aahed
aahing
aahs
aal
aaliis
aals
aardvark
aardvarks
aardwolf
aardwolves
Ваша задача состоит в том, чтобы выполнить эту распаковку как можно меньше байтов.
Каждая строка ввода будет содержать ноль или более цифр, 0-9
за которыми следуют одна или несколько строчных букв a-z
. Вы можете взять ввод и выдать вывод либо в виде списка строк, либо в виде отдельной строки со словами, разделенными любым символом, кроме 0-9
/ a-z
.
Вот еще один небольшой тестовый пример с несколькими крайними случаями, не описанными в этом примере:
abc cba 1de fg hi 0jkl mno abcdefghijk 10l
=> abc cba cde cfg chi jkl mno abcdefghijk abcdefghijl
Вы также можете проверить свой код в полном словаре: ввод , вывод .
locate
Программа использует этот тип кодирования на путевых именах.
0
начальных0
s не будет?