]> git.itanic.dy.fi Git - sudoku/commitdiff
Store the guesses variable as per object instead of global variable
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 20 Jun 2009 08:14:13 +0000 (11:14 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 20 Jun 2009 08:14:13 +0000 (11:14 +0300)
solver.cpp
sudoku.cpp
sudoku.h

index ac9a8da38071043946d97b228f88c633845d131b..794343517ee6ed9a289cdf65e6d481becdefc814 100644 (file)
@@ -41,7 +41,7 @@ int main(int argc, char *argv[])
                          << results.at(i).recursion_depth << std::endl;
                results.at(i).print();
        }
-       std::cout << "Had to guess " << guesses
+       std::cout << "Had to guess " << sudo.guesses
                  << " times while solving this sudoku\n";
 
        return 0;
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;
 }
index 986d63a166fbd9513177120b37b93690814433df..9575e7cb2b35aebdd1342c75fc46d8dff85c9f28 100644 (file)
--- a/sudoku.h
+++ b/sudoku.h
@@ -3,7 +3,6 @@
 
 #include <vector>
 
-extern int guesses;
 extern int verbose;
 
 class sudoku {
@@ -24,8 +23,9 @@ public:
        std::vector<sudoku> solve_all();
 
        int recursion_depth;
-private:
+       int guesses;
 
+private:
        std::string get_row_contents(const int row);
        std::string get_col_contents(const int col);
        std::string get_block_contents(const int col, const int row);