ワードチェンジャーは、1文字の編集を介して1つの単語を別の単語に変換しようとしているゲームで、各ステップは独自の単語です。このチャレンジでは、編集は置換、挿入、または削除である場合があります。たとえば、WINNER→LOSERは、次のルートで実行できます(他にも可能性があります)。
WINNER
DINNER
DINER
DINE
LINE
LONE
LOSE
LOSER
別の言い方をすれば、毎回1のレーベンシュタイン距離で他の単語だけを経由して、ある単語から別の単語に到達できる必要があります。
コーディング
単語リストと2つの単語が与えられ、ルートが存在する場合は1つの単語から別の単語への有効なルートを、ルートが存在しない場合は明確な定数値または一貫した動作を出力する必要があります。
- 入力単語は両方とも単語リストにあると仮定できます
- 単語リストは、便利なフラット形式で取り込むことができます。
- リスト、セット、試行、スペースで区切られた文字列、および行で区切られたファイルはすべて有効ですが(たとえば)、事前に計算されたレーベンシュタインの隣接関係のグラフは無効です。
- 出力ルートには両方の入力語が含まれている必要がありますが、開始と終了はどちらでもかまいません。
- ルートが見つからない場合、特定の定数、偽の値、空のリストを出力したり、例外をスローしたり、ゼロ以外のコードで終了したり、有限時間で発生するその他の動作を実行したりできます。
- ルートは最適である必要はなく、どのルートを取るべきかという要件はありません。
- 計算の複雑さは重要ではありませんが、プログラムは有限時間で終了することが保証されている必要があります。(たとえそれが宇宙の熱死を超えて走るとしても)
- すべての単語が同じケースの文字で完全に構成されていると仮定することができます
テストケースの例
- CAT→DOG; [CAT、DOG、COG、COT、FROG、GROG、BOG]
- CAT、COT、COG、DOG
- バス→シャワー; [BATH、SHOWER、HATH、HAT、BAT、SAT、SAW、SOW、SHOW、HOW]
- ルートが見つかりません
- BREAK→FIX; [BREAK、FIX、BEAK、BREAD、READ、BEAD、RED、BED、BAD、BID、FAD、FAX]
- ブレーク、パン、ビード、悪い、FAD、FAX、FIX
- 構築→破壊; [ビルド、デストロイ、ビルド、ギルト、ギルド、ギルド、ギル、ビル、ディル、フィル、破壊、構造、構築]
- ルートが見つかりません
- カード→ボード; [カード、ボード、ボード]
- カード、ボード、ボード
- デーモン→エンジェル; [悪魔、エンジェル]
- ルートが見つかりません
- 最後→過去; [最後、過去、爆発、キャスト、黒、ゴースト、ポスト、ブースト]
- 最後、過去
- 挿入→削除; この単語リスト
- INSERT、INVERT、INVENT、INBENT、UNBENT、UNBEND、UNBIND、UNKIND、UNKING、INKING、IRKING、DIRKING、DARKING、DARRING、ARLING、AILING、SIRING、SERING、SERINE、NERINE、NERITE、CERITE、CERATE、DERATE、DELATE、削除