Seu desafio é expandir alguns colchetes na entrada de um programa, como mostrado:
- Encontre uma string s entre dois colchetes correspondentes
[
e]
, com um único dígito n após o colchete de fechamento. - Retire os suportes.
- Substitua s por si mesmo repetido n vezes. (Se n for 0, basta remover s .)
- Vá para a etapa 1 até que não haja mais colchetes correspondentes na entrada.
Regras e esclarecimentos adicionais:
- Você receberá e dará saída por qualquer meio permitido.
- Uma nova linha à direita na saída é permitida.
- Você só precisa manipular ASCII imprimível na entrada.
- Você pode assumir que todos os colchetes correspondem, ou seja, você nunca receberá a entrada
[]]]]
ou[[[[]
. - Você pode supor que cada colchete de fechamento
]
tenha um dígito depois dele.
Casos de teste:
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
Como se trata de código-golfe , a resposta mais curta em cada idioma vence. Boa sorte!
s
nunca deve conter outros colchetes? Por exemplo, tentar resolver [Foo[Bar]3]2
expandindo a cadeia Foo[Bar
de caracteres 3 vezes resultaria em um estado inválido.Foo[BarFoo[BarFoo[Bar]2
[a[b]2c[d]2e]2
? Você obtém abbcddeabbcdde
expandindo b
e d
primeiro, mas ababcdbcdedbabcdbcdede
expandindo a[b
e d]2e
primeiro.