X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/1e3e152de7cc491b63c5e351b5f603d307182b07..9c63a0112329c153911475b014dfdbf2f36b943c:/twiddle.c diff --git a/twiddle.c b/twiddle.c index 8388f47..8000780 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); @@ -539,8 +546,8 @@ static int compare_int(const void *av, const void *bv) return 0; } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { game_state *ret = dup_game(state); int i;