diff --git a/sud.c b/sud.c index 3d2bb12..364a9ba 100644 --- a/sud.c +++ b/sud.c @@ -241,3 +241,14 @@ enum check_res check(const struct sudoku *sud) /* If we've got this far, all is well. */ return SOLVED; } + +bool filled(const struct sudoku *sud) +{ + for (unsigned r = 0; r < NDIGITS; ++r) { + for (unsigned c = 0; c < NDIGITS; ++c) { + if (!sud->cells[r][c].det) + return false; + } + } + return true; +} diff --git a/sud.h b/sud.h index bdb8971..53c159f 100644 --- a/sud.h +++ b/sud.h @@ -71,6 +71,11 @@ void print(const struct sudoku *sud); * Determine whether the sudoku has been solved correctly, contains * invalid choices or is incomplete. */ -enum check_res check(const struct sudoku *sud); +enum check_res check(const struct sudoku *sud); + +/** + * Determine whether all the sudoku's cells have been determined. + */ +bool filled(const struct sudoku *sud); #endif