]> git.itanic.dy.fi Git - sudoku/blobdiff - sudoku.cpp
Store the guesses variable as per object instead of global variable
[sudoku] / sudoku.cpp
index a1777e5993d1b73a833b0b10d37a4c61fe1077f1..7c4e208c8d73aa131c3b45557bca318497aecb12 100644 (file)
@@ -6,7 +6,6 @@
 
 #define EMPTY ' '
 
-int guesses = 0;
 int verbose = 1;
 
 sudoku::sudoku()
@@ -18,6 +17,7 @@ sudoku::sudoku()
                        table[x][y] = EMPTY;
 
        recursion_depth = 0;
+       guesses = 0;
 }
 
 sudoku::~sudoku()
@@ -198,8 +198,6 @@ std::string sudoku::get_block_contents(int col, int row)
        return s;
 }
 
-
-
 static std::string exclude_common(std::string s1, std::string s2)
 {
        std::string::iterator a, b;
@@ -453,8 +451,10 @@ std::vector<sudoku> sudoku::solve_all()
 
                guess.set(x, y, str[i]);
                guess.recursion_depth = recursion_depth + 1;
+               guess.guesses = 0;
 
                results = guess.solve_all();
+               guesses += guess.guesses;
                
                //Did it solve?
                if (!results.empty()) {
@@ -462,11 +462,15 @@ std::vector<sudoku> sudoku::solve_all()
                               (int)results.size(), (int)str.size(),
                               str.c_str());*/
 
-                       for(j = 0;j < (int)results.size(); j++) 
+                       for(j = 0;j < (int)results.size(); j++) {
                                sudokus.push_back(results.at(j));
+                               guesses += results.at(j).guesses;
+                       }
                }
        }
 
+       std::cout << "Guesses: " << guesses << std::endl;
+
        // Return what was solved
        return sudokus;
 }