summaryrefslogtreecommitdiff
path: root/src/solverwindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/solverwindow.cc')
-rw-r--r--src/solverwindow.cc18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/solverwindow.cc b/src/solverwindow.cc
index 33ca7c2..e7f4633 100644
--- a/src/solverwindow.cc
+++ b/src/solverwindow.cc
@@ -181,14 +181,14 @@ void SolverWindow::step()
solverwindow_sudokuwidget->get_values(sudoku);
Sudoku solution(sudoku);
- int solved = solution.solve();
+ int solved = solution.solve_rules();
if (solved == 0) {
qDebug() << "no solveable cells left!";
return;
}
// compare sudoku and solution values
- int index_start = (int) random() % 81; // TODO this should be a random number from 0 to 80
+ int index_start = (int) random() % 81;
int index_current = index_start;
do {
int column = index_current % 9;
@@ -209,11 +209,23 @@ void SolverWindow::solve()
{
Sudoku sudoku;
solverwindow_sudokuwidget->get_values(sudoku);
- int solved = sudoku.solve();
+ int solved = sudoku.solve_rules();
+ sudoku.validate();
solverwindow_sudokuwidget->set_values(sudoku);
qDebug() << solved << " cells solved";
}
+void SolverWindow::search()
+{
+ Sudoku sudoku;
+ solverwindow_sudokuwidget->get_values(sudoku);
+ int iterations = sudoku.solve_search();
+ solverwindow_sudokuwidget->set_values(sudoku);
+ if (iterations > 0) {
+ qDebug() << "solved in " << iterations << " iterations";
+ }
+}
+
void SolverWindow::step_constraints()
{
Sudoku sudoku;