Tapa
Shade cells to build one connected wall that never fills a 2×2 block. A clue lists the lengths of the runs of shaded cells in the ring of eight around it, read cyclically, in any order — and a clue cell is never shaded itself. Click to cycle shaded → dot → blank; right-click plants a dot directly.
A 3 and a 1 1 1 put the same
number of shaded cells in the ring. They are different clues, because
the clue is not a function of how many neighbours are shaded —
it is a function of where they are. Over a full eight-cell ring
there are 23 distinct clues but only
9 possible totals: the clue partitions all 256 ring
patterns 23 ways, the total only 9. Knowing the total throws information
away, and you can price the loss exactly — summed over all 23 clues the
satisfying tables hold 256 patterns where the count relaxation would
allow 984, so the table is 26% the size. For
1 1 1 1 it is 2 patterns out of 70:
3%.
That matters because of what happened in the previous puzzle in this
series. In Thermometers, per-line enumeration — the same idea as
the table here — provably collapsed into plain interval arithmetic,
because the variable was a water level moving in unit steps and its
domain never grew holes. Tapa is the mirror image. The ring constraint's
satisfying set is an arbitrary subset of {0,1}8, full of
holes, so enumeration is the only rule that sees anything. Both are
shipped here, and the same 900-position property test settles it: the
count relaxation never saw a cell the table missed
(0 of 900 — it is provably subsumed), and the table saw more in
585 of them, +5.7 cells per position on average.
Three rule sets are implemented and cross-checked, each with the 2×2
rule and connectivity (unreachable pockets get dotted; a cell whose
removal would cut the wall in two gets shaded). Measured over unique
boards generated without any solvability filter:
| size | count relaxation | ring tables | probing |
|---|---|---|---|
| 4×4 | 14% | 65% | 100% |
| 6×6 | 2% | 31% | 100% |
| 8×8 | 0% | 12% | 100% |
Probing — assume a cell shaded, propagate, erase it if the board dies — finished every one of the 860 unique boards sampled, so every board here is solvable without guessing and the Hint button names the rule that fired: one clue's table, the 2×2 rule, connectivity, the chained fixpoint, 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. 77 tests.