Напишите программу, которая принимает (через стандартный ввод или командную строку) строку с рекурсивной формой
PREFIX[SUFFIXES]
где
PREFIXможет быть любой строкой строчных букв (az), включая пустую строку, иSUFFIXESможет быть любой последовательностью строк сPREFIX[SUFFIXES]объединенной вместе рекурсивной формой , включая пустую последовательность.
Создайте список строчных буквенных символов из входных данных, рекурсивно оценивая список строк в каждом из суффиксов и добавляя их к префиксу. Вывод для вывода строк в этом списке в любом порядке, по одному на строку (плюс необязательный завершающий перевод строки).
пример
Если вход
cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]то префикс
catи и суффиксыs[up[][]],[],ch[e[r[]s[]]], иa[maran[]comb[]pult[[]ing[]]]. Каждый суффикс имеет свой собственный префикс и суффиксы по очереди.На выходе будут эти 9 слов в любом порядке
catsup cats cat catcher catches catamaran catacomb catapult catapultingпотому что вход кодирует это дерево
и каждое из 9 выходных слов может быть сформировано путем обхода дерева от корня до листа.
Примечания
Помните, что префикс может быть пустой строкой, поэтому что-то вроде
[donut[][]cruller[]]допустимый вход, выход которого будет (в любом порядке)
donut crullerгде пустая строка для пустой строки, которой соответствует второй суффикс.
Последовательность суффиксов также может быть пустой, поэтому тривиальный регистр ввода
[]имеет одну пустую строку в качестве вывода:
- Вы можете предположить, что ввод будет производить только уникальные выходные слова.
- Например
hat[s[]ter[]s[]], будет неправильный ввод, потому чтоhatsкодируется дважды. - Точно так же
[[][]]недопустимо, потому что пустая строка кодируется дважды.
- Например
- Вы не можете предполагать, что ввод является настолько коротким или сжатым, насколько это возможно.
- Например,
'e'узел в главном примере выше может быть объединен с'ch'узлом, но это не значит, что ввод неверен. - Точно так же
[[[[[]]]]]допустимо, несмотря на то, что только пустая строка кодируется неоптимальным способом.
- Например,
- Вместо программы вы можете написать функцию, которая принимает входную строку в качестве аргумента и печатает вывод нормально или возвращает ее в виде строки или списка.
Самый короткий код в байтах побеждает.
