diff --git a/app/src/test/java/sudoku/TestMultidoku.java b/app/src/test/java/sudoku/TestMultidoku.java deleted file mode 100644 index 6474661..0000000 --- a/app/src/test/java/sudoku/TestMultidoku.java +++ /dev/null @@ -1,73 +0,0 @@ -// package sudoku; - -// import java.util.ArrayList; -// import java.util.Arrays; -// import java.util.List; - -// import org.junit.jupiter.api.Test; - -// public class TestMultidoku { - -// @Test -// public void testMultidoku() { -// Multidoku multidoku = new Multidoku(); -// Sudoku s1 = new Sudoku(9); -// Sudoku s2 = new Sudoku(9); - -// // Placer sudoku1 en haut à gauche (offset (0,0)) -// multidoku.ajouterSudoku(s1, 0, 0); -// // Placer sudoku2 de façon à ce que sa case (0,0) se retrouve en (8,8) de la -// // grille globale -// multidoku.ajouterSudoku(s2, 8, 8); - -// // Créer un lien entre la case (8,8) de s1 et (0,0) de s2 -// List casesPartagees = Arrays.asList( -// s1.getGrille().getCase(8, 8), -// s2.getGrille().getCase(0, 0)); -// multidoku.ajouterCasesPartagees(casesPartagees); - -// multidoku.ajouterContraintePartagee(new ContrainteCasePartagee(casesPartagees)); - -// ArrayList symboles = new ArrayList<>(); -// for (int i = 10; i <= 19; i++) { -// symboles.add(Symbole.of(i)); -// } - -// s1.getGrille().setSymbolesPossibles(symboles); -// List sudokus = Arrays.asList(s1, s2); -// for (Sudoku sudoku : sudokus) { -// sudoku.getGrille().setSymbolesPossibles(symboles); -// sudoku.ajouterContrainte(new ContrainteLigne()); -// sudoku.ajouterContrainte(new ContrainteColonne()); -// sudoku.ajouterContrainte(new ContrainteBloc()); -// sudoku.getGrille().creerBlocCarre(); - -// } - -// for (int i = 0; i < s1.getGrille().getTaille(); i++) { -// s1.getGrille().setCase(i, i, symboles.get(i)); -// } - -// System.out.println("Sudoku 1 :"); -// System.out.println(s1.getGrille().toString()); - -// System.out.println("Sudoku 2 :"); -// System.out.println(s2.getGrille().toString()); - -// System.out.println("\nAffichage Multidoku combiné :"); -// System.out.println(multidoku.toStringCombined()); - -// if (multidoku.resoudreMultidoku(false)) { -// System.out.println("Multidoku résolu !"); -// System.out.println(multidoku.toStringCombined()); -// } else { -// System.out.println("Échec de la résolution du multidoku."); -// } - -// System.out.println("Sudoku 1 résolu :"); -// System.out.println(s1.getGrille().toString()); - -// System.out.println("Sudoku 2 résolu :"); -// System.out.println(s2.getGrille().toString()); -// } -// } diff --git a/app/src/test/java/sudoku/TestMultidokuCase.java b/app/src/test/java/sudoku/TestMultidokuCase.java new file mode 100644 index 0000000..fe23122 --- /dev/null +++ b/app/src/test/java/sudoku/TestMultidokuCase.java @@ -0,0 +1,73 @@ +package sudoku; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; + +public class TestMultidokuCase { + + @Test + public void testMultidokuCase() { + Multidoku multidoku = new Multidoku(); + Sudoku s1 = new Sudoku(9); + Sudoku s2 = new Sudoku(9); + + s1.setNom("Sudoku 1"); + s2.setNom("Sudoku 2"); + + // Placer sudoku1 en haut à gauche (offset (0,0)) + multidoku.ajouterSudoku(s1, 0, 0); + // Placer sudoku2 de façon à ce que sa case (0,0) se retrouve en (8,8) de la + // grille globale + multidoku.ajouterSudoku(s2, 8, 8); + + // Créer un lien entre la case (8,8) de s1 et (0,0) de s2 + List casesPartagees = Arrays.asList( + s1.getGrille().getCase(8, 8), + s2.getGrille().getCase(0, 0)); + multidoku.ajouterCasesPartagees(casesPartagees); + + ArrayList symboles = new ArrayList<>(); + for (int i = 10; i <= 19; i++) { + symboles.add(Symbole.of(i)); + } + + s1.getGrille().setSymbolesPossibles(symboles); + List sudokus = Arrays.asList(s1, s2); + for (Sudoku sudoku : sudokus) { + sudoku.getGrille().setSymbolesPossibles(symboles); + sudoku.ajouterContrainte(new ContrainteLigne()); + sudoku.ajouterContrainte(new ContrainteColonne()); + sudoku.ajouterContrainte(new ContrainteBloc()); + sudoku.getGrille().creerBlocCarre(); + } + + for (int i = 0; i < s1.getGrille().getTaille(); i++) { + s1.getGrille().setCase(i, i, symboles.get(i)); + } + + System.out.println("Sudoku 1 :"); + System.out.println(s1.getGrille().toString()); + + System.out.println("Sudoku 2 :"); + System.out.println(s2.getGrille().toString()); + + System.out.println("\nAffichage Multidoku combiné :"); + System.out.println(multidoku.toStringCombined()); + + if (multidoku.resoudreMultidoku(false)) { + System.out.println("Multidoku résolu !"); + System.out.println(multidoku.toStringCombined()); + } else { + System.out.println("Échec de la résolution du multidoku."); + } + + System.out.println("Sudoku 1 résolu :"); + System.out.println(s1.getGrille().toString()); + + System.out.println("Sudoku 2 résolu :"); + System.out.println(s2.getGrille().toString()); + } +} diff --git a/app/src/test/java/sudoku/TestMultidokuColonne.java b/app/src/test/java/sudoku/TestMultidokuColonne.java new file mode 100644 index 0000000..76ce616 --- /dev/null +++ b/app/src/test/java/sudoku/TestMultidokuColonne.java @@ -0,0 +1,86 @@ +package sudoku; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; + +public class TestMultidokuColonne { + @Test + public void testMultidokuColonne() { + Multidoku multidoku = new Multidoku(); + Sudoku s1 = new Sudoku(9); + Sudoku s2 = new Sudoku(9); + + s1.setNom("Sudoku 1"); + s2.setNom("Sudoku 2"); + + // Placer sudoku1 en haut à gauche (offset (0,0)) + multidoku.ajouterSudoku(s1, 0, 0); + + multidoku.ajouterSudoku(s2, 1, 8); + + ArrayList symboles = new ArrayList<>(); + for (int i = 10; i <= 19; i++) { + symboles.add(Symbole.of(i)); + } + + s1.getGrille().setSymbolesPossibles(symboles); + List sudokus = Arrays.asList(s1, s2); + for (Sudoku sudoku : sudokus) { + sudoku.getGrille().setSymbolesPossibles(symboles); + sudoku.ajouterContrainte(new ContrainteLigne()); + sudoku.ajouterContrainte(new ContrainteColonne()); + sudoku.ajouterContrainte(new ContrainteBloc()); + sudoku.getGrille().creerBlocCarre(); + } + + for (int i = 0; i < s1.getGrille().getTaille(); i++) { + s1.getGrille().setCase(i, i, symboles.get(i)); + } + + List casesPartagees = Arrays.asList( + s1.getGrille().getCase(1, 8), + s1.getGrille().getCase(2, 8), + s1.getGrille().getCase(3, 8), + s1.getGrille().getCase(4, 8), + s1.getGrille().getCase(5, 8), + s1.getGrille().getCase(6, 8), + s1.getGrille().getCase(7, 8), + s1.getGrille().getCase(8, 8), + + s2.getGrille().getCase(0, 0), + s2.getGrille().getCase(1, 0), + s2.getGrille().getCase(2, 0), + s2.getGrille().getCase(3, 0), + s2.getGrille().getCase(4, 0), + s2.getGrille().getCase(5, 0), + s2.getGrille().getCase(6, 0), + s2.getGrille().getCase(7, 0)); + + multidoku.ajouterCasesPartagees(casesPartagees); + + System.out.println("Sudoku 1 :"); + System.out.println(s1.getGrille().toString()); + + System.out.println("Sudoku 2 :"); + System.out.println(s2.getGrille().toString()); + + System.out.println("\nAffichage Multidoku combiné :"); + System.out.println(multidoku.toStringCombined()); + + if (multidoku.resoudreMultidoku(false)) { + System.out.println("Multidoku résolu :"); + System.out.println(multidoku.toStringCombined()); + } else { + System.out.println("Multidoku non résolu"); + } + + System.out.println("Sudoku 1 résolu :"); + System.out.println(s1.getGrille().toString()); + + System.out.println("Sudoku 2 résolu :"); + System.out.println(s2.getGrille().toString()); + } +} diff --git a/app/src/test/java/sudoku/TestMultidokuLigne.java b/app/src/test/java/sudoku/TestMultidokuLigne.java new file mode 100644 index 0000000..0f8cd90 --- /dev/null +++ b/app/src/test/java/sudoku/TestMultidokuLigne.java @@ -0,0 +1,86 @@ +package sudoku; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; + +public class TestMultidokuLigne { + @Test + public void testMultidokuLigne() { + Multidoku multidoku = new Multidoku(); + Sudoku s1 = new Sudoku(9); + Sudoku s2 = new Sudoku(9); + + s1.setNom("Sudoku 1"); + s2.setNom("Sudoku 2"); + + // Placer sudoku1 en haut à gauche (offset (0,0)) + multidoku.ajouterSudoku(s1, 0, 0); + + multidoku.ajouterSudoku(s2, 8, 1); + + ArrayList symboles = new ArrayList<>(); + for (int i = 10; i <= 19; i++) { + symboles.add(Symbole.of(i)); + } + + s1.getGrille().setSymbolesPossibles(symboles); + List sudokus = Arrays.asList(s1, s2); + for (Sudoku sudoku : sudokus) { + sudoku.getGrille().setSymbolesPossibles(symboles); + sudoku.ajouterContrainte(new ContrainteLigne()); + sudoku.ajouterContrainte(new ContrainteColonne()); + sudoku.ajouterContrainte(new ContrainteBloc()); + sudoku.getGrille().creerBlocCarre(); + } + + for (int i = 0; i < s1.getGrille().getTaille(); i++) { + s1.getGrille().setCase(i, i, symboles.get(i)); + } + + List casesPartagees = Arrays.asList( + s1.getGrille().getCase(8, 1), + s1.getGrille().getCase(8, 2), + s1.getGrille().getCase(8, 3), + s1.getGrille().getCase(8, 4), + s1.getGrille().getCase(8, 5), + s1.getGrille().getCase(8, 6), + s1.getGrille().getCase(8, 7), + s1.getGrille().getCase(8, 8), + + s2.getGrille().getCase(0, 0), + s2.getGrille().getCase(0, 1), + s2.getGrille().getCase(0, 2), + s2.getGrille().getCase(0, 3), + s2.getGrille().getCase(0, 4), + s2.getGrille().getCase(0, 5), + s2.getGrille().getCase(0, 6), + s2.getGrille().getCase(0, 7)); + + multidoku.ajouterCasesPartagees(casesPartagees); + + System.out.println("Sudoku 1 :"); + System.out.println(s1.getGrille().toString()); + + System.out.println("Sudoku 2 :"); + System.out.println(s2.getGrille().toString()); + + System.out.println("\nAffichage Multidoku combiné :"); + System.out.println(multidoku.toStringCombined()); + + if (multidoku.resoudreMultidoku(false)) { + System.out.println("Multidoku résolu :"); + System.out.println(multidoku.toStringCombined()); + } else { + System.out.println("Multidoku non résolu"); + } + + System.out.println("Sudoku 1 résolu :"); + System.out.println(s1.getGrille().toString()); + + System.out.println("Sudoku 2 résolu :"); + System.out.println(s2.getGrille().toString()); + } +} diff --git a/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku16.java b/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku16.java index 323529e..2add776 100644 --- a/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku16.java +++ b/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku16.java @@ -1,70 +1,70 @@ -// package sudoku; +package sudoku; -// import java.util.ArrayList; -// import java.util.Arrays; +import java.util.ArrayList; +import java.util.Arrays; -// import org.junit.jupiter.api.Test; +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) +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.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().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(); + sudoku.getGrille().creerBlocCarre(); -// System.out.println("Sudoku :"); -// System.out.println(sudoku.getGrille().toString()); + System.out.println("Sudoku :"); + System.out.println(sudoku.getGrille().toString()); -// System.out.println("Blocs :"); -// sudoku.getGrille().printBlocs(); + System.out.println("Blocs :"); + sudoku.getGrille().printBlocs(); -// System.out.println("Symboles possibles :"); -// sudoku.getGrille().printSymbolesPossibles(); + 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"); -// } -// } + ResolveurBacktraceSimple resolveur = new ResolveurBacktraceSimple(); + resolveur.resoudre(sudoku, false); + System.out.println("Sudoku resolu :"); + System.out.println(sudoku.getGrille().toString()); + System.out.println("FIN TEST RESOLVEUR BACKTRACE SIMPLE"); + } +} diff --git a/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku25.java b/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku25.java index f224dd0..ec57cd9 100644 --- a/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku25.java +++ b/app/src/test/java/sudoku/TestResolveurBacktraceSimpleSudoku25.java @@ -1,3 +1,9 @@ +/** + * TestResolveurBacktraceSimpleSudoku25 + * Tentative de résolution d'un sudoku 25x25 avec le resolveur backtrace simple + * Commenté car la résolution avec le resolveur backtrace simple est trop longue + */ + // package sudoku; // import java.util.ArrayList; @@ -47,7 +53,7 @@ // System.out.println("Symboles possibles :"); // sudoku.getGrille().printSymbolesPossibles(); -// ResolveurBacktraceSimple resolveur = new ResolveurBacktraceSimple(sudoku); +// ResolveurBacktraceSimple resolveur = new ResolveurBacktraceSimple(); // resolveur.resoudre(sudoku, false); // System.out.println("Sudoku resolu :"); // System.out.println(sudoku.getGrille().toString());