CSP Sudoku Solver
This is a sudoku solver using Constraint Satisfaction Problem pattern.
Build
Command line
cd uqac-ia-aspirobot
dotnet restore
dotnet build
dotnet run
Visual Studio
Run VS, open solution, wait for package restore, click run (F5)
Rider
Run Rider, open solution, wait for package restore, click run (Shift + F10)
Configuration
The program allows 4 optional arguments:
- Generator type: The generator to use to create/load the sudoku. Possible values:
- ’-’ (default): Read from std input
- ‘0’: Empty sudoku
- filename: load from the specified file
- Next cell chooser: The way to select next cell to fill. Possible values:
- ‘mrv’ (default): Use the Minimum remaining values strategy
- ‘dh’: Use the Degree heuristic strategy
- ‘basic’: Select the first blank value, from up to down and left to right
- Next number chooser: The way to select next number to the next to test in the cell. Possible values:
- ‘lcv’ (default): Use Least constraining value strategy
- ‘basic’: Select numbers in ascending order
- Empty characters: The characters that should be considered as empty cell. Default value: ‘0 .’
Code
This solver is coded in .NET Core (C#) using interfaces to abstract implementation.
Interfaces are in Interfaces/*.cs
Constraints are in Solver/Constraints/*.cs
Sudoku loaders/generators are in Solver/Generators/*.cs
Strategies for choosing next value are in Solver/NextValueChoosers/*.cs
Backtracking search algrithm is in Solver/BacktrackSearch.cs