mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Adopt C99 bool in the shared Latin-square API.
latin_check now returns bool, and latin_solver_diff_set takes a bool 'extreme' flag. Should be non-disruptive.
This commit is contained in:
12
latin.c
12
latin.c
@ -650,7 +650,7 @@ int latin_solver_diff_simple(struct latin_solver *solver)
|
|||||||
|
|
||||||
int latin_solver_diff_set(struct latin_solver *solver,
|
int latin_solver_diff_set(struct latin_solver *solver,
|
||||||
struct latin_solver_scratch *scratch,
|
struct latin_solver_scratch *scratch,
|
||||||
int extreme)
|
bool extreme)
|
||||||
{
|
{
|
||||||
int x, y, n, ret, o = solver->o;
|
int x, y, n, ret, o = solver->o;
|
||||||
#ifdef STANDALONE_SOLVER
|
#ifdef STANDALONE_SOLVER
|
||||||
@ -1244,12 +1244,12 @@ static int latin_check_cmp(void *v1, void *v2)
|
|||||||
|
|
||||||
#define ELT(sq,x,y) (sq[((y)*order)+(x)])
|
#define ELT(sq,x,y) (sq[((y)*order)+(x)])
|
||||||
|
|
||||||
/* returns non-zero if sq is not a latin square. */
|
/* returns true if sq is not a latin square. */
|
||||||
int latin_check(digit *sq, int order)
|
bool latin_check(digit *sq, int order)
|
||||||
{
|
{
|
||||||
tree234 *dict = newtree234(latin_check_cmp);
|
tree234 *dict = newtree234(latin_check_cmp);
|
||||||
int c, r;
|
int c, r;
|
||||||
int ret = 0;
|
bool ret = false;
|
||||||
lcparams *lcp, lc, *aret;
|
lcparams *lcp, lc, *aret;
|
||||||
|
|
||||||
/* Use a tree234 as a simple hash table, go through the square
|
/* Use a tree234 as a simple hash table, go through the square
|
||||||
@ -1272,10 +1272,10 @@ int latin_check(digit *sq, int order)
|
|||||||
|
|
||||||
/* There should be precisely 'order' letters in the alphabet,
|
/* There should be precisely 'order' letters in the alphabet,
|
||||||
* each occurring 'order' times (making the OxO tree) */
|
* each occurring 'order' times (making the OxO tree) */
|
||||||
if (count234(dict) != order) ret = 1;
|
if (count234(dict) != order) ret = true;
|
||||||
else {
|
else {
|
||||||
for (c = 0; (lcp = index234(dict, c)) != NULL; c++) {
|
for (c = 0; (lcp = index234(dict, c)) != NULL; c++) {
|
||||||
if (lcp->count != order) ret = 1;
|
if (lcp->count != order) ret = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (c = 0; (lcp = index234(dict, c)) != NULL; c++)
|
for (c = 0; (lcp = index234(dict, c)) != NULL; c++)
|
||||||
|
4
latin.h
4
latin.h
@ -82,7 +82,7 @@ int latin_solver_diff_simple(struct latin_solver *solver);
|
|||||||
* single-number elimination. */
|
* single-number elimination. */
|
||||||
int latin_solver_diff_set(struct latin_solver *solver,
|
int latin_solver_diff_set(struct latin_solver *solver,
|
||||||
struct latin_solver_scratch *scratch,
|
struct latin_solver_scratch *scratch,
|
||||||
int extreme);
|
bool extreme);
|
||||||
|
|
||||||
typedef int (*usersolver_t)(struct latin_solver *solver, void *ctx);
|
typedef int (*usersolver_t)(struct latin_solver *solver, void *ctx);
|
||||||
typedef void *(*ctxnew_t)(void *ctx);
|
typedef void *(*ctxnew_t)(void *ctx);
|
||||||
@ -115,7 +115,7 @@ digit *latin_generate(int o, random_state *rs);
|
|||||||
/* The order of the latin rectangle is max(w,h). */
|
/* The order of the latin rectangle is max(w,h). */
|
||||||
digit *latin_generate_rect(int w, int h, random_state *rs);
|
digit *latin_generate_rect(int w, int h, random_state *rs);
|
||||||
|
|
||||||
int latin_check(digit *sq, int order); /* !0 => not a latin square */
|
bool latin_check(digit *sq, int order); /* true => not a latin square */
|
||||||
|
|
||||||
void latin_debug(digit *sq, int order);
|
void latin_debug(digit *sq, int order);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user