เขียนโปรแกรมที่รับ (ผ่าน stdin หรือบรรทัดคำสั่ง) สตริงที่มีรูปแบบเรียกซ้ำ
PREFIX[SUFFIXES]
ที่ไหน
PREFIX
อาจเป็นสตริงของตัวอักษรตัวเล็ก (az) รวมถึงสตริงว่างและSUFFIXES
อาจเป็นลำดับของสตริงใด ๆ ที่มีรูปแบบที่เรียกซ้ำPREFIX[SUFFIXES]
กันรวมกันรวมถึงลำดับที่ว่างเปล่า
สร้างรายการของสตริงตัวอักษรตัวพิมพ์เล็กจากอินพุตโดยการประเมินรายการสตริงซ้ำในแต่ละส่วนต่อท้ายและผนวกเข้ากับคำนำหน้า ส่งออกไปยัง stdout สตริงในรายการนี้ในลำดับใด ๆ หนึ่งรายการต่อบรรทัด (รวมถึงบรรทัดใหม่ต่อท้ายที่เป็นตัวเลือก)
ตัวอย่าง
หากอินพุตเป็น
cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]
แล้วคำนำหน้าเป็น
cat
และและคำต่อท้ายที่มีs[up[][]]
,[]
, และch[e[r[]s[]]]
a[maran[]comb[]pult[[]ing[]]]
แต่ละคำต่อท้ายมีคำนำหน้าและคำต่อท้ายของตัวเองในทางกลับกันผลลัพธ์จะเป็น 9 คำเหล่านี้ในลำดับใด ๆ
catsup cats cat catcher catches catamaran catacomb catapult catapulting
เพราะอินพุตเข้ารหัสต้นไม้นี้
และคำศัพท์เอาต์พุตทั้ง 9 คำนั้นสามารถสร้างขึ้นได้โดยการข้ามต้นไม้จากรากหนึ่งไปยังอีกใบ
หมายเหตุ
โปรดจำไว้ว่าคำนำหน้าอาจเป็นสตริงว่างดังนั้นจึงเป็นเช่นนั้น
[donut[][]cruller[]]
เป็นอินพุตที่ถูกต้องซึ่งเอาต์พุตจะเป็น (ในลำดับใด ๆ )
donut cruller
โดยที่บรรทัดว่างสำหรับสตริงว่างที่ส่วนต่อท้ายที่สองตรงกัน
ลำดับคำต่อท้ายอาจเป็นค่าว่างได้ดังนั้นกรณีอินพุตเล็กน้อย
[]
มีบรรทัดว่างหนึ่งบรรทัดเป็นเอาต์พุต:
- คุณอาจสมมติว่าอินพุตจะสร้างคำเอาต์พุตที่ไม่ซ้ำกันเท่านั้น
- เช่น
hat[s[]ter[]s[]]
จะใส่ไม่ถูกต้องเพราะhats
ถูกเข้ารหัสสองครั้ง - ในทำนองเดียวกัน
[[][]]
ไม่ถูกต้องเนื่องจากสตริงที่ว่างเปล่าถูกเข้ารหัสสองครั้ง
- เช่น
- คุณอาจไม่คิดว่าอินพุตนั้นสั้นหรือบีบอัดมากที่สุด
- เช่น
'e'
โหนดในตัวอย่างหลักข้างต้นสามารถรวมกับ'ch'
โหนดได้ แต่นั่นไม่ได้หมายความว่าอินพุตไม่ถูกต้อง - ในทำนองเดียวกัน
[[[[[]]]]]
ถูกต้องแม้จะมีการเข้ารหัสสตริงที่ว่างเปล่าในวิธีที่ดีที่สุดย่อย
- เช่น
- แทนที่จะเป็นโปรแกรมคุณสามารถเขียนฟังก์ชั่นที่รับสตริงป้อนเข้าเป็นอาร์กิวเมนต์และพิมพ์ผลลัพธ์ตามปกติหรือส่งกลับเป็นสตริงหรือรายการ
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