shithub: puzzles

Download patch

ref: 08915945e64d2d3dfea7ec426228f814a6e65adf
parent: 33b55db48e9573c6c825e3a222ff968f6a0bd4f4
author: Simon Tatham <anakin@pobox.com>
date: Tue Nov 13 16:42:28 EST 2018

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.

--- a/latin.c
+++ b/latin.c
@@ -650,7 +650,7 @@
 
 int latin_solver_diff_set(struct latin_solver *solver,
                           struct latin_solver_scratch *scratch,
-                          int extreme)
+                          bool extreme)
 {
     int x, y, n, ret, o = solver->o;
 #ifdef STANDALONE_SOLVER
@@ -1244,12 +1244,12 @@
 
 #define ELT(sq,x,y) (sq[((y)*order)+(x)])
 
-/* returns non-zero if sq is not a latin square. */
-int latin_check(digit *sq, int order)
+/* returns true if sq is not a latin square. */
+bool latin_check(digit *sq, int order)
 {
     tree234 *dict = newtree234(latin_check_cmp);
     int c, r;
-    int ret = 0;
+    bool ret = false;
     lcparams *lcp, lc, *aret;
 
     /* Use a tree234 as a simple hash table, go through the square
@@ -1272,10 +1272,10 @@
 
     /* There should be precisely 'order' letters in the alphabet,
      * each occurring 'order' times (making the OxO tree) */
-    if (count234(dict) != order) ret = 1;
+    if (count234(dict) != order) ret = true;
     else {
 	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++)
--- a/latin.h
+++ b/latin.h
@@ -82,7 +82,7 @@
  * single-number elimination. */
 int latin_solver_diff_set(struct latin_solver *solver,
                           struct latin_solver_scratch *scratch,
-                          int extreme);
+                          bool extreme);
 
 typedef int (*usersolver_t)(struct latin_solver *solver, void *ctx);
 typedef void *(*ctxnew_t)(void *ctx);
@@ -115,7 +115,7 @@
 /* The order of the latin rectangle is max(w,h). */
 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);