From b68fe819147da86b52b7b024492bed68a4b5157b Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 2 Feb 2025 20:17:54 +0100 Subject: [PATCH] aaaaaaaaaaaaaaaaaaaaaaaaaaaa --- app/src/main/java/sudoku/solver/MixedSolver.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/sudoku/solver/MixedSolver.java b/app/src/main/java/sudoku/solver/MixedSolver.java index 1084583..5166255 100644 --- a/app/src/main/java/sudoku/solver/MixedSolver.java +++ b/app/src/main/java/sudoku/solver/MixedSolver.java @@ -45,6 +45,9 @@ public class MixedSolver implements Solver { throw new CancellationException("User wants to stop the solver"); } + if (doku.isSolved()) + return true; + int symbolCount = doku.getSubGrid(0).getSize(); // on remplit les cases par déduction @@ -56,12 +59,12 @@ public class MixedSolver implements Solver { if (possibleSymbols.size() == 1) { cell.setSymbolIndex(possibleSymbols.getFirst()); addStep(cell, steps); + if (solve(doku, steps)) + return true; + cell.setSymbolIndex(Cell.NOSYMBOL); } } - if (doku.isSolved()) - return true; - // on ne peut plus remplir de cases, on tente de backtrack for (int maxPossibilities = 2; maxPossibilities <= symbolCount; maxPossibilities++) { List backtrackCells = new ArrayList<>(); @@ -81,15 +84,12 @@ public class MixedSolver implements Solver { // on tente de placer chacun des symboles for (int symbol : possibilities) { - var state = doku.getStateManager().pushState(); backtrackCell.setSymbolIndex(symbol); if (solve(doku, steps)) { - // doku.getStateManager().forgetState(); return true; } - doku.getStateManager().popState(); - doku.getStateManager().restoreState(state); } + backtrackCell.setSymbolIndex(Cell.NOSYMBOL); } } return doku.isSolved();