diff --git a/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs b/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs index c3fe046..1365947 100644 --- a/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs +++ b/src/EndMove.Sudoku.Solver.Core/Algorithms/BackTrackingSolver.cs @@ -4,6 +4,12 @@ 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]);