|  | @@ -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`  
 |