独自の通常の 9x9 数独パズルを作成しようとしています。
問題を2つの部分に分けました -
- 完全に埋められた数独を作成し、
- グリッドから不要な数字を削除する
今、私は最初の部分で立ち往生しています。
これは私が簡単に使用するアルゴリズムです:
a) まず、数字 (たとえば 1) を選択し、ランダムなセル位置を生成し、次の場合はそこに配置します。
- セルがまだ占有されていない
- 行に番号がまだない場合、および
- 列に番号がまだない場合、および
- 3x3 ボックスに番号がまだない場合
b) 次に、行、列、またはボックスの 1 つの場所だけが空である状況を確認し、それを埋めます。
c)ボックスには存在しないが、同じ行と同じ列のボックスに存在する数字がある場合(ここでは3x3ボックスについて話している)、数字の場所が固定されていることを確認し、それを埋めます.
d) すべての数字がグリッドに 9 回表示されるまで、上記の手順を繰り返します。
私が直面している問題は、多くの場合、次のような中間的な状況になっていることです。
0 1 0 | 0 0 3 | 0[4/2]0
0 [2] 0 | 0 [4] 1 | 3 0 0
3 0 [4]|[2] 0 0 | 0 0 1
---------+---------+---------
2 0 3 | 0 5 4 | 0 1 0
0 0 1 | 3 0 2 |[4] 0 0
0 4 0 | 0 1 0 |[2] 3 0
---------+---------+---------
1 0 2 | 0 3 0 | 0 0 [4]
4 3 0 | 1 0 0 | 0 0 [2]
5 0 0 | 4 2 0 | 1 0 3
[4/2]と書かれているところが見えますか?[] とマークされたボックスのため、これは 2 と 4 の場所です。
この状況に陥らないようにするにはどうすればよいですか (この状況はデッドロックであるため、これ以上先に進むことができません)