Ho un problema con il mio metodo di risoluzione sudoku. Il programma funziona così; la scheda è vuota quando viene avviata, gli utenti aggiungono un paio di numeri alla lavagna e poi premendo un pulsante Risolvi il programma prova a risolverlo. Tutto funziona bene, inoltre, se metto lo stesso numero nella stessa riga. Quindi se l'utente aggiunge 1,1,0,0 ... 0. Nel puzzle non può risolverlo perché i suoi due 1 sono vicini l'uno all'altro e continueranno a cercare per sempre un sollievo anche se è irrisolvibile. puzzle. Tuttavia, se fossero tutti 0 (vuoti) lo risolverebbero subito, come se l'Id inserisse 1 e 2 nell'angolo in alto a sinistra. Se inserissi solo dei numeri casuali lo rileverò come irrisolvibile (o lo risolverà se si tratta di un enigma valido)Sudoku risolve il metodo
Sto pensando sulle linee di dire, quando theNumber == (row, col) equals thenNumber == (row+1, col)
, dovrebbe essere return false
perché è un numero duplicato.
Questo è il codice che ho provato ad aggiungere nel metodo di risoluzione, ovviamente senza successo.
if ((puzzle.getNum(row, col) == a) == (puzzle.getNum(row + 1, col) == a)) {
return false;
}
aiuto è molto apprezzato
Hai provato ad aggiungere una sorta di convalida prima di tentare di "risolvere"? Se sai subito che il puzzle è irrisolvibile (due 1 di fila), allora non vuoi che il ciclo infinito cerchi di risolvere. – Walls
@Walls Sì, ho provato a eseguire una sorta di metodo di convalida, ma non sono riuscito a farlo funzionare. Questo è il mio nuovo tentativo di "validare". Ed è quello con cui ho bisogno di aiuto. – Rob
cambiando i nomi delle variabili da a, i, j renderebbe questo molto più leggibile. O alcuni commenti sarebbero molto apprezzati. Cerco di avere nomi di variabili significative e semplifica la risoluzione dei problemi. –