feat: resolver backtrace simple

This commit is contained in:
2025-01-30 16:55:26 +01:00
parent 3586ae4c15
commit 12d3e24bf8
21 changed files with 687 additions and 39 deletions

View File

@@ -0,0 +1,55 @@
package sudoku;
import java.util.ArrayList;
import org.junit.jupiter.api.Test;
public class TestBlocRectangle {
@Test
public void blocRectangle() {
System.out.println("TEST BLOC RECTANGLE : ");
System.out.println(new App().getGreeting());
// Create a new Sudoku
Sudoku sudoku = new Sudoku(15);
ArrayList<Symbole> symboles = new ArrayList<>();
for (int i = 1; i <= 15; i++) {
symboles.add(Symbole.of(i));
}
sudoku.getGrille().setSymbolesPossibles(symboles);
sudoku.ajouterContrainte(new ContrainteLigne());
sudoku.ajouterContrainte(new ContrainteColonne());
sudoku.ajouterContrainte(new ContrainteBloc());
sudoku.getGrille().setCase(0, 0, Symbole.of(1));
sudoku.getGrille().setCase(6, 1, Symbole.of(2));
sudoku.getGrille().setCase(2, 2, Symbole.of(3));
sudoku.getGrille().setCase(0, 3, Symbole.of(4));
sudoku.getGrille().setCase(4, 4, Symbole.of(5));
sudoku.getGrille().setCase(0, 5, Symbole.of(6));
sudoku.getGrille().setCase(5, 6, Symbole.of(7));
sudoku.getGrille().setCase(0, 7, Symbole.of(8));
sudoku.getGrille().setCase(4, 8, Symbole.of(9));
sudoku.getGrille().setCase(0, 3, Symbole.of(9));
sudoku.getGrille().setCase(3, 0, Symbole.of(4));
sudoku.getGrille().creerBlocCarre();
System.out.println("Sudoku :");
System.out.println(sudoku.getGrille().toString());
sudoku.getGrille().creerBlocRectangulaire(3, 5);
System.out.println("Blocs :");
sudoku.getGrille().printBlocs();
System.out.println("Symboles possibles :");
sudoku.getGrille().printSymbolesPossibles();
// blocRectangle.resoudre(sudoku, true);
// System.out.println("Sudoku resolu :");
// System.out.println(sudoku.getGrille().toString());
System.out.println("FIN TEST BLOC RECTANGLE");
}
}

View File

