Usowan in the browser with a five-rung solver. Shade cells so that no
two shaded cells touch side by side and every white cell stays connected; a
number counts the shaded cells above, below, left and right of it — except
that in every bold-lined region exactly one number is wrong, and nobody
says which. That single sentence stops a number from being a monotone
constraint. A region's rule is exactly one of my numbers is wrong, so an
extra number is an extra candidate liar, and a shading that used to be
rejected for having nothing wrong in that region becomes legal the moment
there is something new to be wrong about. Measured on every board this repo
ships: of the 2,391 true numbers that can be added, 55 hand the board a
second answer, and on 20 of the 36 10×10 boards there is at least one cell
where writing down something true breaks the puzzle. Also measured: a clue
printing its own degree — a 4 in the middle — is always the lie (0.00% of
all 1,646,096 6×6 answers, exactly; drop the connectivity clause and it comes
back at 1.47%, so the culprit is the white cells are connected). The answer
space is counted exactly by a broken-profile sweep — 118,930,018,898 at 8×8,
2.18×10^53 at 16×16 in 55.5 s — which degenerates to OEIS
A006506 when the connectivity clause is dropped
and reproduces every published term. Name the liars and the board collapses
into an ordinary puzzle, which makes an 8×8 a stack of 13,824 ordinary
puzzles, exactly one of which is solvable. 46 tests. Puzzle #67 in the solver
series.
Live demo: https://sen.ltd/portfolio/usowan/
Source: https://github.com/sen-ltd/usowan
The rules
Usowan is a Nikoli puzzle.
- Shade some cells.
- No two shaded cells are orthogonally adjacent.
- All the white cells are orthogonally connected.
- A number counts the shaded cells directly above, below, left and right of it. A numbered cell is never shaded.
- Except that inside each region bordered by bold lines there is one, and only one, wrong number.
I read Nikoli's own page as the
primary source before writing a line, and cross-checked it against
Cross+A.
The number shows how many colored cells are next to a cell, vertically and
horizontally. However, in each rectangle bordered by bold lines, there is one
(and only one) wrong number.
That one (and only one) wrong number is the whole article. It means a Usowan
clue is never the sentence "my count is v". It is "my count is v, unless I
am my region's liar, in which case my count is anything but v" — and the
second half is still information.
One of the 36 shipped 6×6 boards (| and - are region borders, # is
shaded):
the board the answer
2 . 2 1|. . 2 # 2 1|# .
- - - - - - - -
.|. . 2 .|. .|. # 2 .|.
- - - - - - - - - -
2 .|. 1|. . 2 .|. 1|# .
- -
. .|1|1 . 1 # .|1|1 . 1
- - - - - -
2|2 . .|. . 2|2 . #|. #
- - - -
. .|0 . .|2 # .|0 . .|2
13 numbers, 6 regions, exactly one answer — and 6 of those 13 numbers are
lies.
Adding a true number can add answers
The strangest result first.
In Nurikabe, in Slitherlink, in every other shading puzzle: print one more
correct clue and the answer set can only shrink. More constraints, fewer
solutions. Setters lean on that monotonicity constantly — if the board is not
unique yet, add another clue.
Usowan breaks it. A region's rule is exactly one of my numbers is wrong, so
adding a number also adds one more thing that is allowed to be wrong. A
shading that used to be rejected — "this region has zero wrong numbers, so it
is not an answer" — becomes legal the instant a new number appears that it can
be wrong about.
I measured it directly on the shipped bank. Take a board, pick a white cell that
prints nothing, and print its honest count on it. The intended answer always
stays legal, because the region keeps its original liar. Everything else is up
for grabs.
| board | true numbers added | that give the board a second answer | that leave it unique but out of reach of the ladder | harmless | boards with at least one such cell |
|---|---|---|---|---|---|
| 6×6 | 425 | 9 (2.1%) | 0 (0.0%) | 416 | 7/36 |
| 8×8 | 760 | 14 (1.8%) | 4 (0.5%) | 742 | 13/36 |
| 10×10 | 1,206 | 32 (2.7%) | 2 (0.2%) | 1,172 | 20/36 |
Across all 2,391 additions, 55 give the board a second answer and 6 more
push it out of the ladder's reach. On 20 of the 36 10×10 boards there is at
least one cell where writing down something true breaks the puzzle.
This bites the implementation too. The generator draws a uniform answer, plants
one random lie per region, prints the honest count on every other white cell of
that region, and then rubs honest numbers out for as long as the ladder can
still close the board. That minimisation cannot be a single pass. A number
that is load-bearing while its neighbours are still printed can become removable
once they are gone — deleting a neighbour removes a candidate liar, which makes
the region rung stronger. I wrote it as one pass first, and the test "every
surviving honest number is load-bearing" is what caught it.
Every number is two statements and you are not told which
The entire answer space of a 6×6 board fits in memory: 1,646,096 shadings
satisfy "no two shaded cells touch" and "the white cells are one sheet". Walk
all of them, ask how many shaded cells sit beside a given cell, and both readings
of every printed value fall out exactly.
| a number in the middle of a 6×6 printing | share of the answer space where it is honest | …and where it is the lie |
|---|---|---|
| 0 | 45.58% | 54.42% |
| 1 | 34.70% | 65.30% |
| 2 | 16.56% | 83.44% |
| 3 | 3.16% | 96.84% |
| 4 | 0.00% | 100.00% |
The ranking is exactly inverted between the two readings. The sharpest
number that can be true is 3: it survives in only 3.16% of the space. Read the
same 3 as the lie and it rules out almost nothing, leaving 96.84%. A 0 is the
blunt instrument honestly (45.58%) and the sharpest one as a lie (54.42%).
The board never says which reading applies. So every number in front of you is
simultaneously the strongest and the weakest thing on the grid, and none of them
is usable until you have worked out which one in this region is lying.
A 4 is a lie on sight, and the connectivity clause is why
The last row of that table is not a rounding. It is exactly zero.
A clue printing as many as it has neighbours — a 4 in the middle, a 3 on an
edge, a 2 in a corner — could only be honest if every one of its neighbours were
shaded. Its own cell is white, because numbered cells always are, so it would
then have no white neighbour at all. The board has other white cells (every
numbered cell is one), so the white sheet would be torn. The clue therefore
cannot be honest, which makes it its region's liar.
The nice part is what it does and does not tell you. As the liar it only says
"my count is not 4", which the connectivity clause already guaranteed — so it
says nothing whatsoever about its own four neighbours. What it settles is that
every other number in its region is honest.
That the white-sheet clause is the culprit, rather than the no-touching one, is
measurable: count the same 6×6 space twice.
| a clue printing its own degree | share of the space, white cells one sheet | share, only the no-touching clause |
|---|---|---|
| middle cell (4 neighbours) printing 4 | 0.00% | 1.47% |
| edge cell (3 neighbours) printing 3 | 0.00% | 4.14% |
| corner (2 neighbours) printing 2 | 0.00% | 9.67% |
Configurations that are perfectly ordinary under the adjacency clause alone
vanish completely the moment white has to stay connected.
The generator neither seeks these clues out nor avoids them — it picks each
region's liar at random and gives it a random wrong value — so how often they
appear is a property of the genre. Of the 1,393 lies across the 108 shipped
boards, 404 (29.0%) announce themselves this way.
A board is a stack of ordinary puzzles
Name one number per region as the liar and Usowan collapses into an ordinary
shading puzzle: the named clue is known false, every other clue is honest,
nothing is hidden.
So a board whose regions carry k₁, k₂, … numbers is k₁·k₂·… ordinary puzzles
superimposed.
| board | ordinary puzzles superimposed (median) | fewest | most |
|---|---|---|---|
| 6×6 | 216 | 48 | 864 |
| 8×8 | 13,824 | 864 | 124,416 |
| 10×10 | 2,488,320 | 110,592 | 37,324,800 |
Since the board has exactly one answer, exactly one of those readings is
solvable and the rest are contradictions. Which clause finds them is the
measurable part — here are all 10,335 readings of the 36 6×6 boards:
| what rules out a reading | readings | share |
|---|---|---|
| the board alone, with no number read | 0 | 0.00% |
| the numbers as bounds | 10,290 | 99.56% |
| the region's own disjunction, solved exactly | 1 | 0.01% |
| the white cells being one sheet | 8 | 0.08% |
| nothing short of a full search | 0 | 0.00% |
| nothing — this one is the answer | 36 | 0.35% |
99.6% die to plain arithmetic. Only 9 readings out of 10,335 need one of the
two structural clauses. The difficulty of Usowan is not in any individual
reading; it is entirely in the superposition. Once you know who is lying, what
is left is an easy puzzle — and now that intuition has a number on it.
Counting the answer space exactly
Strip every number away and an "answer" is just a set of cells that are pairwise
non-adjacent and whose complement is connected. src/count.ts counts those
exactly with a broken-profile sweep: one cell at a time, carrying a frontier
that records, per column, whether the cell is shaded and — if white — which
white component it currently belongs to. Row-major on a planar grid means the
components never interleave, so the state count stays small.
| grid | answers | without the white-sheet clause | what the sheet costs | frontier states | time |
|---|---|---|---|---|---|
| 4×4 | 562 | 1,234 | 2.19× | 18 | 1 ms |
| 6×6 | 1,646,096 | 5,598,861 | 3.40× | 77 | 3 ms |
| 8×8 | 118,930,018,898 | 660,647,962,955 | 5.55× | 339 | 16 ms |
| 10×10 | 208,786,414,361,204,882 | 2,030,049,051,145,980,050 | 9.72× | 1,517 | 114 ms |
| 12×12 | 8,821,565,703,462,781,281,195,276 | 162,481,813,349,792,588,536,582,997 | 18.4× | 6,882 | 771 ms |
| 14×14 | 8,951,629,622,004,424,856,628,885,578,891,048 | 3.39×10^35 | 37.8× | 31,608 | 7.4 s |
| 16×16 | 218,089,903,875,578,572,215,458,113,377,720,907,499,015,212 | 1.84×10^46 | 84.4× | 146,604 | 55.5 s |
The clause the rules spend four words on — all the white cells are connected —
turns out to be the expensive one, and it gets steadily more expensive as the
board grows: 2.19× at 4×4, 5.55× at 8×8, 84.4× at 16×16.
Searching the OEIS for the left column in September 2026 returns nothing. The
right column is somebody else's sequence, which makes it a check rather than a
claim: drop the connectivity clause and what is left is the independent vertex
sets of the grid graph, A006506. The sweep
reproduces every published term with no special-casing — same code path, one
flag — and the tests assert it.
The shading hugs the border, exactly
Run the same sweep forwards and then backwards and every frontier state learns
how many answers can still be finished from it. Forward weight times backward
count is the number of answers passing through, so the probability that a given
cell is shaded comes out exactly, over the whole space rather than a sample.
| board | answers | corner | edge | centre | corner ÷ centre |
|---|---|---|---|---|---|
| 6×6 | 1,646,096 | 31.18% | 22.50% | 21.08% | 1.48× |
| 8×8 | 118,930,018,898 | 31.06% | 21.64% | 20.69% | 1.50× |
| 10×10 | 208,786,414,361,204,882 | 31.05% | 21.76% | 20.83% | 1.49× |
| 12×12 | 8,821,565,703,462,781,281,195,276 | 31.05% | 21.96% | 20.88% | 1.49× |
Both clauses push the same way. A shaded cell in the middle has to keep four
neighbours white where a corner keeps two, and it has far more ways to pinch the
white sheet in two — a shaded corner can only ever cut off the corner itself.
The border is the cheap real estate, and the answer space knows it long before
any number is printed.
The generator draws from that same machine: walk the frontier forwards with each
choice weighted by how many finished answers it leaves reachable. No rejection,
no retries. That the draw is uniform is checked rather than assumed.
| board | draws | worst per-cell gap against the exact marginals |
|---|---|---|
| 6×6 | 200,000 | 0.293% |
| 8×8 | 100,000 | 0.243% |
| 10×10 | 40,000 | 0.525% |
The ladder
-
cell— the board with no number read at all. A numbered cell is white; the four neighbours of a shaded cell are white. That is the whole rung. -
count— the numbers as bounds and as liar bookkeeping. Per region, work out which clues could still be the liar (a clue whose value is out of reach is disqualified; so is one that has already come true). Any clue that is honest under every surviving reading gets saturated. If only one candidate liar remains, its count is forced to miss the number it prints. -
region— stop approximating the disjunction and solve it. Take the union of the region's clue neighbourhoods, enumerate every shading of it that keeps shaded cells apart and leaves exactly one number wrong, keep what they agree on. -
connect— the white cells are one sheet. An unknown cell cut off from every white cell can never be white, so it is shaded; an unknown cell whose removal would tear the sheet can never be shaded, so it is white. One Tarjan pass finds every such cell at once. -
probe— assume a cell, run the cheaper rungs, drop the assumption if the board dies.
| rung | 6×6 settled | 6×6 finished | 8×8 settled | 8×8 finished | 10×10 settled | 10×10 finished |
|---|---|---|---|---|---|---|
cell |
46.8% | 0/36 | 46.3% | 0/36 | 46.0% | 0/36 |
count |
78.5% | 4/36 | 80.7% | 1/36 | 79.5% | 0/36 |
region |
95.7% | 22/36 | 96.1% | 14/36 | 96.6% | 9/36 |
connect |
100.0% | 36/36 | 100.0% | 36/36 | 100.0% | 36/36 |
probe |
100.0% | 36/36 | 100.0% | 36/36 | 100.0% | 36/36 |
cell settling 46% before reading anything is not cleverness: roughly 46–47% of
the grid is numbers, and a numbered cell is white by definition. The shipped
boards print a median of 17 numbers on a 6×6, 30 on an 8×8, 46 on a 10×10.
The same rungs priced as pruning
Run the complete search but only allow propagation up to a given rung between
branch points, and count the branch points. The ceiling is 200,000.
| propagation allowed | 6×6 median | 6×6 worst | 8×8 median | 8×8 worst | 10×10 median | 10×10 worst |
|---|---|---|---|---|---|---|
up to cell
|
29,123 | 124,127 | capped out | 200,001 (36 capped) | capped out | 200,001 (36 capped) |
up to count
|
2 | 70 | 6 | 317 | 11 | 412 |
up to region
|
0 | 14 | 1 | 135 | 3 | 35 |
up to connect
|
0 | 0 | 0 | 0 | 0 | 0 |
The gap between the first two rows is the genre. Without the numbers a 6×6 takes
a median of 29,123 branch points; with the numbers read only as bounds, 2. The
count rung does not know which number is lying — it only knows which ones
could be — and that alone is four orders of magnitude. From 8×8 up, the bottom
rung does not finish inside the ceiling on a single board.
The misreadings split two and two
| misreading | board | intended answer still legal | answers (median, capped at 12) | still unique |
|---|---|---|---|---|
| a region may have no wrong number | 6×6 | 36/36 | 2 | 14/36 |
| every number is honest | 6×6 | 0/36 | 0 | 0/36 |
| the board carries one lie, not each region | 6×6 | 0/36 | 0 | 0/36 |
| white may connect through a corner | 6×6 | 36/36 | 1 | 22/36 |
| a region may have no wrong number | 8×8 | 36/36 | 4 | 8/36 |
| every number is honest | 8×8 | 0/36 | 0 | 0/36 |
| the board carries one lie, not each region | 8×8 | 0/36 | 0 | 0/36 |
| white may connect through a corner | 8×8 | 36/36 | 2 | 13/36 |
| a region may have no wrong number | 10×10 | 36/36 | 5 | 4/36 |
| every number is honest | 10×10 | 0/36 | 0 | 0/36 |
| the board carries one lie, not each region | 10×10 | 0/36 | 0 | 0/36 |
| white may connect through a corner | 10×10 | 36/36 | 4 | 9/36 |
In every other puzzle in this series the misreadings were all generous — they
only ever added answers, so the intended answer stayed legal and nothing looked
wrong until the very end. Usowan splits two and two. The generous pair behaves
as usual. The strict pair — reading every number as honest, or reading the board
as carrying one lie in total instead of one per region — makes the intended
answer illegal on all 36 boards at every size, because a board with 7 regions
is already carrying 7 lies.
That is the better failure mode. Those players do not wander into a second
answer; they get stuck, and getting stuck is something you notice.
Implementation notes
-
Packing the frontier. One nibble per column: 0 = shaded, 1..k = white
component label, 15 = no cell yet. The label count can never exceed
ceil(C/2)+1— the frontier is a prefix of row r and a suffix of row r−1, and consecutive white cells inside one row are the same component — which is 11 at C = 20, so a nibble is always enough. Up to twelve columns the whole state fits in a double and the Map is keyed by a number; beyond that the key is a short string, which costs about a third of the speed and buys eight more columns. - Sealing a component. When a shaded cell replaces the cell above and that component has no other frontier representative, it can never be extended again. That is legal only if it is the last component standing, and after it no cell may be white. One bit expresses "the white cells are one region" exactly.
- Connectivity as one pass. Flood-filling per candidate cell turned the test suite into minutes on 100-cell boards. Tarjan's articulation points in a single DFS, plus "does the severed subtree contain a white cell", does the whole rung at once.
- Minimise to a fixed point, for the reason above. Usowan clues are not monotone, so one pass does not produce a locally minimal board.
- Every number on the page and in the README is generated by
tools/notes.mtsout ofcounts.jsonandstats.json. Nothing is transcribed by hand. The 46 tests re-derive, for all 108 shipped boards: the answer is legal, it is unique, the ladder closes the board with no guessing, each region has exactly one wrong number, the lie cannot be deleted, and every surviving honest number is load-bearing.
Takeaway
The sentence that makes Usowan — exactly one number per region is wrong — is
not difficulty garnish. It changes what a number means:
- a clue is a superposition of two statements whose sharpness ranking is exactly inverted;
- a clue printing its own degree is a lie on sight, says nothing about its own neighbours, and settles every other number in its region;
- and printing one more true number can hand the board a second answer.
The last one is the one that matters. The setter's most ordinary tool — if it
is not unique, add another clue — simply does not work here.
Live demo: https://sen.ltd/portfolio/usowan/
Source: https://github.com/sen-ltd/usowan

Top comments (0)