package sudoku; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Test; public class TestMultidokuBloc { @Test public void testMultidokuBloc() { 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 (6,6) de la // grille globale multidoku.ajouterSudoku(s2, 6, 6); 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)); } // Créer un lien entre la case (6,6) de s1 et (0,0) de s2 List casesPartagees = Arrays.asList( s1.getGrille().getCase(6, 6), s1.getGrille().getCase(6, 7), s1.getGrille().getCase(6, 8), s1.getGrille().getCase(7, 6), s1.getGrille().getCase(7, 7), s1.getGrille().getCase(7, 8), 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(1, 0), s2.getGrille().getCase(1, 1), s2.getGrille().getCase(1, 2), s2.getGrille().getCase(2, 0), s2.getGrille().getCase(2, 1), s2.getGrille().getCase(2, 2)); 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()); } }