Kurotto in the browser with four rule sets inside. Some cells of
an n×n grid carry a circled number and are never shaded. Shade any of
the remaining cells so that each circled number equals the total size
of the shaded blocks — orthogonally connected groups — sharing an
edge with that circle. That is the whole rule book. Puzzle #37 in the
solver series.
Demo: https://sen.ltd/portfolio/kurotto/
Repo: https://github.com/sen-ltd/kurotto
I picked this puzzle because it has no global rule at all.
The legal boards are… all of them
Strip the circles away and ask what a finished board can look like:
anything. No connectivity rule, no 2×2 ban, no border rule. All 16
shadings of the 2×2 board are valid, all 512 of the 3×3 — checked
exhaustively. The configuration space is the full hypercube, 2^(n²)
boards.
This series has spent entries hunting bijections between legal boards and
samplable objects — Yin-Yang's ridge paths, Cave's lattice cycles. Kurotto
is the degenerate end of the hunt: the bijection is the identity, and a
uniform sample is n² coin flips. The generator needs no theorem.
In exchange, everything the earlier puzzles got for free from
connectivity theorems, Kurotto must buy with arithmetic alone — and the
only global force left in the puzzle is the demand that the answer be
unique.
Four rungs — but not four theorems
A circle's clue is bracketed by two flood fills. The floor: the shaded
cells already attached to it. The ceiling: everything still reachable
through non-white cells (its potential region). The floor only rises,
the ceiling only falls.
| level | rule |
|---|---|
sum |
clue at the ceiling → the whole potential region shades; clue at the floor → the frontier seals white (a 0-clue is this with an empty floor) |
door |
a circle below its clue must grow, and every growth shades a frontier cell; one frontier cell means a forced shade |
echo |
assume one color on one cell, re-run every circle's floor/ceiling arithmetic, drop the assumption if some clue falls out of its bracket |
probe |
assume one color on one cell, run the rules below to a fixpoint, drop the assumption on contradiction |
Unlike the earlier ladders these are not four different theorems — they
are one theorem probed harder: the same two floods read directly, at
the frontier, under a hypothesis, under a propagated hypothesis. The
ablation table makes this brutally visible.
The law breaks
Measured on 300 raw generator boards per size (circle density 0.8 over the
white cells, unfiltered — fraction finished by the fixpoint alone, no
guessing):
| board | sum | +door | +echo | +probe | unique answers in the raw stream |
|---|---|---|---|---|---|
| 6×6 | 21.7% | 48.7% | 56.3% | 62.0% | 63.3% |
| 8×8 | 10.7% | 33.0% | 43.0% | 52.0% | 52.7% |
| 10×10 | 2.0% | 21.7% | 33.0% | 42.0% | 42.3% |
In every earlier puzzle of this series, the probe column equaled the
uniqueness column at every size: a sound fixpoint can't decide a cell two
answers disagree on, so uniqueness is a ceiling — and the ladder always
sat exactly on it.
Kurotto is the first puzzle where it doesn't. 4 of the 190 unique 6×6
boards, 2 of 158 at 8×8, 1 of 127 at 10×10 are unique — yet no chain of
single-cell assumptions finishes them. Confirmed independently: a brute
force that shares no code with the ladder (pruned only by the definitional
floor/ceiling restatement, every leaf scored by a standalone validator)
counts exactly one solution on each gap board, in 906–3,078 nodes
(tools/gapcheck.mts).
Why here? Because block arithmetic can hold two reshuffling ambiguities
in superposition: every single cell survives both hypotheses alone,
and only a pair of assumptions dies. The uniqueness proof lives outside
the world a one-cell probe can see.
Ablation: remove anything, nothing happens
| board | full | −sum | −door | −echo |
|---|---|---|---|---|
| 6×6 | 62.0% | 61.7% | 62.0% | 61.7% |
| 8×8 | 52.0% | 52.0% | 52.0% | 50.7% |
| 10×10 | 42.0% | 42.0% | 42.0% | 39.0% |
In Cave, removing the one clue-reading rule collapsed everything to 0.0%.
Kurotto has no "only rule that reads the clues" — every rung reads the
same arithmetic, so every rung below probe is nearly redundant against
the rest. Fifth entry in a row with redundant-but-not-useless rules, but
this time it's not one rule — it's the ladder's whole lower half shadowing
itself. The rungs still earn their keep: they define genuine difficulty
grades in the shipped bank, and they are the deductions a human actually
makes, in that order.
Where the ambiguity lives — the oracle needed three certificates
A circle can only speak about its potential region. A free cell outside
every region is a free second solution before a single deduction is made —
so uniqueness first demands full coverage. Then two assassins remain:
silent flips (one cell whose lone flip changes no sum) and — new in
this puzzle — silent pair flips: two cells whose joint flip reshuffles
blocks without any circle noticing.
The uniqueness oracle behind every table reads all three certificates
straight off the drawn solution before it ever searches; only the
nearly-unique survivors go to the counting search. Before the pair-flip
check existed, naive counting stalled for minutes per board — the
measuring instrument itself had to learn the puzzle's ambiguity
structure. Guess-cap overflows across all sections: zero.
Circle density sweep at 10×10, 150 raw boards per point:
| density | unique | no-silent-flip ceiling | echo-solved | sum-solved |
|---|---|---|---|---|
| 0.30 | 0.0% | 4.7% | 0.0% | 0.0% |
| 0.42 | 0.0% | 18.0% | 0.0% | 0.0% |
| 0.54 | 2.0% | 49.3% | 0.0% | 0.0% |
| 0.66 | 11.3% | 79.3% | 5.3% | 0.0% |
| 0.78 | 36.0% | 90.0% | 28.0% | 0.7% |
| 0.90 | 67.3% | 100.0% | 60.7% | 20.0% |
Two honest surprises. The coverage ceiling never binds: even at
density 0.30, all 150 boards were fully covered — empty-board floods
reach nearly everything, so the "cell no circle can see" assassin only
appears in far cornerier regimes than a random stream produces. And where
Cave's uniqueness hugged its flip ceiling all the way up, Kurotto's
crawls far below it: at density 0.54 the single-flip ceiling allows
49.3% and reality delivers 2.0%. Kurotto's ambiguity is dominated by
multi-cell block reshuffles — the same structure that broke the
probe-equals-uniqueness law. In the series' coordinate system, Kurotto is
Yin-Yang's kind of hunger, taken to the extreme.
Search effort to certify uniqueness
On boards that pass all three certificates (100 per size):
| board | rule set | median guesses | mean |
|---|---|---|---|
| 6×6 | sum | 4 | 29.7 |
| 6×6 | door | 0 | 8.3 |
| 6×6 | echo | 0 | 3.1 |
| 6×6 | probe | 0 | 0.5 |
| 10×10 | echo | 0 | 2.3 |
| 10×10 | probe | 0 | 0.0 |
Once echo propagates, proving uniqueness is barely a search at all — a
median of 0 guesses at 10×10. The weak levels' searches explode with the
free-cell count past 6×6, so they never see the larger stream. The
shipped bank pins a 10×10 board with a median of 27–35 circles, where a
random reveal needs ~48 (density 0.84 over the white cells) for a
coin-flip's chance.
Verification
- Solution counts. Brute force vs propagating search at each of the four rule levels, on every board where the brute force is feasible: 520/520 (board, level) pairs agree.
- Exhaustive anchors. 16/16 shadings of the circle-free 2×2 validate, 512/512 of the 3×3 — there really is no hidden rule. A hand-enumerated corner circle splits its 8 completions 2/2/3/1 by sum; the brute force reproduces it.
- The gap. Every probe-stuck unique board behind the headline claim is re-counted by the brute force.
All 26 tests: npm test.
Play it
The Hint button fills in the first cell the selected level can prove, one
deduction at a time. Every shaded block of two or more wears its current
size in the corner — the number a Kurotto player keeps recounting.
Circles turn green when exactly satisfied and sealed, red when they can no
longer be met.
Next up: another puzzle with a solver inside.
SEN LLC — software development experiments, shipped in public.
More: https://sen.ltd/portfolio/

Top comments (0)