Ваше завдання полягає в тому, щоб розширити деякі дужки у вході програми, як показано:
- Знайдіть рядок 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
першого.