for (k = 1; k <= w; k++)
if (v % k == 0 && v / k <= w && v / k != k)
n++;
- if (n > 1)
+ if (n > 2)
singletons[j] |= F_MUL;
else
singletons[j] |= F_MUL_BAD;
/* didn't find a nice one, use a nasty one */
for (i = 0; i < a; i++) {
j = order[i];
- if (singletons[j] & good) {
+ if (singletons[j] & bad) {
clues[j] = clue;
singletons[j] = 0;
break;
{
int w = params->w, a = w*w;
game_state *state = snew(game_state);
- char *err;
const char *p = desc;
int i;
state->clues->refcount = 1;
state->clues->w = w;
state->clues->dsf = snew_dsf(a);
- err = parse_block_structure(&p, w, state->clues->dsf);
+ parse_block_structure(&p, w, state->clues->dsf);
assert(*p == ',');
p++;
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;
}
return 0.0F;
}
+static int game_is_solved(game_state *state)
+{
+ return state->completed;
+}
+
static int game_timing_state(game_state *state, game_ui *ui)
{
if (state->completed)
game_redraw,
game_anim_length,
game_flash_length,
+ game_is_solved,
TRUE, FALSE, game_print_size, game_print,
FALSE, /* wants_statusbar */
FALSE, game_timing_state,