7

数独の解き方に問題があります。プログラムは次のように動作します。ボードは開始時に空で、ユーザーはいくつかの数字をボードに追加し、[解決] ボタンを押すと、プログラムはそれを解決しようとします。同じ行に同じ数字を入れた場合以外は、すべて正常に動作します。したがって、ユーザーが 1,1,0,0 ... 0 を追加すると、パズルでは 2 つの 1 が隣り合っているため解決できず、解決できないにもかかわらず、スローションを見つけようとして永遠に続きます。パズル。ただし、それらがすべて 0 (空) の場合は、Id が左上隅に 1 と 2 を配置した場合と同じように、すぐに解決されます。いくつかの乱数を入れると、それが解けないものとして検出されます (または、有効なパズルの場合は解けます)。

と言う行を考えていますがtheNumber == (row, col) equals thenNumber == (row+1, col)、それはreturn false重複した数字だからです。

これは私が solve メソッドに追加しようとしたコードですが、明らかに成功しませんでした。

if ((puzzle.getNum(row, col) == a) == (puzzle.getNum(row + 1, col) == a)) {
   return false;
}

助けていただければ幸いです

4

1 に答える 1