]> git.itanic.dy.fi Git - sudoku/blob - sudoku.h
Generates sudokus at desired difficulty level
[sudoku] / sudoku.h
1 #ifndef SUDOKU_H
2 #define SUDOKU_H
3
4 #include <vector>
5 #include <string>
6
7 extern int verbose;
8
9 class sudoku {
10 public:
11         sudoku();
12         ~sudoku();
13
14         void print(void);
15
16         int set(const int col, const int row, const char num);
17         char get(const int col, const int row);
18
19         // convert a string of numbers to a sudoku row
20         int str_to_row(const int row, const std::string &str);
21
22         std::string get_legal_numbers(const int col, const int row);
23         std::vector<sudoku> solve_all(void);
24         int generate(int min_guesses);
25
26         int recursion_depth;
27         int guesses;
28
29 private:
30         std::string get_row_contents(const int row);
31         std::string get_col_contents(const int col);
32         std::string get_block_contents(const int col, const int row);
33         int fill_missing(void);
34         void clone_to(sudoku &to);
35         int get_best_guess(int &col, int &row);
36         sudoku fill_with_random(int &solvable);
37         sudoku remove_randomly(int min_guesses, int depth);
38         int used_numbers();
39
40         char table[9][9];
41 };
42
43 #endif