diff options
| author | sumuel <samuel@yakubos.org> | 2026-08-06 13:54:49 +0100 |
|---|---|---|
| committer | sumuel <samuel@yakubos.org> | 2026-08-06 13:54:49 +0100 |
| commit | 121aaa819958473e12197ff48933f7ca8cc4e7bc (patch) | |
| tree | b33c8ddabf6cb526faaa9d93c7bfa06d5000b72e /board.c | |
Diffstat (limited to 'board.c')
| -rw-r--r-- | board.c | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -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]) { + +} |