Twoim wyzwaniem jest rozszerzenie niektórych nawiasów w danych wejściowych programu, jak pokazano:
- Znajdź ciąg s między dwoma pasującymi nawiasami
[i]za pomocą jednej cyfry n po nawiasie zamykającym. - Usuń wsporniki.
- Zamień s na siebie powtórzone n razy. (Jeśli n wynosi 0, po prostu usuń s .)
- Przejdź do kroku 1, aż na wejściu nie będzie pasujących nawiasów.
Dodatkowe zasady i wyjaśnienia:
- Przyjmiesz dane wejściowe i wydasz dane wyjściowe dowolnymi dozwolonymi środkami.
- Końcowy znak nowej linii w danych wyjściowych jest dozwolony.
- Musisz tylko obsługiwać ASCII do wydruku na wejściu.
- Możesz założyć, że wszystkie nawiasy pasują do siebie, tzn. Nigdy nie otrzymasz danych wejściowych
[]]]]lub[[[[]. - Możesz założyć, że po każdym nawiasie zamykającym
]jest cyfra.
Przypadki testowe:
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
Ponieważ jest to gra w golfa , wygrywa najkrótsza odpowiedź w każdym języku. Powodzenia!
snie powinien nigdy zawierać innych nawiasów? Na przykład próba rozwiązania [Foo[Bar]3]2przez Foo[Bar3-krotne rozwinięcie łańcucha spowoduje niepoprawny stanFoo[BarFoo[BarFoo[Bar]2
[a[b]2c[d]2e]2? Dostajesz abbcddeabbcdde, rozwijając się bi dpierwszy, ale ababcdbcdedbabcdbcdederozwijając się a[bi d]2epierwszy.