From 618e436270e1fa5ac393a2d77b942a794055c9dc Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 2 Feb 2025 14:43:09 +0100 Subject: [PATCH] refactor stupidsolver --- .../main/java/sudoku/solver/StupidSolver.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/sudoku/solver/StupidSolver.java b/app/src/main/java/sudoku/solver/StupidSolver.java index 8fed0b8..ca8cf29 100644 --- a/app/src/main/java/sudoku/solver/StupidSolver.java +++ b/app/src/main/java/sudoku/solver/StupidSolver.java @@ -1,5 +1,6 @@ package sudoku.solver; +import java.util.List; import java.util.concurrent.CancellationException; import sudoku.structure.MultiDoku; @@ -8,9 +9,9 @@ import sudoku.structure.Sudoku; /** * Class de test non utilisé */ -public class StupidSolver { +public class StupidSolver implements Solver{ - private static boolean solve(Sudoku sudoku, int index) { + private boolean solve(Sudoku sudoku, int index, List steps) { // mécanisme d'abandon if (Thread.interrupted()) throw new CancellationException("User wants to stop the solver"); @@ -21,27 +22,30 @@ public class StupidSolver { // si la case n'est pas modifiable, on passe à la suivante if (!sudoku.getCell(index).isMutable()) - return solve(sudoku, index + 1); + return solve(sudoku, index + 1, steps); for (int symbol = 0; symbol < sudoku.getSize(); symbol++) { if (sudoku.getCell(index).trySetValue(symbol)) { + addStep(sudoku.getCell(index), steps); // on tente de placer sur la case suivante - if (solve(sudoku, index + 1)) { + if (solve(sudoku, index + 1, steps)) { return true; } } } // on a tout essayé et rien n'a fonctionné sudoku.getCell(index).empty(); + addStep(sudoku.getCell(index), steps); return false; } - public static boolean solve(MultiDoku doku) { + @Override + public boolean solve(MultiDoku doku, List steps) { if (doku.isSolved()) return true; for (Sudoku sudoku : doku.getSubGrids()) { - if (!solve(sudoku, 0)) + if (!solve(sudoku, 0, steps)) return false; } return true;