summaryrefslogtreecommitdiff
path: root/src/solverwindow.cc
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-04-26 20:12:25 +0000
committerStijn Buys <ingar@osirion.org>2013-04-26 20:12:25 +0000
commitc93587b39b34c38f7d788fc639ced2bf5493a56a (patch)
tree1d377e2a05945a7f7cd47fca91b53ee00e32441f /src/solverwindow.cc
parent1bdd9ddbfdd021284201bd0a1f5da41be3dc9578 (diff)
Added brute-force search algorithm.
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;