Ваша задача состоит в том, чтобы расширить некоторые скобки во входных данных программы, как показано ниже:
- Найдите строку s между двумя соответствующими скобками
[
и]
, с одной цифрой n после закрывающей скобки. - Снимите скобки.
- Замените s на себя, повторяя n раз. (Если n равно 0, просто удалите s .)
- Переходите к шагу 1 до тех пор, пока на входе не останется подходящих скобок.
Дополнительные правила и разъяснения:
- Вы примете ввод и дадите вывод любым допустимым способом.
- Конечный перевод строки в выводе разрешен.
- Вам нужно только обрабатывать печатный ASCII на входе.
- Вы можете предположить, что все скобки совпадают, т.е. вы никогда не получите ввод
[]]]]
или[[[[]
. - Вы можете предположить, что после каждой закрывающей скобки
]
есть цифра.
Тестовые случаи:
Input -> Output
[Foo[Bar]3]2 -> FooBarBarBarFooBarBarBar
[one]1[two]2[three]3 -> onetwotwothreethreethree
[three[two[one]1]2]3 -> threetwoonetwoonethreetwoonetwoonethreetwoonetwoone
[!@#[$%^[&*(]2]2]2 -> !@#$%^&*(&*($%^&*(&*(!@#$%^&*(&*($%^&*(&*(
[[foo bar baz]1]1 -> foo bar baz
[only once]12 -> only once2
[only twice]23456789 -> only twiceonly twice3456789
[remove me!]0 ->
before [in ]2after -> before in in after
Поскольку это код-гольф , выигрывает самый короткий ответ на каждом языке. Удачи!
s
никогда не должна содержать других скобок? Например, попытка решить проблему [Foo[Bar]3]2
путем расширения строки в Foo[Bar
3 раза приведет к Foo[BarFoo[BarFoo[Bar]2
[a[b]2c[d]2e]2
? Вы получаете abbcddeabbcdde
расширение b
и d
сначала, но ababcdbcdedbabcdbcdede
расширение a[b
и d]2e
сначала.