Ich habe ein Problem mit meiner Sudoku-Methode zu lösen. Das Programm funktioniert so; das Board ist leer, wenn es gestartet wird, die Benutzer fügen ein paar Zahlen auf dem Board hinzu und dann versucht das Programm durch Drücken einer Solve-Taste das Problem zu lösen. Alles funktioniert gut, außer wenn ich dieselbe Nummer in die gleiche Zeile stecke. Also, wenn der Benutzer 1,1,0,0 ... 0 hinzufügt. In dem Puzzle kann es nicht lösen, weil seine zwei 1 nebeneinander sind und wird immer weiter versuchen, eine Sulotion zu finden, obwohl es ein unlösbar ist Puzzle. Wenn sie jedoch alle 0 (leer) wären, würde sie es sofort lösen, so als ob Id 1 und 2 in die obere linke Ecke setzen würde. Wenn ich nur ein paar Zufallszahl setzen würde darin als unlösbares erkennt (oder wird es lösen, wenn es ein gültiges Puzzle ist)Sudoku lösen Methode
Ich denke, um die Linien zu sagen, wenn theNumber == (row, col) equals thenNumber == (row+1, col)
, soll es return false
, weil es eine ist doppelte Nummer.
Dies ist der Code, den ich in der Solve-Methode hinzugefügt habe, offensichtlich ohne Erfolg.
if ((puzzle.getNum(row, col) == a) == (puzzle.getNum(row + 1, col) == a)) {
return false;
}
Hilfe wird sehr geschätzt
Haben Sie versucht, eine Art von Validierung hinzuzufügen, bevor Sie versuchen, "zu lösen"? Wenn du sofort weißt, dass das Rätsel unlösbar ist (zwei 1er in einer Reihe), dann willst du keine Endlosschleife versuchen zu lösen. – Walls
@Walls Ja, ich habe versucht, eine Art von Validierungsmethode, aber ich konnte es nicht zum Laufen bringen. Dies ist mein neuer Versuch "zu validieren". Und dazu brauche ich Hilfe. – Rob
Ändern von Variablennamen von a, i, j würde dies viel lesbarer machen. Oder einige Kommentare würden sehr geschätzt werden. Ich versuche, aussagekräftige Variablennamen zu haben, und das macht die Fehlersuche viel einfacher. –