สำหรับความท้าทายนี้คุณต้องใช้Abbrevโมดูลของรูบี้ในโค้ดให้น้อยที่สุด
ท้าทาย
การป้อนข้อมูลจะเป็นสิ่งที่ภาษาของคุณมีเป็นอาร์เรย์ (อาร์เรย์รายการลำดับ ฯลฯ ) ของสตริง คุณอาจเขียนฟังก์ชันหรือคุณอาจยอมรับคำที่คั่นด้วยเครื่องหมายจุลภาคใน STDIN
จากนั้นคุณต้องคำนวณชุดคำนำหน้าที่ไม่คลุมเครือสำหรับสตริงเหล่านั้น ซึ่งหมายความว่าคุณต้องส่งคืนแฮช (หรือแผนที่วัตถุ ฯลฯ ) ของตัวย่อเป็นสตริงดั้งเดิม
"คำนำหน้า" เป็นสตริงย่อยของสตริงต้นฉบับเริ่มต้นที่จุดเริ่มต้นของสตริง ตัวอย่างเช่น "pref" เป็นคำนำหน้าของคำว่า "prefix"
โปร่งใสคำนำหน้าเป็นสิ่งหนึ่งที่สามารถหมายถึงหนึ่งคำ ตัวอย่างเช่นถ้าใส่ของคุณเป็น
car,catแล้วcaไม่ได้เป็นคำนำหน้าชัดเจนเพราะมันอาจหมายถึงทั้ง "รถ" หรือ "แมว".ข้อยกเว้นของกฎนี้คือคำนั้นเป็นคำนำหน้าของตัวเองเสมอ ตัวอย่างเช่นถ้าคุณมีการป้อนข้อมูลเช่น
car,carpet,car:carจะต้องอยู่ในการส่งออกของคุณ
จากนั้นคุณสามารถส่งคืนแฮช / แผนที่ / วัตถุ / ฯลฯ จากการทำงานของคุณ (หรือเทียบเท่าทำในภาษาของคุณ) หรือพิมพ์ออกมาเพื่อ STDOUT ในคู่ในรูปแบบของ
key:valuef:foo,fo:foo,...(คู่ของคีย์ - ค่าอาจคั่นด้วยช่องว่างหากรหัสของคุณสั้นลง)
กรณีทดสอบ
Input code,golf,going
Output c:code,co:code,cod:code,code:code,gol:golf,golf:golf,goi:going,goin:going,going:going
Input pie
Output p:pie,pi:pie,pie:pie
Input pie,pier,pierre
Output pie:pie,pier:pier,pierr:pierre,pierre:pierre
Input a,dog
Output a:a,d:dog,do:dog,dog:dog
กฎระเบียบ
อินพุตจะไม่มีองค์ประกอบที่ซ้ำกัน
ผลลัพธ์ของคุณอาจอยู่ในลำดับใด ๆ คุณไม่จำเป็นต้องจัดเรียง
คุณไม่สามารถใช้
Abbrevโมดูล / ฟังก์ชั่น / สิ่งในตัวเช่นรูดี้ได้นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ!
key:value\nkey:value\nkey:value...