diff --git a/src/main.c b/src/main.c index 301df2b..f0e9900 100644 --- a/src/main.c +++ b/src/main.c @@ -20,7 +20,6 @@ int main(int argc, char **argv) { 0x000, 0x000, 0x000, 0x000, 0x080, 0x000, 0x000, 0x040, 0x100, // clang-format on }; - sudoku_init(board); sudoku_print(board); sudoku_solve_step(board); sudoku_print(board); diff --git a/src/sudoku.c b/src/sudoku.c index b5da9b4..b20abc1 100644 --- a/src/sudoku.c +++ b/src/sudoku.c @@ -8,12 +8,6 @@ #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` */ static inline void setbrdpos(u16 *brd, u16 val) { *brd &= ~(val & -(*brd != val)); @@ -32,6 +26,8 @@ void sudoku_place(u16 *brd, u16 val, uint idx) { void sudoku_solve_step(u16 *board) { for (uint i = 0; i < SUDOKU_DEPTH_2; i++) { + board[i] |= SUDOKU_ALL & -!board[i]; + switch (board[i]) { case SUDOKU_1: case SUDOKU_2: diff --git a/src/sudoku.h b/src/sudoku.h index 79121b1..b9df4c3 100644 --- a/src/sudoku.h +++ b/src/sudoku.h @@ -22,9 +22,6 @@ enum sudoku_bitmask { 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 */ void sudoku_place(u16 *board, u16 val, uint idx);