refactor: update ContrainteBloc to handle rectangle bloc, update tests, and improve code comments
This commit is contained in:
@@ -16,13 +16,17 @@ public class Sudoku {
|
||||
|
||||
/**
|
||||
* Constructeur permettant d'initialiser un sudoku à partir de la taille de sa grille
|
||||
* @param taille
|
||||
* @param taille : taille de la grille
|
||||
*/
|
||||
public Sudoku(int taille) {
|
||||
this.grille = new Grille(taille, this);
|
||||
this.contraintes = new ArrayList<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de modifier le nom du sudoku, utilisé pour l'affichage.
|
||||
* @param nom : nom du sudoku
|
||||
*/
|
||||
public void setNom(String nom) {
|
||||
this.nom = nom;
|
||||
}
|
||||
@@ -31,10 +35,19 @@ public class Sudoku {
|
||||
return this.nom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'ajouter une contrainte à un sudoku
|
||||
* @param contrainte : contrainte à ajouter
|
||||
*/
|
||||
public void ajouterContrainte(Contrainte contrainte) {
|
||||
contraintes.add(contrainte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de vérifier si une case est valide en fonction des contraintes la concernant
|
||||
* @param c : case à vérifier
|
||||
* @return boolean : true si la case est valide, false sinon
|
||||
*/
|
||||
public boolean estValide(Case c) {
|
||||
for (Contrainte contrainte : contraintes) {
|
||||
if (!contrainte.estRespectee(grille, c)) {
|
||||
@@ -44,6 +57,10 @@ public class Sudoku {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de vérifier si un sudoku est valide, c'est-à-dire si toutes les cases sont valides.
|
||||
* @return boolean : true si le sudoku est valide, false sinon
|
||||
*/
|
||||
public boolean estValide() {
|
||||
for (int i = 0; i < this.getGrille().getTaille(); i++) {
|
||||
for (int j = 0; j < this.getGrille().getTaille(); j++) {
|
||||
@@ -56,13 +73,14 @@ public class Sudoku {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public boolean verifierToutesContraintes() {
|
||||
return grille.verifierToutesContraintes(contraintes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de retourner la grille complète
|
||||
* @return
|
||||
* @return Grille
|
||||
*/
|
||||
public Grille getGrille() {
|
||||
return grille;
|
||||
@@ -116,7 +134,7 @@ public class Sudoku {
|
||||
Multidoku multidoku = creerMultidoku(choix);
|
||||
if (multidoku != null) {
|
||||
System.out.println("\nMultidoku initial :");
|
||||
System.out.println(multidoku.toStringCombined());
|
||||
System.out.println(multidoku);
|
||||
|
||||
System.out.println("\nDébut de la résolution dans 3 secondes...");
|
||||
try {
|
||||
@@ -128,7 +146,7 @@ public class Sudoku {
|
||||
|
||||
if (multidoku.resoudreMultidoku(true)) {
|
||||
System.out.println("\nMultidoku résolu :");
|
||||
System.out.println(multidoku.toStringCombined());
|
||||
System.out.println(multidoku);
|
||||
} else {
|
||||
System.out.println("Ce Multidoku n'a pas de solution.");
|
||||
}
|
||||
@@ -155,7 +173,7 @@ public class Sudoku {
|
||||
s.getGrille().setSymbolesPossibles(symboles);
|
||||
s.ajouterContrainte(new ContrainteLigne());
|
||||
s.ajouterContrainte(new ContrainteColonne());
|
||||
s.ajouterContrainte(new ContrainteBloc());
|
||||
s.ajouterContrainte(new ContrainteBloc(s.getGrille().getTaille(), s.getGrille().getTaille()));
|
||||
s.getGrille().creerBlocCarre();
|
||||
}
|
||||
|
||||
@@ -287,7 +305,7 @@ public class Sudoku {
|
||||
for (int choixContrainte : contraintesChoisies) {
|
||||
switch (choixContrainte) {
|
||||
case 1:
|
||||
sudoku.ajouterContrainte(new ContrainteBloc());
|
||||
sudoku.ajouterContrainte(new ContrainteBloc(sudoku.getGrille().getTaille(), sudoku.getGrille().getTaille()));
|
||||
System.out.println("Contrainte Bloc ajoutée.");
|
||||
break;
|
||||
case 2:
|
||||
|
||||
Reference in New Issue
Block a user