aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2022-12-23 15:24:09 +0000
committerBen Harris <bjh21@bjh21.me.uk>2022-12-23 22:59:23 +0000
commitd3329734387dbaf972b651729245d4ffe7efcc4e (patch)
tree43940c4386f823827709265f8c572357458e1d23
parent11c1447eac7698f01c2a00764c2b1a900a9d6a90 (diff)
downloadpuzzles-d3329734387dbaf972b651729245d4ffe7efcc4e.zip
puzzles-d3329734387dbaf972b651729245d4ffe7efcc4e.tar.gz
puzzles-d3329734387dbaf972b651729245d4ffe7efcc4e.tar.bz2
puzzles-d3329734387dbaf972b651729245d4ffe7efcc4e.tar.xz
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.
-rw-r--r--guess.c7
1 files changed, 6 insertions, 1 deletions
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)