深さ優先の「ブルートフォース」を使用してパズルを解く数独パズル ソルバーを Python で作成しようとしています。しかし、何度も再コーディングした後、同じエラーが何度も出てきます。
問題をできるだけ明確に説明するために最善を尽くします。これは深さ優先検索に関連する最初の問題であるため、明らかな何かが欠けている可能性があります。
以下は簡略化されたコードです (詳細が不要な場所では疑似コードと混合されています)。
def solvePuzzle(puzzle):
<while the puzzle is still not solved>:
<make a copy of the puzzle>
<go through each unsolved box>:
<try to find the value of the box>
<if the current solution is impossible, return to the parent branch>
<if the copy of the puzzle is exactly the same as the puzzle now, no changes have been made, so its time to start branching into different possibilities>:
<pick a random box to guess the number of>
<go through each possible value and run solvePuzzle() on that puzzle>:
<if a solution is returned, return it>
<else, try the next possible value>
<return the puzzle>
それは私ができる限り削減されています-それでも少し読みにくい/混乱している場合は申し訳ありません.
何らかの理由で、作成されたパズルのコピーごとにプログラムを solvePuzzle() に設定した後でも、すべてのコピーが不可能であることがわかります (不可能とは、推測でエラーが発生したことを意味します)。すべての番号がテストされているため、これは不可能です。
十分に明確でない場合に備えて、完全なコード(約 50 行のコードのみ) を次に示します。
なぜこれがうまくいかないのか誰かが提案できれば、とても感謝しています。
ありがとうございました!