public void SolveGuessing(SudokuModel sudokuModel) { SolveLogical(sudokuModel); SudokuBackupModel backup = new SudokuBackupModel { BackupCells = SubComponents.CopyArray(sudokuModel.Cells) }; while (!SubComponents.CheckIfSolved(sudokuModel.Cells)) { while (!SubComponents.CheckIfStuck(sudokuModel.Cells)) { sudokuModel.Cells = SubComponents.GuessANumber(sudokuModel); sudokuModel.Cells = SolveLogical(sudokuModel); if (SubComponents.CheckIfSolved(sudokuModel.Cells)) { return; } } sudokuModel.Cells = SubComponents.CopyArray(backup.BackupCells); } }
public int[][] SolveLogical(SudokuModel sudokuModel) { var sudokuCells = sudokuModel.Cells; bool placed; do { placed = false; for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { if (sudokuCells[row][col] == 0) { List <int> numberlist = SubComponents.Numberchecker(sudokuCells, new Coordinate { Row = row, Col = col }); if (numberlist.Count == 1) { sudokuCells[row][col] = numberlist[0]; placed = true; break; } } } if (placed) { break; } } } while (placed); return(sudokuCells); }