ใน Elixir รายการ (ที่เชื่อมโยง) อยู่ในรูปแบบ[head | tail]
ที่ส่วนหัวสามารถเป็นอะไรก็ได้และtailเป็นรายการของส่วนที่เหลือของรายการและ[]
- รายการที่ว่างเปล่า - เป็นข้อยกเว้นเพียงอย่างเดียว
รายการสามารถเขียนได้เช่นเดียวกับ[1, 2, 3]
ที่เทียบเท่า[1 | [2 | [3 | []]]]
งานของคุณคือการแปลงรายการตามที่อธิบายไว้ ข้อมูลที่ป้อนจะเป็นรายการที่ถูกต้อง (ใน Elixir) ที่มีเฉพาะตัวเลขที่ตรงกับ regex\[(\d+(, ?\d+)*)?\]
regex คุณสามารถรับอินพุตด้วย (หนึ่งช่องว่างหลังจากแต่ละเครื่องหมายจุลภาค) หรือไม่มีช่องว่าง เอาต์พุตอาจมี (หนึ่งช่องว่างก่อนและหลังแต่ละ|
ช่อง) หรือไม่มีช่องว่าง
สำหรับอินพุตที่มีเลขศูนย์นำหน้าคุณสามารถส่งออกโดยไม่มีเลขศูนย์หรือด้วย
อินพุตต้องถูกใช้เป็นสตริง (หากเขียนฟังก์ชัน) เช่นเดียวกับเอาต์พุต
ตัวอย่าง
[] -> []
[5] -> [5 | []]
[1, 7] -> [1 | [7 | []]]
[4, 4, 4] -> [4 | [4 | [4 | []]]]
[10, 333] -> [10 | [333 | []]]
เกี่ยวข้องไม่ซ้ำกันเนื่องจากส่วนนี้เกี่ยวข้องกับการเพิ่มโหมด]
ไปยังจุดสิ้นสุด นอกจากนี้คำตอบของ Haskell ที่นี่นั้นค่อนข้างแตกต่างจากคำตอบในนั้น