ความท้าทายของคุณคือการขยายวงเล็บบางส่วนในอินพุตของโปรแกรมตามที่แสดง:
- ค้นหาสตริง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
เนื่องจากนี่คือ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
ก่อน