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!
s
nie powinien nigdy zawierać innych nawiasów? Na przykład próba rozwiązania [Foo[Bar]3]2
przez Foo[Bar
3-krotne rozwinięcie łańcucha spowoduje niepoprawny stanFoo[BarFoo[BarFoo[Bar]2
[a[b]2c[d]2e]2
? Dostajesz abbcddeabbcdde
, rozwijając się b
i d
pierwszy, ale ababcdbcdedbabcdbcdede
rozwijając się a[b
i d]2e
pierwszy.