blob: 4b9fb7cfb73bfdfd8bf163157624d19186697d98 (
plain) (
blame)
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
|
#include <ncurses.h>
#include <stdlib.h>
#include <time.h>
#include "board.h"
int puzzle[81];
int total = 0;
void puzzle_swap(int puzzle[81]);
void generate_first_line(int puzzle[81]) {
srand ( time(NULL) );
for (int i=0; i < 9; i++) {
puzzle[i] = i + 1;
}
for (int i=0; i < 9; i++) {
int random = (rand() % 9);
int swap;
swap = puzzle[random];
puzzle[random] = puzzle[i];
puzzle[i] = swap;
}
}
void print_puzzle(int puzzle[81], bool reveal) {
for (int i=0; i < 81; i++) {
if ( i == 0 ) printw(" SUDOKU");
if ( i % 9 == 0 ) printw("\n");
else if ( i % 3 == 0 ) printw("|");
if ( i != 0 && i % 27 == 0 ) printw(" ===========================\n");
if (puzzle[i] & 2) printw("%2d ", puzzle[i]);
else if ( reveal == true ) printw("%2d ", puzzle[i]);
else printw(" ");
}
}
void generate_puzzle(int puzzle[81]){
for (int i=9; i < 81; i++){
/* way too much nonsense to make a valid board
* "The seed row method" -> https://sudokupulse.com/articles/how-to-create-sudoku-puzzles/
* row 2 */
if ( i < 15) puzzle[i] = puzzle[i-6];
else if ( i >= 15 && i < 18 ) puzzle[i] = puzzle[i-15];
/* row 3 */
else if ( i >= 18 && i < 24 ) puzzle[i] = puzzle[i-6];
else if ( i >= 24 && i < 27 ) puzzle[i] = puzzle[i-15];
/* row 4 */
else if ( i >= 27 && i < 35 ) puzzle[i] = puzzle[i-26];
else if ( i == 35 ) puzzle[i] = puzzle[i-35];
/* row 5 */
else if ( i >= 36 && i < 42 ) puzzle[i] = puzzle[i-6];
else if ( i >= 42 && i < 45 ) puzzle[i] = puzzle[i-15];
/* row 6 */
else if ( i >= 45 && i < 51 ) puzzle[i] = puzzle[i-6];
else if ( i >= 51 && i < 54 ) puzzle[i] = puzzle[i-15];
/* row 7 */
else if ( i >= 54 && i < 62 ) puzzle[i] = puzzle[i-26];
else if ( i == 62 ) puzzle[i] = puzzle[i-35];
/* row 8 */
else if ( i >= 63 && i < 69 ) puzzle[i] = puzzle[i-6];
else if ( i >= 69 && i < 72 ) puzzle[i] = puzzle[i-15];
/* row 9 */
else if ( i >= 72 && i < 78 ) puzzle[i] = puzzle[i-6];
else if ( i >= 78 && i < 81 ) puzzle[i] = puzzle[i-15];
puzzle_swap(puzzle);
}
}
void puzzle_swap(int puzzle[81]) {
}
|