はい、これは新しいものではなく、すでに多くの問題が出回っていることは承知していますが (独自のタグさえあります)、Java で Sudoku Solver を作成したいと考えています。効率的。
おそらく、プログラムでこれを行う最も簡単な方法は、大量の for ループを各列と行で解析し、各セルの可能な値を収集してから、1 つの可能性だけでセルを除外することです (数値が 1 つしか含まれていないか、またはパズルが解けるまで、この数字を含む行/列の唯一のセルです)。もちろん、このアクションについて完全に考えると、すべてのプログラマーの心に危険信号が表示されます。
私が探しているのは、可能な限り最も効率的な方法でこの吸盤を解決するための方法論です (あまり多くのコードを含めないようにしてください - 私はその部分を自分で理解したいと思っています)。
可能であれば、数学的アルゴリズムは避けたいと思っています。それらは簡単すぎて、100% 私の仕事ではありません。
誰かが Sudoku パズルを解くための段階的で効率的な思考プロセスを (人間またはコンピュータによって) 提供できれば、私はとても幸せです :)。私は漠然としたものを探しています (それは挑戦です) が、私を始めるのに十分な情報を提供します (完全に迷うことはありません)。
どうもありがとう、
ジャスティアン・マイヤー
編集:
私のコードを見て、私は次のことを考えました: これらの解法状態 (つまり、数独グリッド) を格納する可能性にはどのようなものがあるでしょうか。2D 配列と 3D 配列が思い浮かびます。どれが一番いいでしょうか?2D は表面から管理する方が簡単かもしれませんが、3D 配列は「ボックス」/「ケージ」番号も提供します。
編集:
どうでも。3D 配列を使用します。