#ifndef SUDOKU_H #define SUDOKU_H #include #include extern int verbose; class sudoku { public: sudoku(); ~sudoku(); void print(void); void print_compact(void); int set(const int col, const int row, const char num); char get(const int col, const int row); // convert a string of numbers to a sudoku row int str_to_row(const int row, const std::string &str); std::string get_legal_numbers(const int col, const int row); std::vector solve_all(void); int generate(int min_guesses); int recursion_depth; 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); int fill_missing(void); int get_best_guess(int &col, int &row); sudoku fill_with_random(int &solvable); sudoku remove_randomly(int min_guesses, int depth); sudoku remove_randomly_parallel(int min_guesses, int depth); int used_numbers(); char table[9][9]; }; #endif