From 0a70653bb20bc4af081a99ddb38adb345fa07bfe Mon Sep 17 00:00:00 2001 From: "NIHART, Jeremi" Date: Sun, 8 Sep 2024 18:12:53 +0200 Subject: [PATCH] chore: add some notes --- .idea/.idea.EndMove.Sudoku.Solver/.idea/encodings.xml | 4 ---- EndMove.Sudoku.Solver.sln | 2 +- .../Algorithms/BackTrackingSolver.cs | 8 +++++++- src/EndMove.Sudoku.Solver.Core/Program.cs | 2 ++ 4 files changed, 10 insertions(+), 6 deletions(-) delete mode 100644 .idea/.idea.EndMove.Sudoku.Solver/.idea/encodings.xml diff --git a/.idea/.idea.EndMove.Sudoku.Solver/.idea/encodings.xml b/.idea/.idea.EndMove.Sudoku.Solver/.idea/encodings.xml deleted file mode 100644 index df87cf9..0000000 --- a/.idea/.idea.EndMove.Sudoku.Solver/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/EndMove.Sudoku.Solver.sln b/EndMove.Sudoku.Solver.sln index 78ca8d3..1d1fd2b 100644 --- a/EndMove.Sudoku.Solver.sln +++ b/EndMove.Sudoku.Solver.sln @@ -1,4 +1,4 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{67AA5CD2-BE13-4741-8F70-4FE3638271E4}" EndProject diff --git a/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs b/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs index c3fe046..2c8fead 100644 --- a/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs +++ b/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs @@ -1,9 +1,15 @@ -namespace EndMove.Sudoku.Solver.Core.Algorithms; +namespace EndMove.Sudoku.Solver.Core.Algorithms; public class BackTrackingSolver : SolverBase { public BackTrackingSolver(Action displayBoard) : base(displayBoard) { } + /** + * note for future me : + * - Maybe pre-process the board to get the empty cells and already know used values per row, col and box + * - Maybe keep a track of the current index to avoid searching for the next empty cell in the all 2d array + * - Maybe avoid using negation + */ public override (bool, int[,]) Solve(int[,] board) { int row = -1, col = -1; diff --git a/src/EndMove.Sudoku.Solver.Core/Program.cs b/src/EndMove.Sudoku.Solver.Core/Program.cs index e6f0f2c..03c8bc2 100644 --- a/src/EndMove.Sudoku.Solver.Core/Program.cs +++ b/src/EndMove.Sudoku.Solver.Core/Program.cs @@ -58,7 +58,9 @@ namespace EndMove.Sudoku.Solver.Core SudokuUtils.TwoDTo1D(store[0], out int[] sudoku1D); SudokuUtils.DisplayBoard(sudoku1D); + // TODO improve 2D backtracking solver // TODO 1D solver with backtracking + // TODO Add time measurement ISolver solver = new BackTrackingSolver(SudokuUtils.DisplayBoard); var (status, lol) = solver.Solve(store[0]);