-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSudoku.cpp
More file actions
147 lines (133 loc) · 3.33 KB
/
Sudoku.cpp
File metadata and controls
147 lines (133 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// Sudoku.cpp : Diese Datei enthält die Funktion "main". Hier beginnt und endet die Ausführung des Programms.
//
#include "pch.h"
#include "Lib.h"
#include <string>
#include <iostream>
#include <random>
/// The main function.
///
/// It executes everything that is needed.
int main(int argc, char* argv[]){
const raw_sudoku_t input_sudoku_3x3 = {
6, 0, 0, 0, 0, 8, 9, 4, 0,
9, 0, 0, 0, 0, 6, 1, 0, 0,
0, 7, 0, 0, 4, 0, 0, 0, 0,
2, 0, 0, 6, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 0, 0,
0, 8, 9, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 6, 0, 0, 0, 5,
0, 0, 0, 0, 0, 0, 0, 3, 0,
8, 0, 0, 0, 0, 1, 6, 0, 0
};
const raw_sudoku_t easy_sudoku_3x3 = {
0,0,4,0,8,9,5,7,0,
0,0,0,7,1,0,6,3,4,
5,0,0,4,6,3,0,0,0,
9,3,0,0,0,0,2,0,0,
6,0,0,9,0,1,0,0,3,
0,0,2,0,0,0,0,9,5,
0,0,0,1,5,2,0,0,9,
8,5,3,0,9,4,0,0,0,
0,2,9,8,3,0,4,0,0
};
const raw_sudoku_t hard_sudoku_3x3 = {
0,0,0,0,0,0,0,0,0,
0,0,0,4,6,2,0,0,1,
0,0,0,1,0,0,3,4,0,
0,0,0,0,4,0,1,0,0,
0,0,0,2,0,6,0,0,0,
0,0,8,0,3,0,0,0,0,
0,5,1,0,0,4,0,0,0,
2,0,0,5,8,7,0,0,0,
9,0,0,0,0,0,0,0,8
};
const raw_sudoku_t hardest_sudoku_3x3 = {
8, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 6, 0, 0, 0, 0, 0,
0, 7, 0, 0, 9, 0, 2, 0, 0,
0, 5, 0, 0, 0, 7, 0, 0, 0,
0, 0, 0, 0, 4, 5, 7, 0, 0,
0, 0, 0, 1, 0, 0, 0, 3, 0,
0, 0, 1, 0, 0, 0, 0, 6, 8,
0, 0, 8, 5, 0, 0, 0, 1, 0,
0, 9, 0, 0, 0, 0, 4, 0, 0
};
const raw_sudoku_t only_53_solutions_sudoku_3x3 = {
5,0,0,0,0,0,0,0,7,
0,0,0,4,6,2,0,0,1,
0,0,0,1,0,0,3,4,0,
0,0,0,0,4,0,1,0,0,
0,0,0,2,0,6,0,0,0,
0,0,8,0,3,0,0,0,0,
0,5,1,0,0,4,0,0,0,
2,0,0,0,8,7,0,0,0,
9,0,0,0,0,0,0,0,8
};
const raw_sudoku_t many_11199_solutions_sudoku_3x3 = {
5,0,0,0,0,0,0,0,7,
0,0,0,4,0,2,0,0,1,
0,0,0,1,0,0,0,4,0,
0,0,0,0,4,0,1,0,0,
0,0,0,0,0,6,0,0,0,
0,0,8,0,3,0,0,0,0,
0,5,1,0,0,4,0,0,0,
2,0,0,5,8,7,0,0,0,
9,0,0,0,0,0,0,0,8
};
const raw_sudoku_t many_177859_solutions_sudoku_3x3 = {
5,0,0,0,0,0,0,0,7,
0,0,0,4,0,2,0,0,1,
0,0,0,1,0,0,0,4,0,
0,0,0,0,4,0,1,0,0,
0,0,0,0,0,6,0,0,0,
0,0,8,0,3,0,0,0,0,
0,5,0,0,0,4,0,0,0,
2,0,0,0,8,7,0,0,0,
9,0,0,0,0,0,0,0,8
};
const raw_sudoku_t too_maaaaany_sol_sudoku_3x3 = {
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,4,0,1,0,0,
0,0,0,2,0,0,0,0,0,
0,0,8,0,3,0,0,0,0,
0,5,0,0,0,4,0,0,0,
2,0,0,5,8,0,0,0,0,
9,0,0,0,0,0,0,0,8
};// 8 Solutions
const raw_sudoku_t zero_sudoku_3x3 = {
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0
};
const raw_sudoku_t input_sudoku_2x3 = {
0, 1, 4, 0, 5, 0,
2, 0, 5, 1, 3, 0,
0, 0, 3, 0, 6, 0,
0, 4, 0, 3, 0, 0,
0, 5, 1, 6, 0, 3,
0, 3, 0, 5, 4, 0
};
const auto input_sudoku = easy_sudoku_3x3;
std::cout << input_sudoku << "\n";
sudoku_data_t sudoku = init_sudoku_with_raw(input_sudoku);
auto_fill(sudoku, true);
raw_sudoku_t raw_sud = get_raw_sudoku(sudoku);
std::cout << solve_brute_force_all<3, 3>(sudoku) << " Solutions\n";
sudoku = init_sudoku_with_raw(input_sudoku);
auto_fill(sudoku, true);
std::cout << solve_count_rec_depth<3, 3>(sudoku) << " Min. Recursion Depth\n";
raw_sud = get_raw_sudoku(sudoku);
std::cout << raw_sud << "\n";
generate_hard_sudokus();
//auto s_map = load_coll("./Data/dat_copy.txt");
//separate_by_level_and_save(s_map);
}