Heyawake
The grid is cut into rectangular rooms. Shade cells so that no two shaded cells touch orthogonally, the unshaded cells stay one connected region, a numbered room holds exactly that many shaded cells — and no straight run of unshaded cells passes through three rooms. Click to cycle shaded → white → blank; right-click marks a cell white directly.
Four of the five rules are small. "No two shaded cells touch" is about a
pair of cells. "This room holds three shaded cells" is about one room.
Connectivity is global but standard. The fifth rule is the odd one:
no straight run of unshaded cells may pass through three rooms.
Its subject is a maximal white run, which can be as long
as the board and which changes shape every time a cell is shaded — and it
is the only rule in the puzzle that ties two rooms
together.
You can compile it away. A window of consecutive cells that touches three
rooms may not be all-white, so at least one of its cells is
shaded — an ordinary clause. Rooms are rectangles, so a line
meets each room in exactly one contiguous segment, which makes the
minimal three-room windows easy to name: the last cell of one
segment, all of the next, and the first cell of the one after. Every
larger three-room window contains one of those, so this finite set says
everything the rule says. It depends only on the room layout, so it is
built once, before a single cell is decided:
| size | rooms | span clauses | avg length |
|---|---|---|---|
| 5×5 | 6.9 | 7.8 | 3.3 |
| 7×7 | 11.7 | 23.6 | 3.5 |
| 9×9 | 20.9 | 49.8 | 3.6 |
Once it is a clause list, generalised arc consistency on it is just unit
propagation, and the rule stops being exotic. What it does not stop being
is load-bearing. Three rule sets ship here — local
(adjacency, room numbers, connectivity — the puzzle as a player who forgot
rule 5 sees it), spans (the same plus the clauses), and
probe (singleton consistency on top). Measured over unique
boards generated with no solvability filter, so the last column
is not circular:
| size | local | spans | probe |
|---|---|---|---|
| 4×4 | 0% | 30% | 100% |
| 5×5 | 0% | 13% | 93% |
| 6×6 | 0% | 3% | 82% |
| 7×7 | 0% | 0% | 63% |
| 8×8 | 0% | 0% | 49% |
Zero, at every size. Not "weaker" — the local rules
finish nothing at all. A 900-position property test says the same thing
from the other side: the local set never decided a cell the span set
missed (0 of 900, and it is provably subsumed), while the span set decided
more in 846 of them.
And the rule carries the uniqueness too. Take the shipped 5×5 boards,
switch the span rule off in the validator, and count again:
only 1 of 60 stays unique, the median jumps to
978 solutions and the worst board to
12,915. The numbers on the board are not what pins
the answer down; the geometry is.
The last row is the honest one: unlike the previous puzzles in this
series, probing does not finish everything, so the shipped
generator carves against the rule set you pick — the
Level control is a real knob, not a label. Soundness is pinned by
an independent brute-force solver that shares no code with the
propagators and re-derives the span rule the slow way, by walking maximal
white runs; four counters must agree on solution counts, and a
disagreement is how a broken compilation gets caught. 103 tests.