summaryrefslogtreecommitdiffstats
path: root/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board.c')
-rw-r--r--board.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/board.c b/board.c
new file mode 100644
index 0000000..4b9fb7c
--- /dev/null
+++ b/board.c
@@ -0,0 +1,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]) {
+
+}