ref: d3329734387dbaf972b651729245d4ffe7efcc4e
parent: 11c1447eac7698f01c2a00764c2b1a900a9d6a90
author: Ben Harris <bjh21@bjh21.me.uk>
date: Fri Dec 23 10:24:09 EST 2022
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.
--- a/guess.c
+++ b/guess.c
@@ -707,7 +707,11 @@
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 @@
}
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)