41 lines
1.7 KiB
Java
41 lines
1.7 KiB
Java
|
/**
|
||
|
* Classe pour résoudre un Sudoku.
|
||
|
* @author Moncef STITI
|
||
|
* @author Marco ORFAO
|
||
|
* @version 1.0
|
||
|
*/
|
||
|
public class SudokuSolver {
|
||
|
|
||
|
/**
|
||
|
* Méthode pour résoudre un Sudoku en utilisant la récursivité.
|
||
|
* @param grille La grille de Sudoku à résoudre
|
||
|
* @return true si le Sudoku est résolu avec succès, false sinon
|
||
|
*/
|
||
|
public boolean resoudreSudoku(Grille grille) {
|
||
|
// Parcours de chaque case de la grille
|
||
|
for (int row = 0; row < 9; row++) {
|
||
|
for (int col = 0; col < 9; col++) {
|
||
|
// Vérification si la case est vide
|
||
|
if (grille.case_vide(row, col)) {
|
||
|
// Essayer chaque chiffre de 1 à 9
|
||
|
for (int num = 1; num <= 9; num++) {
|
||
|
// Vérifier si le chiffre est valide dans cette case
|
||
|
if (grille.est_valide(row, col, num)) {
|
||
|
// Remplir la case avec le chiffre
|
||
|
grille.remplir_case(row, col, num);
|
||
|
// Appel récursif pour résoudre le reste du Sudoku
|
||
|
if (resoudreSudoku(grille)) {
|
||
|
return true; // Si le Sudoku est résolu, retourner true
|
||
|
}
|
||
|
// Si le Sudoku n'est pas résolu avec ce chiffre, vider la case et essayer un autre chiffre
|
||
|
grille.vider_case(row, col);
|
||
|
}
|
||
|
}
|
||
|
return false; // Si aucun chiffre ne convient, retourner false
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true; // Si toutes les cases sont remplies, le Sudoku est résolu
|
||
|
}
|
||
|
}
|