|
@@ -0,0 +1,40 @@
|
|
1
|
+CSP Sudoku Solver
|
|
2
|
+=================
|
|
3
|
+This is a sudoku solver using Constraint Satisfaction Problem pattern.
|
|
4
|
+
|
|
5
|
+Build
|
|
6
|
+-----
|
|
7
|
+- Command line
|
|
8
|
+```shell
|
|
9
|
+cd uqac-ia-aspirobot
|
|
10
|
+dotnet restore
|
|
11
|
+dotnet build
|
|
12
|
+dotnet run
|
|
13
|
+```
|
|
14
|
+
|
|
15
|
+- Visual Studio
|
|
16
|
+Run VS, open solution, wait for package restore, click run (F5)
|
|
17
|
+
|
|
18
|
+- Rider
|
|
19
|
+Run Rider, open solution, wait for package restore, click run (Shift + F10)
|
|
20
|
+
|
|
21
|
+Configuration
|
|
22
|
+-------------
|
|
23
|
+The program allows 3 optional arguments:
|
|
24
|
+- Generator type: The generator to use to create/load the sudoku. Possible values:
|
|
25
|
+ - '-' (default): Read from std input
|
|
26
|
+ - '0': Empty sudoku
|
|
27
|
+ - filename: load from the specified file
|
|
28
|
+- Next value chooser: The way to select next value to fill. Possible values:
|
|
29
|
+ - 'mrv' (default): Use the Minimum remaining values strategy
|
|
30
|
+ - 'basic': Select the first blank value, from up to down and left to right
|
|
31
|
+- Empty characters: The characters that should be considered as empty cell. Default value: '0 .'
|
|
32
|
+
|
|
33
|
+Code
|
|
34
|
+----
|
|
35
|
+This solver is coded in .NET Core (C#) using interfaces to abstract implementation.
|
|
36
|
+Interfaces are in `Interfaces/*.cs`
|
|
37
|
+Constraints are in `Solver/Constraints/*.cs`
|
|
38
|
+Sudoku loaders/generators are in `Solver/Generators/*.cs`
|
|
39
|
+Strategies for choosing next value are in `Solver/NextValueChoosers/*.cs`
|
|
40
|
+Backtracking search algrithm is in `Solver/BacktrackSearch.cs`
|