เมื่อผมเป็นเด็กผมใช้ในการเล่นเกมคำศัพท์ที่เรียกว่าห่วงโซ่ของ Word มันง่ายมาก ผู้เล่นคนแรกเลือกคำ; ผู้เล่นคนถัดไปพูดคำอื่นที่เริ่มต้นด้วยตัวอักษรเดียวกันกับคำก่อนหน้านี้ที่ลงท้ายด้วย สิ่งนี้ดำเนินต่อไปเรื่อย ๆ จนกระทั่งมีใครยอมแพ้! เคล็ดลับคือคุณไม่สามารถใช้คำเดียวกันสองครั้ง (เว้นแต่ทุกคนลืมคำนั้นแม้ใช้!) เรามักจะเล่นกับหัวข้อที่กำหนดเพื่อให้ยากขึ้น แต่ตอนนี้ฉันต้องการให้คุณสร้างโปรแกรมเพื่อทำสิ่งนี้ให้ฉัน
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบเพื่อค้นหากลุ่มคำที่ยาวที่สุดที่เป็นไปได้โดยใช้ชุดคำที่กำหนดและเริ่มคำ
นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ!
อินพุต
มีสองอินพุต: รายการและคำเริ่มต้น คำเริ่มต้นจะไม่อยู่ในรายการ อินพุตเป็น ASCII ตัวพิมพ์เล็กทั้งหมดและรายการจะไม่มีคำที่ซ้ำกัน
เอาท์พุต
ลำดับของคำทั้งหมดจากรายการเช่นนั้น:
คำเริ่มต้นเป็นคำแรกในลำดับ
คำที่ตามมาแต่ละคำเริ่มต้นด้วยตัวอักษรเดียวกันกับตัวอักษรตัวสุดท้ายของคำก่อนหน้า
ความยาวของลำดับเป็นไปได้ที่ยาวที่สุด
หากมีลำดับที่ยาวที่สุดหลายชุดให้ส่งออกทั้งหมด
ลำดับไม่จำเป็นต้องมีทุกคำในรายการ บางครั้งก็เป็นไปไม่ได้ (ดูตัวอย่าง) อีกครั้งไม่สามารถใช้คำสองครั้ง!
Testcases
In: [hello, turtle, eat, cat, people] artistic
Out: [artistic, cat, turtle, eat]
In: [lemonade, meatball, egg, grape] ham
Out: [ham, meatball, lemonade, egg, grape]
In: [cat, cute, ewok] attic
Out: [attic, cute, ewok]
In:[cat, cute, ewok, kilo, to, otter] attic
Out: [attic, cute, ewok, kilo, otter]
In:[cat, today, yoda, attic] ferret
Out: [ferret, today, yoda, attic, cat]
In: [cancel, loitering, gnocchi, improv, vivic, child, despair, rat, tragic, chimney, rex, xylophone] attic
Out: [[attic, child, despair, rat, tragic, cancel, loitering, gnocchi, improv, vivic, chimney], [attic, cancel, loitering, gnocchi, improv, vivic, child, despair, ra', tragic, chimney]]
In: [cat, today, yoda, artistic, cute, ewok, kilo, to, otter] attic
Out: [attic, cat, today, yoda, artistic, cute, ewok, kilo, otter]