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 CheckIfDigit(object sender, TextCompositionEventArgs e) { try { if (!char.IsDigit(e.Text, e.Text.Length - 1)) { e.Handled = true; return; } else { (sender as TextBox).Text = e.Text; } var sudokuToSolve = new SudokuCell[9, 9]; var sudokuValidator = new SudokuSolver(); var counter = 0; var numbersCount = 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); numbersCount++; } counter++; } } if (numbersCount == 81) { if (!sudokuValidator.CheckIfSudokuIsValid(sudokuToSolve)) { MessageBox.Show("This sudoku is not valid! Please check for errors!", "Warning"); return; } MessageBox.Show("Congratulations! You solved this sudoku for: " + GetTime() + "!"); } } catch (Exception) { } }
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!"); }