aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2010-05-16 06:58:09 +0000
committerSimon Tatham <anakin@pobox.com>2010-05-16 06:58:09 +0000
commit19fa275b6a92d8c17a68bc4180985c98a145c33a (patch)
treefa0aa96a2d120b91bb5211bd0c75a19517802e42
parentc539872613510e9bc6b951db1ab93d3a3b7873ff (diff)
downloadpuzzles-19fa275b6a92d8c17a68bc4180985c98a145c33a.zip
puzzles-19fa275b6a92d8c17a68bc4180985c98a145c33a.tar.gz
puzzles-19fa275b6a92d8c17a68bc4180985c98a145c33a.tar.bz2
puzzles-19fa275b6a92d8c17a68bc4180985c98a145c33a.tar.xz
Patch from Ben Hutchings to fix an error-checking goof: Keen
division clues were failing to light up as erroneous if the quotient of the numbers in them came out right under rounded-down C integer division (e.g. 2 and 5 would be accepted for a 2/ clue). Apparently I copied the code that invents clues in the generator straight into the solution checker, without remembering that the generator was allowed to do it that way because exact divisibility had been checked elsewhere. [originally from svn r8951]
-rw-r--r--keen.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/keen.c b/keen.c
index fe41496..bec5055 100644
--- a/keen.c
+++ b/keen.c
@@ -1450,11 +1450,12 @@ static int check_errors(game_state *state, long *errors)
break;
case C_DIV:
{
- int d1 = cluevals[j], d2 = state->grid[i];
- if (d1 == 0 || d2 == 0)
+ int d1 = min(cluevals[j], state->grid[i]);
+ int d2 = max(cluevals[j], state->grid[i]);
+ if (d1 == 0 || d2 % d1 != 0)
cluevals[j] = 0;
else
- cluevals[j] = d2/d1 + d1/d2;/* one of them is 0 :-) */
+ cluevals[j] = d2 / d1;
}
break;
}