private SingleStepSolution ExecuteStep(SudokuPuzzle sudokuPuzzle, ISudokuSolverStrategy sudokuSolverStrategy) { var elimination = _basicElimination.SolveSingleStep(sudokuPuzzle); if (elimination != null) { sudokuPuzzle.ApplySingleStepSolution(elimination); } return(sudokuSolverStrategy.SolveSingleStep(sudokuPuzzle)); }
public SudokuPuzzle SolveUsingStrategy(SudokuPuzzle sudokuPuzzle, ISudokuSolverStrategy sudokuSolverStrategy) { var step = ExecuteStep(sudokuPuzzle, sudokuSolverStrategy); while (step != null) { sudokuPuzzle.ApplySingleStepSolution(step); step = ExecuteStep(sudokuPuzzle, sudokuSolverStrategy); } return(sudokuPuzzle); }