Sunflowers
Difficulty tuning
A Medium grid must force at least this many two-clue subset moves. Raise for meatier Mediums.
A Hard grid must force at least this many two-clue overlap moves (plus at least one subset move).
An Extreme grid must force at least this many what-if moves: assume a square, watch a clue break. The deepest logic in the game.
At least one what-if must need a chain this long (in counting steps). 1-step chains feel like overlap moves; 2+ guarantees a genuinely deep moment. Capped by MAX_WHAT_IF_FIRINGS.
Insane grids always exceed Extreme's chain cap. Raise this to additionally demand either-way moves: pivots where both hypotheses survive yet agree on another square. The rarest logic in the game; expect closest-match flags above 1.
How difficulty works
Every grid you generate is solved end-to-end by the same logic engine that powers the in-game hints. It plays through the whole puzzle one deduction at a time, always taking the simplest move available, exactly like a careful human, and records which reasoning techniques the grid forced it to use. There are five, and each tier is named after the hardest one the grid demands:
- Basic → Easy: a single clue settles its own squares: either it's already satisfied, so its remaining squares must all be empty, or it has exactly as many unknowns left as flowers it still needs.
- Subset → Medium: two clues compared, where every unknown one clue sees is also seen by the other. Subtracting one from the other settles the squares only the bigger clue sees.
- Overlap → Hard: two clues share some squares, and min/max bounds on how many flowers the shared region can hold settle the squares only one clue sees. Hard grids also always include subset moves.
- What-if → Extreme: cousin of Sudoku's forcing chains: hypothetically plant a flower (or a cross) in a square, follow the simple rules from there, and watch a clue break: too many flowers, or no way left to reach its number. The contradiction proves the square must be the opposite. Chains are capped at a few simple counting steps (
MAX_WHAT_IF_FIRINGS), so every what-if is mentally trackable and no pencil marks are needed. Hints walk you through exactly which square to test and which clue breaks. - Beyond the cap → Insane: the summit. Insane grids demand what-if chains longer than Extreme's cap (up to
INSANE_CHAIN_FIRINGScounting steps), and the solver also wields the either-way technique, cousin of Sudoku colouring: try a pivot square both ways; neither hypothesis breaks anything, but both chains force the same value onto some other square, so it's proven with no contradiction at all. This is the one tier where keeping notes genuinely helps. Hints spell out both kinds: which square to test, and (for either-way) which squares both chains agree on.
The 0–100 score places a grid inside its tier's band (Easy 4–19, Medium 20–39, Hard 40–59, Extreme 60–79, Insane 80–100), positioned by its sub-metrics: how wide and forgiving the solve is for Easy, the count of forced subset or overlap moves for Medium and Hard, and, for Extreme, the total depth of the what-if chains rather than their count, since a short 1-step what-if plays much like an overlap move while a 4-step cascade is a different beast. For Insane, the combined work of both branches of every either-way pivot. Bands never overlap, so a 62 is always genuinely harder than a 40.
Estimated time simply adds up the work: about a second per square of routine marking, ~2s to spot each basic deduction, ~14s per subset, ~26s per overlap, ~15s plus ~10s-per-step for each what-if, and ~35s plus per-step costs for each two-chain either-way. The weights live in EST_TIME in the source if the estimates drift from real solve times.
Zero squares follow ZERO_CLUE_RULES: Easy and Medium carry one or two 0 tiles, Hard exactly one, Extreme and Insane none. The generator protects needed 0s during pruning, strips extras first, injects one if a grid comes up short, and rejects anything that still breaks the rules.
The sliders above tighten what a grid must contain before it's accepted. Each click tries up to 90 candidates; if none fits your settings, the closest match is served and flagged under the board: a sign to ease a slider off or move to a bigger board, where demanding grids are more common.