@@ -2,8 +2,6 @@ package sudoku;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import java.util.ArrayList;
import java.util.Arrays;
@@ -38,7 +36,6 @@ public class TestLigne {
sudoku.getGrille().setCase(4, 8, Symbole.of(9));
//doublon ligne
sudoku.getGrille().setCase(0, 4, Symbole.of(1));
assertFalse(sudoku.estValide(sudoku.getGrille().getCase(0, 4)));
sudoku.getGrille().creerBlocCarre();

View File

@@ -0,0 +1,70 @@
// package sudoku;
// import java.util.ArrayList;
// import java.util.Arrays;
// import org.junit.jupiter.api.Test;
// public class TestResolveurBacktraceSimpleSudoku16 {
// @Test
// public void testResolution() {
// System.out.println("TEST RESOLVEUR BACKTRACE SIMPLE : ");
// System.out.println(new App().getGreeting());
// // Create a new Sudoku
// Sudoku sudoku = new Sudoku(16);
// sudoku.getGrille().setSymbolesPossibles(new ArrayList<>(Arrays.asList(
// Symbole.of(1),
// Symbole.of(2),
// Symbole.of(3),
// Symbole.of(4),
// Symbole.of(5),
// Symbole.of(6),
// Symbole.of(7),
// Symbole.of(8),
// Symbole.of(9),
// Symbole.of(10),
// Symbole.of(11),
// Symbole.of(12),
// Symbole.of(13),
// Symbole.of(14),
// Symbole.of(15),
// Symbole.of(16)
// )));
// sudoku.ajouterContrainte(new ContrainteLigne());
// sudoku.ajouterContrainte(new ContrainteColonne());
// sudoku.ajouterContrainte(new ContrainteBloc());
// sudoku.getGrille().setCase(0, 0, Symbole.of(1));
// sudoku.getGrille().setCase(6, 1, Symbole.of(2));
// sudoku.getGrille().setCase(2, 2, Symbole.of(3));
// sudoku.getGrille().setCase(0, 3, Symbole.of(4));
// sudoku.getGrille().setCase(4, 4, Symbole.of(5));
// sudoku.getGrille().setCase(0, 5, Symbole.of(6));
// sudoku.getGrille().setCase(5, 6, Symbole.of(7));
// sudoku.getGrille().setCase(0, 7, Symbole.of(8));
// sudoku.getGrille().setCase(4, 8, Symbole.of(9));
// sudoku.getGrille().setCase(0, 9, Symbole.of(10));
// sudoku.getGrille().setCase(6, 10, Symbole.of(11));
// sudoku.getGrille().setCase(2, 11, Symbole.of(12));
// sudoku.getGrille().setCase(0, 12, Symbole.of(13));
// sudoku.getGrille().creerBlocCarre();
// System.out.println("Sudoku :");
// System.out.println(sudoku.getGrille().toString());
// System.out.println("Blocs :");
// sudoku.getGrille().printBlocs();
// System.out.println("Symboles possibles :");
// sudoku.getGrille().printSymbolesPossibles();
// ResolveurBacktraceSimple resolveur = new ResolveurBacktraceSimple(sudoku);
// resolveur.resoudre(sudoku, false);
// System.out.println("Sudoku resolu :");
// System.out.println(sudoku.getGrille().toString());
// System.out.println("FIN TEST RESOLVEUR BACKTRACE SIMPLE");
// }
// }

View File

@@ -0,0 +1,56 @@
// package sudoku;
// import java.util.ArrayList;
// import org.junit.jupiter.api.Test;
// public class TestResolveurBacktraceSimpleSudoku25 {
// @Test
// public void testResolution() {
// System.out.println("TEST RESOLVEUR BACKTRACE SIMPLE : ");
// System.out.println(new App().getGreeting());
// // Create a new Sudoku
// Sudoku sudoku = new Sudoku(25);
// ArrayList<Symbole> symboles = new ArrayList<>();
// for (int i = 1; i <= 25; i++) {
// symboles.add(Symbole.of(i));
// }
// sudoku.getGrille().setSymbolesPossibles(symboles);
// sudoku.ajouterContrainte(new ContrainteLigne());
// sudoku.ajouterContrainte(new ContrainteColonne());
// sudoku.ajouterContrainte(new ContrainteBloc());
// sudoku.getGrille().setCase(0, 0, Symbole.of(1));
// sudoku.getGrille().setCase(6, 1, Symbole.of(2));
// sudoku.getGrille().setCase(2, 2, Symbole.of(3));
// sudoku.getGrille().setCase(0, 3, Symbole.of(4));
// sudoku.getGrille().setCase(4, 4, Symbole.of(5));
// sudoku.getGrille().setCase(0, 5, Symbole.of(6));
// sudoku.getGrille().setCase(5, 6, Symbole.of(7));
// sudoku.getGrille().setCase(0, 7, Symbole.of(8));
// sudoku.getGrille().setCase(4, 8, Symbole.of(9));
// sudoku.getGrille().setCase(0, 9, Symbole.of(25));
// sudoku.getGrille().setCase(6, 10, Symbole.of(11));
// sudoku.getGrille().setCase(2, 11, Symbole.of(12));
// sudoku.getGrille().setCase(0, 12, Symbole.of(13));
// sudoku.getGrille().creerBlocCarre();
// System.out.println("Sudoku :");
// System.out.println(sudoku.getGrille().toString());
// System.out.println("Blocs :");
// sudoku.getGrille().printBlocs();
// System.out.println("Symboles possibles :");
// sudoku.getGrille().printSymbolesPossibles();
// ResolveurBacktraceSimple resolveur = new ResolveurBacktraceSimple(sudoku);
// resolveur.resoudre(sudoku, false);
// System.out.println("Sudoku resolu :");
// System.out.println(sudoku.getGrille().toString());
// System.out.println("FIN TEST RESOLVEUR BACKTRACE SIMPLE");
// }
// }

View File

@@ -0,0 +1,57 @@
package sudoku;
import java.util.ArrayList;
import java.util.Arrays;
import org.junit.jupiter.api.Test;
public class TestResolveurBacktraceSimpleSudoku9 {
@Test
public void testResolution() {
System.out.println("TEST RESOLVEUR BACKTRACE SIMPLE : ");
System.out.println(new App().getGreeting());
// Create a new Sudoku
Sudoku sudoku = new Sudoku(9);
sudoku.getGrille().setSymbolesPossibles(new ArrayList<>(Arrays.asList(
Symbole.of(1),
Symbole.of(2),
Symbole.of(3),
Symbole.of(4),
Symbole.of(5),
Symbole.of(6),
Symbole.of(7),
Symbole.of(8),
Symbole.of(9))));
sudoku.ajouterContrainte(new ContrainteLigne());
sudoku.ajouterContrainte(new ContrainteColonne());
sudoku.ajouterContrainte(new ContrainteBloc());
sudoku.getGrille().setCase(0, 0, Symbole.of(1));
sudoku.getGrille().setCase(6, 1, Symbole.of(2));
sudoku.getGrille().setCase(2, 2, Symbole.of(3));
sudoku.getGrille().setCase(0, 3, Symbole.of(4));
sudoku.getGrille().setCase(4, 4, Symbole.of(5));
sudoku.getGrille().setCase(0, 5, Symbole.of(6));
sudoku.getGrille().setCase(5, 6, Symbole.of(7));
sudoku.getGrille().setCase(0, 7, Symbole.of(8));
sudoku.getGrille().setCase(4, 8, Symbole.of(9));
sudoku.getGrille().creerBlocCarre();
System.out.println("Sudoku :");
System.out.println(sudoku.getGrille().toString());
System.out.println("Blocs :");
sudoku.getGrille().printBlocs();
System.out.println("Symboles possibles :");
sudoku.getGrille().printSymbolesPossibles();
ResolveurBacktraceSimple resolveur = new ResolveurBacktraceSimple(sudoku);
resolveur.resoudre(sudoku, false);
System.out.println("Sudoku resolu :");
System.out.println(sudoku.getGrille().toString());
System.out.println("FIN TEST RESOLVEUR BACKTRACE SIMPLE");
}
}