Javadoc Sudoku

This commit is contained in:
2024-05-05 00:41:39 +02:00
parent aecb28232e
commit 508b423def
5 changed files with 133 additions and 15 deletions

View File

@@ -1,21 +1,37 @@
/**
* La classe SudokuSolver fournit des méthodes pour résoudre une grille de Sudoku.
* Elle utilise une approche de récursion avec backtracking pour trouver la solution.
*/
public class SudokuSolver {
/**
* Résout la grille de Sudoku donnée.
* @param grid La grille de Sudoku à résoudre.
* @return True si la grille a été résolue avec succès, False si elle est insoluble.
*/
public boolean solve(Grid grid) {
long startTime = System.currentTimeMillis(); // Temps de début de la résolution
boolean isSolved = solveRecursive(grid);
long endTime = System.currentTimeMillis(); // Temps de fin de la résolution
long duration = endTime - startTime; // Calcul de la durée de résolution
if (isSolved) {
System.out.println("La grille a été résolue en " + duration + " millisecondes.");
} else {
System.out.println("La grille est insoluble.");
}
return isSolved;
}
/**
* Méthode récursive pour résoudre la grille de Sudoku.
* Utilise une approche de backtracking pour explorer toutes les possibilités.
* @param grid La grille de Sudoku à résoudre.
* @return True si la grille a été résolue avec succès, False si elle est insoluble.
*/
private boolean solveRecursive(Grid grid) {
for (int row = 0; row < 9; row++) {
for (int col = 0; col < 9; col++) {
@@ -39,6 +55,14 @@ public class SudokuSolver {
return true;
}
/**
* Vérifie si le placement d'un nombre dans une cellule est sûr.
* @param grid La grille de Sudoku.
* @param row L'indice de ligne de la cellule.
* @param col L'indice de colonne de la cellule.
* @param num Le nombre à vérifier.
* @return True si le placement est sûr, False sinon.
*/
public boolean isSafe(Grid grid, int row, int col, int num) {
// Vérifier la ligne
for (int i = 0; i < 9; i++) {
@@ -46,14 +70,14 @@ public class SudokuSolver {
return false;
}
}
// Vérifier la colonne
for (int i = 0; i < 9; i++) {
if (grid.getCell(i, col).getValue() == num) {
return false;
}
}
// Vérifier la région 3x3
int startRow = row - row % 3;
int startCol = col - col % 3;
@@ -64,7 +88,7 @@ public class SudokuSolver {
}
}
}
return true;
}
}
}