public void FillNextpuzzle(int i, int j) { if (puzzle[i, j] != 0) { if (i == SIZE && j == SIZE) { throw new PuzzleCompleteException(); } else { int nexti = j == SIZE ? i + 1 : i; int nextj = j == SIZE ? 0 : j + 1; FillNextpuzzle(nexti, nextj); return; } } var fillList = SudokuTest.GenerateFillList(); fillList.ForEach(delegate(int item) { puzzle[i, j] = item; if (FillSuccess(i, j)) { if (i == SIZE && j == SIZE) { throw new PuzzleCompleteException(); } else { int nexti = j == SIZE ? i + 1 : i; int nextj = j == SIZE ? 0 : j + 1; FillNextpuzzle(nexti, nextj); } } }); puzzle[i, j] = 0; }
public void FillNextGrid(int i, int j) { var fillList = SudokuTest.GenerateFillList(); fillList.ForEach(delegate(int item) { grid[i, j] = item; if (SudokuTest.FillSuccess(grid, i, j)) { if (i == LAST && j == LAST) { PrintResult(); return; } else { int nexti = j == LAST ? i + 1 : i; int nextj = j == LAST ? 0 : j + 1; FillNextGrid(nexti, nextj); } } }); }