前書き
人気のある単語パズルは、1つの文字だけを置き換え、常に有効な単語を生成する一連のステップを介して、ある単語を別の単語に変換することです。たとえば、BAGは5つのステップのパスを介してDOGに変換できます。
BAG-> BAT-> CAT-> COT-> COG-> DOG
この場合、短いパスも存在します。例えば:
BAG-> BOG-> DOG
頂点が単語でラベル付けされたグラフを描いた場合、単語のペア間のエッジが1文字だけ異なる場合、「BAG」から「DOG」への最短パスは2つのエッジで構成されます。
チャレンジ
パスに沿ったステップとして現れる可能性のあるすべての単語を表す、すべて同じ長さの単語の「辞書」を入力として受け取るプログラムを作成します。少なくとも1つの「最長最短パス」、つまり、次の2つの単語間のパスを出力する必要があります。
これら2つの単語間の他のどのパスよりも長くありません。
少なくとも、リスト内の他の単語のペア間の最短パスと同じ長さ。
上記のグラフのコンテキストでは、このようなパスの長さはグラフの直径です。
入力語のいずれも他の語に変換できない縮退の場合、長さゼロの少なくとも1つのパス、つまり1つの語を出力します。
例
入力["bag"、 "bat"、 "cat"、 "cot"、 "dot"、 "dog"]は、6つの単語すべてをその順序(または逆順)で通過するパスを生成する必要があります。この辞書内の「バッグ」から「犬」は、達成可能な最長の5つのステップです。
入力["bag"、 "bat"、 "bot"、 "cat"、 "cot"、 "dot"、 "dog"]は、パス "bag、bat、bot、dot、dog"および/またはその逆転。
入力["code"、 "golf"、 "male"、 "buzz"、 "mole"、 "role"、 "mold"、 "cold"、 "gold"、 "mode"]は、 "code"そして「ゴルフ」。
入力["one"、 "two"、 "six"、 "ten"]はエッジのないグラフに対応するため、1つ以上の単一ワード(長さゼロ)のパスを出力します。
入力に長さが等しくない2つのワードが含まれる場合、出力は未定義です。
ルール
- 標準コードのゴルフ規則が適用されます
- 複数の「最短」パスがあります。少なくとも1つ出力する必要がありますが、必要な数だけ自由に出力できます。
- 入力辞書をプログラムに渡す方法は自由に決めることができます。
- バイト単位の最短コードが優先されます。
[]または[[]])。