La tua sfida è espandere alcune parentesi nell'input di un programma come mostrato:
- Trova una stringa s tra due parentesi corrispondenti
[
e]
, con una singola cifra n dopo la parentesi chiusa. - Rimuovere le staffe.
- Sostituisci s con se stesso ripetuto n volte. (Se n è 0, rimuovi semplicemente s .)
- Andare al passaggio 1 fino a quando non ci sono più parentesi corrispondenti nell'input.
Ulteriori regole e chiarimenti:
- Prenderai input e fornirai output con qualsiasi mezzo consentito.
- È consentita una nuova riga finale nell'output.
- È sufficiente gestire ASCII stampabile nell'input.
- Si può presumere che tutte le parentesi corrispondano, ovvero non si riceverà mai l'input
[]]]]
o[[[[]
. - Si può presumere che ogni parentesi di chiusura
]
abbia una cifra dopo di essa.
Casi test:
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
Poiché si tratta di code-golf , vince la risposta più breve in ogni lingua. In bocca al lupo!
s
non dovrebbe mai contenere altre parentesi? Ad esempio, tentare di risolvere [Foo[Bar]3]2
espandendo la stringa Foo[Bar
3 volte comporterebbe uno stato non validoFoo[BarFoo[BarFoo[Bar]2
[a[b]2c[d]2e]2
? Si ottiene abbcddeabbcdde
espandendo b
e d
prima, ma ababcdbcdedbabcdbcdede
espandendo a[b
e d]2e
prima.