tout ca tout ca

This commit is contained in:
Victor 2024-06-26 22:43:57 +02:00
parent de585edfb7
commit 7c755a5ce3
3 changed files with 39 additions and 10 deletions

View File

@ -5,7 +5,7 @@ import java.util.List;
public class Chessboard { public class Chessboard {
public static final int SIZE = 8; public static final int SIZE = 8;
private final int[][] gameBoard = new int[SIZE][SIZE]; public final int[][] gameBoard = new int[SIZE][SIZE];
private final List<Position> queensPosition = new ArrayList<>(); private final List<Position> queensPosition = new ArrayList<>();
private static final String ANSI_RED = "\u001B[31m"; private static final String ANSI_RED = "\u001B[31m";
private static final String ANSI_RESET = "\u001B[0m"; private static final String ANSI_RESET = "\u001B[0m";

View File

@ -1,7 +1,7 @@
package fr.iut_fbleau.but3.dev6_2; package fr.iut_fbleau.but3.dev6_2;
public class EightQueensSolver { public class EightQueensSolver {
private Chessboard chessboard = new Chessboard(); public Chessboard chessboard = new Chessboard();
public EightQueensSolver() { public EightQueensSolver() {
@ -26,7 +26,7 @@ public class EightQueensSolver {
long startTimeVictor = System.currentTimeMillis(); long startTimeVictor = System.currentTimeMillis();
System.out.println("Début Victor"); System.out.println("Début Victor");
System.out.println(solver.Solver(0)); System.out.println(solver.SolverVic(0));
System.out.println("Fin Victor"); System.out.println("Fin Victor");
long endTimeVictor = System.currentTimeMillis(); long endTimeVictor = System.currentTimeMillis();
System.out.println("Temps d'exécution Victor: " + (endTimeVictor - startTimeVictor) + " ms"); System.out.println("Temps d'exécution Victor: " + (endTimeVictor - startTimeVictor) + " ms");
@ -34,7 +34,7 @@ public class EightQueensSolver {
} }
private Boolean Solver(int level) { public Boolean SolverVic(int level) {
if (chessboard.getNumberOfQueen() == Chessboard.SIZE) { if (chessboard.getNumberOfQueen() == Chessboard.SIZE) {
return true; return true;
} }
@ -43,7 +43,7 @@ public class EightQueensSolver {
int y = i / Chessboard.SIZE; int y = i / Chessboard.SIZE;
if (chessboard.VerifAccessible(x, y)) { if (chessboard.VerifAccessible(x, y)) {
chessboard.placeQueen(x, y); chessboard.placeQueen(x, y);
if (!Solver(y)) { if (!SolverVic(y)) {
chessboard.removeQueen(x, y); chessboard.removeQueen(x, y);
} else { } else {
return true; return true;
@ -53,7 +53,7 @@ public class EightQueensSolver {
return false; return false;
} }
private boolean SolverSim(int line){ public boolean SolverSim(int line){
if(chessboard.getNumberOfQueen() == Chessboard.SIZE){ if(chessboard.getNumberOfQueen() == Chessboard.SIZE){
return true; return true;
} }

View File

@ -9,10 +9,12 @@ import org.junit.jupiter.api.Test;
class ChessboardTest { class ChessboardTest {
private Chessboard chessboard; private Chessboard chessboard;
private EightQueensSolver solver;
@BeforeEach @BeforeEach
public void beforeEach() { public void beforeEach() {
this.chessboard = new Chessboard(); this.chessboard = new Chessboard();
this.solver = new EightQueensSolver();
} }
@Test @Test
@ -74,14 +76,40 @@ class ChessboardTest {
return x >= 0 && x < Chessboard.SIZE && y >= 0 && y < Chessboard.SIZE; return x >= 0 && x < Chessboard.SIZE && y >= 0 && y < Chessboard.SIZE;
} }
void testWinningSolution(Chessboard chessboard) {
assertEquals(Chessboard.SIZE, chessboard.getNumberOfQueen(),"Devrait etre egal a "+Chessboard.SIZE);
for(int i = 0; i< Chessboard.SIZE ;i++){
for(int j = 0; j< Chessboard.SIZE ;j++){
if(chessboard.gameBoard[i][j] != 0){
chessboard.removeQueen(i,j);
assertTrue(chessboard.VerifAccessible(i,j));
chessboard.placeQueen(i,j);
}
}
}
}
@Test @Test
void testWinningSolution() { void TestSolverSim() {
// Placer les reines aux positions données solver.SolverSim(0);
testWinningSolution(solver.chessboard);
}
@Test
void TestSolverVic() {
solver.SolverVic(0);
testWinningSolution(solver.chessboard);
}
@Test
void TestKnownedWinningSolution(){
int[][] positions = { int[][] positions = {
{0, 0}, {1, 4}, {2, 7}, {3, 5}, {0, 0}, {1, 4}, {2, 7}, {3, 5},
{4, 2}, {5, 6}, {6, 1}, {7, 3} {4, 2}, {5, 6}, {6, 1}, {7, 3}
}; };
for (int[] pos : positions) { for (int[] pos : positions) {
assertTrue(this.chessboard.VerifAccessible(pos[0], pos[1]), assertTrue(this.chessboard.VerifAccessible(pos[0], pos[1]),
"La position (" + pos[0] + "," + pos[1] + ") devrait être accessible."); "La position (" + pos[0] + "," + pos[1] + ") devrait être accessible.");
@ -89,7 +117,8 @@ class ChessboardTest {
assertFalse(this.chessboard.VerifAccessible(pos[0], pos[1]), assertFalse(this.chessboard.VerifAccessible(pos[0], pos[1]),
"La position (" + pos[0] + "," + pos[1] + ") ne devrait plus être accessible."); "La position (" + pos[0] + "," + pos[1] + ") ne devrait plus être accessible.");
} }
testWinningSolution(this.chessboard);
} }
} }