あなたの挑戦は、示されているようにプログラムの入力でいくつかの括弧を拡張することです:
- 2つの一致する角かっことの間の文字列sを見つけます。閉じ角かっこの後に1桁の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
これはcode-golfであるため、各言語の最短回答が勝ちます。がんばろう!
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
最初。