Exemplo n.º 1
0
        public void AnEasyBoardCanBeSolved()
        {
            var grid = GridBuilder.Easy();

            var allSolvers        = new AllSolvers();
            var pencilMarkReducer = new PencilMarkReducer();

            var success = true;

            while (success)
            {
                var pencilMarks = new PencilMarks(grid);
                var reductions  = pencilMarkReducer.Reduce(grid, pencilMarks);

                var result = allSolvers.TryToSolveOneCell(grid, pencilMarks);
                if (result.ProgressMade)
                {
                    grid = result.Grid;
                }
                success = result.ProgressMade;
            }

            var notValidBecause = grid.ValidateCompleteBoard();

            Assert.True(string.IsNullOrWhiteSpace(notValidBecause));
        }
Exemplo n.º 2
0
        public SolverResult TryToSolveOneCell(Grid grid, PencilMarks pencilMarks)
        {
            foreach (var solver in solvers)
            {
                var result = solver.TryToSolveOneCell(grid, pencilMarks);
                if (result.ProgressMade)
                {
                    return(result);
                }
            }

            return(SolverResult.Failed(grid));
        }