public void initialize(string[] lines) { for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { sudoku[i, j] = new Cell(); } } int counter = 0; foreach(string line in lines) { for (int i = 0; i < line.Length - 1; i++) sudoku[counter, i].value = Int32.Parse(line[i].ToString()); counter++; } }
public void initialize(Cell[,] generated) { for (int i = 0; i < 9; i++) for (int j = 0; j < 9; j++) { sudoku[i, j] = new Cell(); sudoku[i, j] = generated[i, j]; } }
/* * Difficuly Level */ public Cell[,] generateSudoku(DifficultyLevel.levels level) { int willOpen = 0; switch (level) { case DifficultyLevel.levels.easy: willOpen = 30; break; case DifficultyLevel.levels.normal: willOpen = 25; break; case DifficultyLevel.levels.harder: willOpen = 20; break; case DifficultyLevel.levels.veteran: willOpen = 15; break; } for (int i = 0; i < 9; i++) for (int j = 0; j < 9; j++) { sudoku[i, j] = new Cell(); tmp[i, j] = new Cell(); } SudokuSolver ss = new SudokuSolver(); ss.initialize(sudoku); Random rand = new Random(); while (true) { for (int i = 0; i < willOpen; ) { int row = rand.Next(0, 8); int col = rand.Next(0, 8); if (sudoku[row, col].value == 0) { int value = rand.Next(1, 9); while (!isValid(row, col, value)) value = rand.Next(1, 9); Cell cell = new Cell(); cell.row = row; cell.column = col; cell.value = value; points.Add(cell); sudoku[row, col].value = value; i++; } } if (ss.solveIt()) break; else { clearSudoku(); ss.initialize(sudoku); } } maskIt(); return sudoku; }