chore: add some notes

This commit is contained in:
NIHART, Jeremi 2024-09-08 18:12:53 +02:00
parent fb1d6d3f57
commit 0a70653bb2
4 changed files with 10 additions and 6 deletions

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@ -1,4 +1,4 @@

Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{67AA5CD2-BE13-4741-8F70-4FE3638271E4}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{67AA5CD2-BE13-4741-8F70-4FE3638271E4}"
EndProject EndProject

View File

@ -1,9 +1,15 @@
namespace EndMove.Sudoku.Solver.Core.Algorithms; namespace EndMove.Sudoku.Solver.Core.Algorithms;
public class BackTrackingSolver : SolverBase public class BackTrackingSolver : SolverBase
{ {
public BackTrackingSolver(Action<int[,]> displayBoard) : base(displayBoard) { } public BackTrackingSolver(Action<int[,]> 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) public override (bool, int[,]) Solve(int[,] board)
{ {
int row = -1, col = -1; int row = -1, col = -1;

View File

@ -58,7 +58,9 @@ namespace EndMove.Sudoku.Solver.Core
SudokuUtils.TwoDTo1D(store[0], out int[] sudoku1D); SudokuUtils.TwoDTo1D(store[0], out int[] sudoku1D);
SudokuUtils.DisplayBoard(sudoku1D); SudokuUtils.DisplayBoard(sudoku1D);
// TODO improve 2D backtracking solver
// TODO 1D solver with backtracking // TODO 1D solver with backtracking
// TODO Add time measurement
ISolver solver = new BackTrackingSolver(SudokuUtils.DisplayBoard); ISolver solver = new BackTrackingSolver(SudokuUtils.DisplayBoard);
var (status, lol) = solver.Solve(store[0]); var (status, lol) = solver.Solve(store[0]);