From f28efc274135fa178c354bff38da3117b9ceb5ee Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 23 Mar 2007 18:08:21 +0000 Subject: [PATCH] Kyle Brazell points out that the completion checker considers a region valid if it has _a_ dot at its centre of symmetry, even if that dot isn't actually within the region in question. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@7407 cda61777-01e9-0310-a592-d414129be87e --- galaxies.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/galaxies.c b/galaxies.c index 24adf1e..5e75981 100644 --- a/galaxies.c +++ b/galaxies.c @@ -2622,10 +2622,16 @@ static int check_complete(game_state *state, int *dsf, int *colours) */ for (i = 0; i < w*h; i++) if (sqdata[i].valid) { - sqdata[i].cx = sqdata[i].minx + sqdata[i].maxx + 1; - sqdata[i].cy = sqdata[i].miny + sqdata[i].maxy + 1; + int cx, cy; + cx = sqdata[i].cx = sqdata[i].minx + sqdata[i].maxx + 1; + cy = sqdata[i].cy = sqdata[i].miny + sqdata[i].maxy + 1; if (!(SPACE(state, sqdata[i].cx, sqdata[i].cy).flags & F_DOT)) sqdata[i].valid = FALSE; /* no dot at centre of symmetry */ + if (dsf_canonify(dsf, (cy-1)/2*w+(cx-1)/2) != i || + dsf_canonify(dsf, (cy)/2*w+(cx-1)/2) != i || + dsf_canonify(dsf, (cy-1)/2*w+(cx)/2) != i || + dsf_canonify(dsf, (cy)/2*w+(cx)/2) != i) + sqdata[i].valid = FALSE; /* dot at cx,cy isn't ours */ if (SPACE(state, sqdata[i].cx, sqdata[i].cy).flags & F_DOT_BLACK) sqdata[i].colour = 2; else -- 2.11.0