私が若かったとき、私はWord chainと呼ばれる単語ゲームをプレイするために使用します。とても簡単でした。最初のプレイヤーが単語を選択します。次のプレイヤーは、前の単語が終わったのと同じ文字で始まる別の単語を言います。これは誰かがgivesめるまで永遠に続きます!トリックは、同じ単語を2回使用することはできないということです(誰もがその単語を使用することさえ忘れていない限り!)。通常、私たちは特定のトピックをより難しくするために遊びます。しかし、今、私はあなたに私のためにこれをするプログラムを作って欲しいです。
チャレンジ
完全なプログラムまたは関数を作成して、指定された一連の単語と開始単語を使用して、可能な限り長い単語チェーンをすべて検索します。
これはcode-golfなので、最短のコードが優先されます!
入力
入力には、リストと開始語の2つがあります。開始語はリストに含まれません。入力はすべて小文字のASCIIであり、リストには重複する単語は含まれません。
出力
次のようなリストの単語のすべてのシーケンス:
開始ワードは、シーケンスの最初のワードです。
後続の各単語は、前の単語の最後の文字と同じ文字で始まります。
シーケンスの長さは可能な限り最長です。
最長のシーケンスが複数ある場合は、それらすべてを出力します。
シーケンスには、必ずしもすべてのリストワードを含める必要はありません。それが不可能な場合もあります(テストケースを参照)。繰り返しますが、単語を2回使用することはできません!
テストケース
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]