Thách thức của bạn là mở rộng một số dấu ngoặc trong đầu vào của chương trình như được hiển thị:
- Tìm một chuỗi s giữa hai dấu ngoặc phù hợp
[
và]
, với một chữ số n sau dấu ngoặc đóng. - Xóa dấu ngoặc.
- Thay s bằng chính nó lặp đi lặp lại n lần. (Nếu n bằng 0, chỉ cần xóa s .)
- Chuyển đến bước 1 cho đến khi không còn dấu ngoặc phù hợp nào trong đầu vào.
Các quy tắc bổ sung và làm rõ:
- Bạn sẽ nhận đầu vào và cung cấp đầu ra thông qua bất kỳ phương tiện được phép.
- Một dòng mới trong đầu ra được cho phép.
- Bạn chỉ cần xử lý ASCII có thể in trong đầu vào.
- Bạn có thể cho rằng tất cả các dấu ngoặc trùng khớp, tức là bạn sẽ không bao giờ nhận được đầu vào
[]]]]
hoặc[[[[]
. - Bạn có thể giả sử rằng mỗi khung đóng
]
có một chữ số sau nó.
Các trường hợp thử nghiệm:
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
Vì đây là môn đánh gôn , câu trả lời ngắn nhất trong mỗi ngôn ngữ sẽ thắng. Chúc may mắn!
s
không bao giờ nên chứa các dấu ngoặc khác không? Ví dụ: cố gắng giải quyết [Foo[Bar]3]2
bằng cách mở rộng chuỗi Foo[Bar
3 lần sẽ dẫn đến trạng thái không hợp lệFoo[BarFoo[BarFoo[Bar]2
[a[b]2c[d]2e]2
? Bạn nhận được abbcddeabbcdde
bằng cách mở rộng b
và d
đầu tiên, nhưng ababcdbcdedbabcdbcdede
bằng cách mở rộng a[b
và d]2e
đầu tiên.