diff options
author | Stijn Buys <ingar@osirion.org> | 2013-04-26 20:12:25 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2013-04-26 20:12:25 +0000 |
commit | c93587b39b34c38f7d788fc639ced2bf5493a56a (patch) | |
tree | 1d377e2a05945a7f7cd47fca91b53ee00e32441f /src/solverwindow.cc | |
parent | 1bdd9ddbfdd021284201bd0a1f5da41be3dc9578 (diff) |
Added brute-force search algorithm.
Diffstat (limited to 'src/solverwindow.cc')
-rw-r--r-- | src/solverwindow.cc | 18 |
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; |