Mam problem z moją metodą rozwiązywania sudoku. Program działa w ten sposób; tablica jest pusta po uruchomieniu, użytkownicy dodają kilka liczb do tablicy, a następnie, naciskając przycisk Rozwiąż, program próbuje go rozwiązać. Wszystko działa dobrze, jeśli dodaję tę samą liczbę w tym samym wierszu. Więc jeśli użytkownik dodaje 1,1,0,0 ... 0. W układance nie może go rozwiązać, ponieważ jego dwie 1 obok siebie i będą po prostu trwać wiecznie, próbując znaleźć zasolenie, mimo że jest nierozwiązywalne puzzle. Jeśli jednak wszystkie były zerowe (puste), to rozwiązałoby to od razu, tak samo jak gdybym wstawił 1 i 2 w lewym górnym rogu. Gdybym tylko umieścić kilka liczb losowych w wykryje go jako nierozwiązywalny (lub będzie go rozwiązać, jeśli jest to ważne puzzle)Metoda rozwiązywania sudoku
myślę wokół linii mówiąc, kiedy theNumber == (row, col) equals thenNumber == (row+1, col)
, powinien return false
bo to zduplikowany numer.
To jest kod, który próbowałem dodać w metodzie rozwiązywania, oczywiście bez powodzenia.
if ((puzzle.getNum(row, col) == a) == (puzzle.getNum(row + 1, col) == a)) {
return false;
}
pomoc jest mile widziana
Czy próbowałeś dodać jakiś rodzaj sprawdzania poprawności przed próbą "rozwiązania"? Jeśli wiesz od razu, że zagadka jest nierozwiązywalna (dwa 1 w rzędzie), to nie chcesz nieskończonej pętli próbującej rozwiązać. – Walls
@Walls Tak Próbowałem wykonać jakąś metodę sprawdzania poprawności, ale nie mogłem jej uruchomić. To jest moja nowa próba "zatwierdzenia". I właśnie tego potrzebuję pomocy. – Rob
zmiana nazw zmiennych z a, i, j sprawiłaby, że byłby on bardziej czytelny. Lub niektóre komentarze byłyby bardzo mile widziane. Próbuję mieć znaczące nazwy zmiennych, co znacznie ułatwia rozwiązywanie problemów. –