From d3329734387dbaf972b651729245d4ffe7efcc4e Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Fri, 23 Dec 2022 15:24:09 +0000 Subject: [PATCH] Guess: Make 'H' key work properly with "Allow duplicates" off Before it would not only generate an invalid guess, but also override the usual rules to allow you to submit it. Now guesses are only provided if they're valid, and I've adjusted the maximum-colour finder so that the code can actually find the correct guess. This should have no effect on the behaviour with "Allow duplicates" turned on. --- guess.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/guess.c b/guess.c index 05df4b0..09f034e 100644 --- a/guess.c +++ b/guess.c @@ -707,7 +707,11 @@ static void compute_hint(const game_state *state, game_ui *ui) for (j = 0; j < state->params.npegs; ++j) if (state->guesses[i]->pegs[j] > maxcolour) maxcolour = state->guesses[i]->pegs[j]; - maxcolour = min(maxcolour + 1, state->params.ncolours); + if (state->params.allow_multiple) + maxcolour = min(maxcolour + 1, state->params.ncolours); + else + maxcolour = min(maxcolour + state->params.npegs, + state->params.ncolours); increase_mincolour: for (i = 0; i < state->next_go; ++i) { @@ -729,6 +733,7 @@ increase_mincolour: } while (ui->hint->pegs[0] <= state->params.ncolours) { + if (!is_markable(&state->params, ui->hint)) goto increment_pegrow; for (i = 0; i < state->next_go; ++i) { mark_pegs(ui->hint, state->guesses[i], maxcolour); for (j = 0; j < state->params.npegs; ++j)