static void Main(string[] args) { try { var sudokuMapper = new SudokuMapper(); var sbStateManager = new StateManager(); var sbSolverEngine = new SolverEngine(sbStateManager, sudokuMapper); var sbFileReader = new SudokuFileReader(); var sbDisplayer = new SudokuBoardDisplayer(); Console.Write("Entrez le nom du fichier .txt contenant le puzzle Sudoku : "); var filename = Console.ReadLine(); var sudokuBoard = sbFileReader.ReadFile(filename); sbDisplayer.Display("Puzzle Initial", sudokuBoard); bool isSolved = sbSolverEngine.Solve(sudokuBoard); sbDisplayer.Display("Puzzle résolu", sudokuBoard); Console.WriteLine(isSolved ? "Great !!! Resolve Successful" : "Un nain le mouvement est mal hard"); } catch (Exception e) { Console.WriteLine("{0} : {1}", "Erreur Bro : ", e.Message); } }
static void Main(string[] args) { try { Mapper mapper = new Mapper(); BoardStateManager boardStateManager = new BoardStateManager(); SolverEngine solverEngine = new SolverEngine(boardStateManager, mapper); FileReader fileReader = new FileReader(); BoardDisplayer boardDisplayer = new BoardDisplayer(); Console.Write("Enter the filename containing the sudoku puzzle: "); var filename = Console.ReadLine(); var sudokuBoard = fileReader.ReadFile(filename); boardDisplayer.Display("Initial State", sudokuBoard); bool isSudokuSolved = solverEngine.Solve(sudokuBoard); boardDisplayer.Display("Final State", sudokuBoard); Console.WriteLine(isSudokuSolved ? "Successfully solved puzzle!" : "Unfortunately, our algorithms couldn't solve the sudoku puzzle"); } catch (Exception ex) { Console.WriteLine("{0} : {1}", "Sudoku puzzle cannot be solved because there was an error: ", ex.Message); } }
private void InitializeEngine() { engine = new SolverEngine(); engine.WriteLog = (message) => { WriteLog(message); }; }
private void InitializeEngine() { engine = new SolverEngine(); engine.WriteLog = (message) => { Log.Text += message + Environment.NewLine; }; }
private static void RunPuzzle(Puzzle puzzle, int maxExecution = 100) { var engine = new SolverEngine(); //engine.WriteLog = (message) => { Console.WriteLine(message); }; engine.LoadPuzzle(puzzle); long elapsed = engine.TrySolveToEnd(); Console.WriteLine(puzzle.Name.PadRight(19) + " : " + "e " + elapsed.ToString().PadRight(3) + ", " + "g " + engine.GuessedMoves().ToString().PadRight(3) + ", " + "u " + engine.Undos.ToString().PadRight(3)); bool solved = engine.IsFullySolved(); Assert.IsTrue(solved, "Could not solve puzzle " + puzzle.Name); Assert.LessOrEqual(elapsed, maxExecution, "Elapsed milliseconds must be less than " + maxExecution); }
public IIndividual Solve() { ISolverEngine engine = new SolverEngine(); engine.Init(_solverOptions); using (ProgressBar progressBar = new ProgressBar()) { for (int i = 0; i < _solverOptions.GenerationsCount; i++) { engine.Select(); engine.Populate(); engine.Mutate(); var progressPercent = (float)i / (float)_solverOptions.GenerationsCount; progressBar.Report(progressPercent); } } return(engine.GetBestIndividual()); }
public void Should_CallSingleLogEngineNTimes(int n) { // Arrange IReadOnlyCollection <ISquare> emptyList = new List <ISquare>(); var logicEngine = new Mock <ILogicEngine>(); logicEngine .Setup(x => x.TryDoStep(It.IsAny <IEnumerable <ISquare> >(), out emptyList, out emptyList)) .ReturnsCount(i => i < n); var engine = new SolverEngine(Mock.Of <IMapHandler>(), new[] { logicEngine.Object }); // Act foreach (var step in engine.RunStep()) { } // Assert logicEngine.Verify(x => x.TryDoStep(It.IsAny <IEnumerable <ISquare> >(), out emptyList, out emptyList), Times.Exactly(n)); }
public void Solve(int[,] sudokuBoard) { try { // Init mapper Mapper mapper = new Mapper(); // Init boardStateManager BoardStateManager boardStateManager = new BoardStateManager(); // Init solver Engine SolverEngine solverEngine = new SolverEngine(boardStateManager, mapper); // Init sudokuBoard int[,] sudokuBord = sudokuBoard; // Check if the sudoku is solved IsSolved = solverEngine.Solve(sudokuBord); } // Throw an error catch (Exception ex) { Console.WriteLine($"Sudoku kan niet worden opgelost omdat: {ex.Message}"); } }
public Game(Mapper _mapper, BoardStateManager _boardStateManager, SolverEngine _solverEngine) { mapper = _mapper; boardStateManager = _boardStateManager; solverEngine = _solverEngine; }
public void RoseNonogramTest() { var Rows = new List <List <int> >() { new List <int>() { 5 }, new List <int>() { 5 }, new List <int>() { 5 }, new List <int>() { 3 }, new List <int>() { 1 }, }; var Columns = new List <List <int> >() { new List <int>() { 3 }, new List <int>() { 4 }, new List <int>() { 5 }, new List <int>() { 4 }, new List <int>() { 3 }, }; Puzzle puzzle = new Puzzle(Rows, Columns); FieldType[,] matrixSolution = { { solid, solid, solid, solid, solid }, { solid, solid, solid, solid, solid }, { solid, solid, solid, solid, solid }, { white, solid, solid, solid, white }, { white, white, solid, white, white }, }; var solvedPuzzle = SolverEngine.Solve(puzzle); var solvedPuzzleMatrix = solvedPuzzle.Matrix.Fields; TestResult(matrixSolution, solvedPuzzleMatrix); }
public void FlamingoNonogramTest() { var Rows = new List <List <int> >() { new List <int>() { 4 }, new List <int>() { 6 }, new List <int>() { 3, 3 }, new List <int>() { 7 }, new List <int>() { 7 }, new List <int>() { 1, 3 }, new List <int>() { 3 }, new List <int>() { 3, 5 }, new List <int>() { 4, 7 }, new List <int>() { 13 }, new List <int>() { 13 }, new List <int>() { 13 }, new List <int>() { 13 }, new List <int>() { 13 }, new List <int>() { 11 } }; var Columns = new List <List <int> >() { new List <int>() { 4 }, new List <int>() { 4 }, new List <int>() { 5, 6 }, new List <int>() { 2, 2, 9 }, new List <int>() { 15 }, new List <int>() { 15 }, new List <int>() { 5, 6 }, new List <int>() { 7 }, new List <int>() { 8 }, new List <int>() { 8 }, new List <int>() { 8 }, new List <int>() { 8 }, new List <int>() { 8 }, new List <int>() { 7 }, new List <int>() { 5 } }; Puzzle puzzle = new Puzzle(Rows, Columns); FieldType[,] matrixSolution = { { white, white, solid, solid, solid, solid, white, white, white, white, white, white, white, white, white }, { white, solid, solid, solid, solid, solid, solid, white, white, white, white, white, white, white, white }, { solid, solid, solid, white, solid, solid, solid, white, white, white, white, white, white, white, white }, { solid, solid, solid, solid, solid, solid, solid, white, white, white, white, white, white, white, white }, { solid, solid, solid, solid, solid, solid, solid, white, white, white, white, white, white, white, white }, { solid, white, white, white, solid, solid, solid, white, white, white, white, white, white, white, white }, { white, white, white, solid, solid, solid, white, white, white, white, white, white, white, white, white }, { white, white, white, solid, solid, solid, white, white, solid, solid, solid, solid, solid, white, white }, { white, white, solid, solid, solid, solid, white, solid, solid, solid, solid, solid, solid, solid, white }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid }, { white, white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, white }, }; var solvedPuzzle = SolverEngine.Solve(puzzle); var solvedPuzzleMatrix = solvedPuzzle.Matrix.Fields; TestResult(matrixSolution, solvedPuzzleMatrix); }
public void LionNonogramTest() { var Rows = new List <List <int> >() { new List <int>() { 7 }, new List <int>() { 9 }, new List <int>() { 2, 4, 2 }, new List <int>() { 2, 2 }, new List <int>() { 2, 1, 1, 2 }, new List <int>() { 3, 2 }, new List <int>() { 2, 2 }, new List <int>() { 3, 3, 1 }, new List <int>() { 9, 1 }, new List <int>() { 9, 1 }, new List <int>() { 11, 2 }, new List <int>() { 15 }, new List <int>() { 14 }, new List <int>() { 2, 3, 2 }, new List <int>() { 1, 1, 1, 1, 1, 1, 1 }, }; var Columns = new List <List <int> >() { new List <int>() { 4 }, new List <int>() { 6, 4 }, new List <int>() { 12, 1 }, new List <int>() { 2, 1, 6 }, new List <int>() { 2, 5, 1 }, new List <int>() { 3, 1, 6 }, new List <int>() { 3, 7 }, new List <int>() { 3, 6 }, new List <int>() { 3, 1, 5, 1 }, new List <int>() { 2, 6 }, new List <int>() { 12, 1 }, new List <int>() { 6, 4 }, new List <int>() { 4 }, new List <int>() { 3 }, new List <int>() { 5 }, }; Puzzle puzzle = new Puzzle(Rows, Columns); FieldType[,] matrixSolution = { { white, white, white, solid, solid, solid, solid, solid, solid, solid, white, white, white, white, white }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, white, white, white, white }, { white, solid, solid, white, white, solid, solid, solid, solid, white, solid, solid, white, white, white }, { white, solid, solid, white, white, white, white, white, white, white, solid, solid, white, white, white }, { white, solid, solid, white, white, solid, white, white, solid, white, solid, solid, white, white, white }, { white, solid, solid, solid, white, white, white, white, white, white, solid, solid, white, white, white }, { white, solid, solid, white, white, white, white, white, white, white, solid, solid, white, white, white }, { white, solid, solid, solid, white, white, white, white, white, solid, solid, solid, white, white, solid }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, white, white, white, solid }, { white, white, solid, solid, solid, solid, solid, solid, solid, solid, solid, white, white, white, solid }, { white, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, white, solid, solid }, { solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid }, { solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, solid, white }, { solid, solid, white, white, white, solid, solid, solid, white, white, white, solid, solid, white, white }, { solid, white, solid, white, solid, white, solid, white, solid, white, solid, white, solid, white, white }, }; var solvedPuzzle = SolverEngine.Solve(puzzle); var solvedPuzzleMatrix = solvedPuzzle.Matrix.Fields; TestResult(matrixSolution, solvedPuzzleMatrix); }