refactor: update ContrainteBloc to handle rectangle bloc, update tests, and improve code comments

This commit is contained in:
2025-02-09 11:47:02 +01:00
parent ea868017ee
commit 86fe45c358
27 changed files with 356 additions and 251 deletions

View File

@@ -7,12 +7,10 @@ import sudoku.core.Console;
public class ResolveurBacktraceSimple implements Resolveur {
/**
* Méthode permettant de résoudre un sudoku à partir des paramètres suivant :</br>
* - S : Sudoku</br>
* - afficherEtape : 0 ou 1
* @param s
* @param afficherEtape
* @return
* Méthode permettant de résoudre un sudoku en utilisant la méthode de backtracking
* @param s : sudoku à résoudre
* @param afficherEtape : afficher les étapes de la résolution
* @return true si le sudoku est résolvable, false sinon
*/
@Override
public boolean resoudre(Sudoku s, boolean afficherEtape) {
@@ -24,6 +22,13 @@ public class ResolveurBacktraceSimple implements Resolveur {
return solved;
}
/**
* Méthode récursive permettant de résoudre un sudoku, utilisant la méthode de backtracking.
* @param s : sudoku à résoudre
* @param afficherEtape : afficher les étapes de la résolution
* @param etat : état de la résolution
* @return true si le sudoku est résolvable, false sinon
*/
private boolean resoudre(Sudoku s, boolean afficherEtape, EtatResolution etat) {
Grille g = s.getGrille();
List<Symbole> symboles = g.getSymbolesPossibles();
@@ -55,24 +60,26 @@ public class ResolveurBacktraceSimple implements Resolveur {
/**
* Méthode permettant d'afficher le sudoku à chaque étape de sa résolution
* @param s
* @param compteur
* @param compteurGeneral
* @param s : sudoku
* @param compteur : compteur de l'étape en cours
* @param compteurGeneral : compteur général de la résolution du sudoku (nombre total de tentatives)
*/
private void afficherEtapeResolution(Sudoku s, int compteur, int compteurGeneral) {
System.out.println("Sudoku, Etape " + compteur + " (Tentative " + compteurGeneral + ")");
System.out.println(s.getGrille().toString());
}
/**
* Classe interne permettant de stocker l'état de la résolution
*/
private static class EtatResolution {
int compteur;
int compteurGeneral;
/**
* Méthode permettant de fixer l'état de la résolution
* @param compteur
* @param compteurGeneral
* @param compteur : compteur de l'étape en cours
* @param compteurGeneral : compteur général de la résolution du sudoku (nombre total de tentatives)
*/
EtatResolution(int compteur, int compteurGeneral) {
this.compteur = compteur;