From 291edf3ec7cfdd6e522da947d50dbc655d957360 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 10 Jun 2005 11:34:02 +0000 Subject: [PATCH] Disable shuffle overlap checking in the special case w=h=n. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@5940 cda61777-01e9-0310-a592-d414129be87e --- twiddle.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/twiddle.c b/twiddle.c index 8388f47..58b4cb5 100644 --- a/twiddle.c +++ b/twiddle.c @@ -363,7 +363,14 @@ static char *new_game_desc(game_params *params, random_state *rs, */ oldtotal = prevmoves[y*rw+x]; newtotal = oldtotal + r; - } while (abs(newtotal) < abs(oldtotal) || abs(newtotal) > 2); + + /* + * Special case here for w==h==n, in which case + * there is actually no way to _avoid_ all moves + * repeating or undoing previous ones. + */ + } while ((w != n || h != n) && + (abs(newtotal) < abs(oldtotal) || abs(newtotal) > 2)); do_rotate(grid, w, h, n, params->orientable, x, y, r); -- 2.11.0