Thermometers
Mercury fills every thermometer from the bulb, without gaps — but how far is up to you. The clues count the filled cells in each row and column. Click a cell to cycle mercury → cross → blank; right-click plants a cross directly.
A thermometer is one scalar variable: how far the mercury
reaches. That makes every row and column a sum of monotone
step functions — and it quietly kills a rule that won the previous
puzzle in this series. In Kakurasu, enumerating every way a line can
meet its clue (witness enumeration) saw strictly more than
interval arithmetic. Here it provably cannot: a mercury level moves
in unit steps, so the number of cells a thermometer fills in a line
sweeps a gap-free range, every witness sum is an interval, and
per-line enumeration reaches exactly the interval fixpoint.
This repo implements both and pins the equality with a property test
— 900 positions, zero disagreements.
The strength has to come from somewhere else. The
interval rule is what a person does: each line's
clue, minus what the other thermometers can still cover, squeezes
every mercury range from both ends. The probe is
what a machine does: assume a level, propagate, and erase the levels
that die. Measured over 200 unique boards per size: intervals alone
finish 100% at 4×4 but 86% at 8×8
— and probing finished every unique board sampled,
600 of 600. The generator's own measurement: random mercury levels
give a unique board 94% of the time at 4×4 and
8% at 8×8, so uniqueness is bought by rejection —
19 rerolls per accepted 8×8 board. Every board here is unique,
finishable without guessing, and the Hint button names the
rule that fires: bookkeeping, one line's count, chained counts, or a
probe. Soundness is pinned by an independent brute-force solver that
shares no code with the propagators: four counters must agree on
solution counts, and a disagreement is how an unsound rule gets
caught.