Ctrl K

Раскрытие фигурных скобок

Сложная
Шаблон template задаёт множество слов из строчных латинских букв по таким правилам: - одна буква задаёт множество из одного слова: "q" → {q}; - фигурные скобки с одним или несколькими шаблонами через запятую задают объединение их множеств: "{a,bc,a}" → {a, bc}; - шаблоны, записанные подряд, задают все склейки: первое слово берётся из множества первого шаблона, второе — из множества второго. Например, "{a,b}{c,d}" → {ac, ad, bc, bd}, а "m{e,a}t" → {met, mat}. Правила можно вкладывать друг в друга сколько угодно глубоко. Верните все различные слова, которые задаёт шаблон, в лексикографическом порядке.
Пример 1
template="{x,yz}{a,b}" → ['xa', 'xb', 'yza', 'yzb']

Каждое слово первой группы склеиваем с каждым словом второй: xa, xb, yza, yzb.

Пример 2
template="k{o,{o,i}t}" → ['kit', 'ko', 'kot']

Внутренняя группа даёт «ot» и «it», вместе с «o» получаем ko, kot, kit.

Пример 3
template="{a,b,a}" → ['a', 'b']

Повторы в ответ попадают один раз.

Ограничения
  • 1 ≤ len(template) ≤ 60
  • template состоит из {, }, , и строчных латинских букв
  • template корректен по правилам выше
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРасчистить ряд шариков СложнаяВсе написания по шаблону СредняяКод по стрелкам вверх и вниз СредняяСамый длинный сбалансированный отрезок скобок СложнаяЦепочка по одной букве Сложная
загружаем Python…
Вход
template="{x,yz}{a,b}"
Ожидается
['xa', 'xb', 'yza', 'yzb']

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 92 теста на сервере, включая скрытые.