traintracks
JavaScript で書かれた線路パズルのソルバー
サタデー・タイムズ(英国)に「Train Tracks」というパズルがある。
8x8 の正方形のグリッドです。各行と列には数字があり、その行または列に何個のピースが入るかを示します。
トラックの開始と終了を示すA
とB
のマーカーもあります。すでにグリッド上に 1 つ以上の他のピースがある可能性があります。
あなたの仕事は、 A
からB
まで直線または 90 度のコーナー ピースのみを使用してトラックを描画し、グリッドの各行と列に正しい数のピースが存在するようにすることです。
パズルの例を次に示します。
パズルを次のようにエンコードします: <A><B>-<cols>-<rows>-<pieces>
。
上のパズルは54-14134544-54234341-48EW.53NE
です。
A
とB
、グリッドに沿って (左下から) 開始 (上への距離) と終了 (右への距離) までの距離を示す 1 ~ 8 の数字です。この例では、 A
は5
、 B
4
です。
cols
列の制約を示す 1 ~ 8 の 8 つの数字のリストです。数字は左から右に読みます (図のようにパズルの上部に沿って)。
rows
に対して上から下まで同じなので、実際のパズルから理解しやすくなります。
pieces
ドットで区切られた最初のピース (開始と終了をカウントしない) のリストです.
<rol><col><type>
です。type はピースが指す方法です。有効なタイプは、 NS
(縦) EW
(横) NE
L 字、 NW
逆 L、 SE
上 L、 SW
180 度回転 L です。
これは思っているよりもはるかに簡単に入力できます。しかし、これを Web サイトで使用すると、より直感的な UI でパズルを作成し、エンコードを生成できます。
とにかく、エンコードを取得したら、 traintracks
ツールを呼び出すことができます。
$ traintracks 54-14134544-54234341-48EW.53NE
Puzzle: 54-14343245-14134544-48EW.53NE
1 4 1 3 4 5 4 4 1 4 1 3 4 5 4 4
┌─┬─┬─┬─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┬─┬─┬─┐
8 │ │ │ │━│ │ │ │ │ 5 8 │ │┏│━│━│━│┓│ │ │ 5
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
7 │ │ │ │ │ │ │ │ │ 4 7 │ │┃│ │ │ │┗│━│┓│ 4
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
6 │ │ │ │ │ │ │ │ │ 2 6 │ │┃│ │ │ │ │ │┃│ 2
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
A │━│ │ │ │ │ │ │ │ 3 A │━│┛│ │ │ │ │ │┃│ 3
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
4 │ │ │ │ │ │ │ │ │ 4 4 │ │ │ │ │┏│━│━│┛│ 4
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
3 │ │ │ │ │┗│ │ │ │ 3 3 │ │ │ │ │┗│━│┓│ │ 3
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
2 │ │ │ │ │ │ │ │ │ 4 2 │ │ │ │┏│━│━│┛│ │ 4
├─┼─┼─┼─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┼─┼─┼─┤
1 │ │ │ │┃│ │ │ │ │ 1 1 │ │ │ │┃│ │ │ │ │ 1
└─┴─┴─┴─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┴─┴─┴─┘
1 2 3 B 5 6 7 8 1 2 3 B 5 6 7 8
Solved: true - Steps: 323
--animate
を追加すると、アルゴリズムの動作を監視できます。アスキーネマのビデオをご覧ください。
このAR数独ソルバーを見ました。この分野には先行技術がありましたが、これは私が初めて見たものでした。とにかく、私はこの小さなパズルが好きで、a) 同じことができるだろうか、b) 完全に Web ベースにできないだろうかと考えました。
したがって、ロードマップは次のとおりです。