private void SolveSudoku(object sender, RoutedEventArgs e) { var sudokuSolver = new SudokuDifficulty(); var sudokuValidator = new SudokuSolver(); var sudokuToSolve = new SudokuCell[9, 9]; var counter = 0; for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { var textBox = this.FindName("TextBox" + counter) as TextBox; sudokuToSolve[row, col] = new SudokuCell(row, col); if (textBox.Text != string.Empty) { sudokuToSolve[row, col].Value = int.Parse(textBox.Text); } counter++; } } if (lastSudokuDifficulty == 0) { MessageBox.Show("You must first generate a sudoku!"); return; } if (!sudokuValidator.CheckIfSudokuIsValid(sudokuToSolve)) { MessageBox.Show("This sudoku is not valid! Please check for errors!", "Warning"); return; } try { sudokuToSolve = sudokuSolver.SolveSudoku(sudokuToSolve); } catch (ArgumentException) { MessageBox.Show("This sudoku is not valid! Please check for errors!", "Warning"); return; } counter = 0; for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { var textBox = this.FindName("TextBox" + counter) as TextBox; textBox.Text = string.Empty; textBox.Text = sudokuToSolve[row, col].Value.ToString(); textBox.IsEnabled = false; counter++; } } stopWatch.Stop(); }
private void CheckIfSudokuIsValid(object sender, RoutedEventArgs e) { var sudokuSolver = new SudokuDifficulty(); var sudokuValidator = new SudokuSolver(); var sudokuToSolve = new SudokuCell[9, 9]; var counter = 0; for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { var textBox = this.FindName("TextBox" + counter) as TextBox; sudokuToSolve[row, col] = new SudokuCell(row, col); if (textBox.Text != string.Empty) { sudokuToSolve[row, col].Value = int.Parse(textBox.Text); } counter++; } } if (lastSudokuDifficulty == 0) { MessageBox.Show("You must first generate a sudoku!"); return; } if (!sudokuValidator.CheckIfSudokuIsValid(sudokuToSolve)) { var inputCells = new bool[9, 9]; var sudoku = new SudokuCell[9, 9]; counter = 0; for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { var element = this.FindName("TextBox" + counter) as TextBox; int number; var isParsed = int.TryParse(element.Text, out number); sudoku[row, col] = new SudokuCell(row, col); if (isParsed && element.IsReadOnly == false) { sudoku[row, col].Value = number; } else { sudoku[row, col].Value = number; inputCells[row, col] = true; } counter++; } } var listWithCellsWithError = sudokuSolver.GetAllCellsWithError(sudoku, inputCells); ColorTheCellsWithError(listWithCellsWithError); MessageBox.Show("You have some errors!"); return; } try { sudokuToSolve = sudokuSolver.SolveSudoku(sudokuToSolve); } catch (ArgumentException) { var inputCells = new bool[9, 9]; var sudoku = new SudokuCell[9, 9]; counter = 0; for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { var element = this.FindName("TextBox" + counter) as TextBox; int number; var isParsed = int.TryParse(element.Text, out number); sudoku[row, col] = new SudokuCell(row, col); if (isParsed && element.IsReadOnly == false) { sudoku[row, col].Value = number; } else { sudoku[row, col].Value = number; inputCells[row, col] = true; } counter++; } } var listWithCellsWithError = sudokuSolver.GetAllCellsWithError(sudoku, inputCells, false); ColorTheCellsWithError(listWithCellsWithError); MessageBox.Show("You have some errors!"); return; } MessageBox.Show("You are doing great!"); }