From: Timo Kokkonen Date: Sat, 20 Jun 2009 08:14:13 +0000 (+0300) Subject: Store the guesses variable as per object instead of global variable X-Git-Url: http://git.itanic.dy.fi/?p=sudoku;a=commitdiff_plain;h=c8e4574ea0d5e8d528bca919104cb2d98a8399db Store the guesses variable as per object instead of global variable --- diff --git a/solver.cpp b/solver.cpp index ac9a8da..7943435 100644 --- a/solver.cpp +++ b/solver.cpp @@ -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; diff --git a/sudoku.cpp b/sudoku.cpp index a1777e5..7c4e208 100644 --- a/sudoku.cpp +++ b/sudoku.cpp @@ -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::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::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; } diff --git a/sudoku.h b/sudoku.h index 986d63a..9575e7c 100644 --- a/sudoku.h +++ b/sudoku.h @@ -3,7 +3,6 @@ #include -extern int guesses; extern int verbose; class sudoku { @@ -24,8 +23,9 @@ public: std::vector 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);