<< 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;
#define EMPTY ' '
-int guesses = 0;
int verbose = 1;
sudoku::sudoku()
table[x][y] = EMPTY;
recursion_depth = 0;
+ guesses = 0;
}
sudoku::~sudoku()
return s;
}
-
-
static std::string exclude_common(std::string s1, std::string s2)
{
std::string::iterator a, b;
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()) {
(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;
}
#include <vector>
-extern int guesses;
extern int verbose;
class sudoku {
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);