merge sudoku_init with sudoku_solve_step

This commit is contained in:
2025-07-30 12:16:21 +02:00
parent 8fefe103f0
commit 0453c21a3c
3 changed files with 2 additions and 10 deletions

View File

@@ -20,7 +20,6 @@ int main(int argc, char **argv) {
0x000, 0x000, 0x000, 0x000, 0x080, 0x000, 0x000, 0x040, 0x100, 0x000, 0x000, 0x000, 0x000, 0x080, 0x000, 0x000, 0x040, 0x100,
// clang-format on // clang-format on
}; };
sudoku_init(board);
sudoku_print(board); sudoku_print(board);
sudoku_solve_step(board); sudoku_solve_step(board);
sudoku_print(board); sudoku_print(board);

View File

@@ -8,12 +8,6 @@
#include "util/intdef.h" #include "util/intdef.h"
void sudoku_init(u16 *board) {
for (uint i = 0; i < SUDOKU_DEPTH_2; i++) {
board[i] |= SUDOKU_ALL & -!board[i];
}
}
/* removes `val` from `*brd`, if `*brd` is not equal to `val` */ /* removes `val` from `*brd`, if `*brd` is not equal to `val` */
static inline void setbrdpos(u16 *brd, u16 val) { static inline void setbrdpos(u16 *brd, u16 val) {
*brd &= ~(val & -(*brd != val)); *brd &= ~(val & -(*brd != val));
@@ -32,6 +26,8 @@ void sudoku_place(u16 *brd, u16 val, uint idx) {
void sudoku_solve_step(u16 *board) { void sudoku_solve_step(u16 *board) {
for (uint i = 0; i < SUDOKU_DEPTH_2; i++) { for (uint i = 0; i < SUDOKU_DEPTH_2; i++) {
board[i] |= SUDOKU_ALL & -!board[i];
switch (board[i]) { switch (board[i]) {
case SUDOKU_1: case SUDOKU_1:
case SUDOKU_2: case SUDOKU_2:

View File

@@ -22,9 +22,6 @@ enum sudoku_bitmask {
SUDOKU_ALL = 0x01FF, SUDOKU_ALL = 0x01FF,
}; };
/* initialises the sudoku board to `SUDOKU_ALL`. (if the tile is empty) */
void sudoku_init(u16 *board);
/* places `val` at `idx` in `board`, and removes `val` from the possibilities in neighbouring tiles */ /* places `val` at `idx` in `board`, and removes `val` from the possibilities in neighbouring tiles */
void sudoku_place(u16 *board, u16 val, uint idx); void sudoku_place(u16 *board, u16 val, uint idx);