您面临的挑战是在程序的输入中扩展一些括号,如下所示:
- 在两个匹配的括号和之间找到一个字符串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
第一可以得到。