私はErlangが初めてで、数独ソルバーを作ろうとしています。これまでのところ、このように 81 個の整数 (9x9) のリストで構成される入力を取得できます。
sudoku() -> [6,7,1,8,2,3,4,9,5,5,4,9,1,7,6,3,2,8,3,2,8,5,4,9,1,6,7,1,3,2,6,5,7,8,4,9,9,8,6,4,1,2,5,7,3,4,5,7,3,9,8,6,1,2,8,9,3,2,6,4,7,5,1,7,1,4,9,3,5,2,8,6,2,6,5,7,8,1,9,3,4].
stemm によるリスト分割アルゴリズムに基づいて行に分割したこと:
split_rows(sudoku()).
どちらが返されますか:
[5,4,9,1,7,6,3,2,8],
[3,2,8,5,4,9,1,6,7],
[1,3,2,6,5,7,8,4,9],
[9,8,6,4,1,2,5,7,3],
[4,5,7,3,9,8,6,1,2],
[8,9,3,2,6,4,7,5,1],
[7,1,4,9,3,5,2,8,6],
[2,6,5,7,8,1,9,3,4]]
列を取得するには、この行列をmpm のエレガントなソリューションで転置するだけです。
次のステップは、9 つの正方形のボックスのリストを収集することです。次に、それらのリストに重複する要素があるかどうかを確認して、解決策が有効かどうかを確認できます。
残念ながら、正方形を取得する方法が明確にわかりません。たとえば、
[[1],[2],[3],
[4],[5],[6],
[7],[8],[9]]
ここで、各正方形はブロック内の 9 つの数字を表します。したがって、この場合の正方形は次のようになります。
[5,4,9,
3,2,8,
1,2,2]
これを行う方法を知っている人はいますか?