Tasquare
Shade some cells. Every connected block of shaded cells must be a square — so no two squares may touch side by side, or they would fuse into something that is not one. The cells you leave unshaded must stay in one connected region. A number is the total area of the squares that touch its cell by a side, and a numbered cell is never shaded itself. The clause that shapes everything is the quiet one: a number must have something beside it, so 0 is never a legal clue, and a number can only be printed where the shading already reaches. Click a cell to shade it, again to rule it out, again to clear it.
the board
A number can only sit where the shading already touches
The reference implementation checks five things, and the fifth is the one people skip reading: every numbered cell has at least one shaded cell beside it. Put it next to the fourth — a number is the total area of the squares touching it — and it says something the board never prints. A clue of 0 cannot be legal: the fourth clause wants the total to be zero and the fifth wants it to be positive. So there is no way to write "nothing here", and a number is never merely arithmetic. Printing one is already the claim that the shading reaches this cell.
Which means a setter cannot put a number wherever they like. The cells that can carry one are exactly the outline of the shading, and on the shipped boards that is a minority of the grid:
| board | cells | cells that could carry a number | share of the grid | numbers actually printed |
|---|---|---|---|---|
| 6×6 | 36 | 20 | 54.6% | 10 (48.4% of them) |
| 8×8 | 64 | 36 | 55.8% | 16 (44.8% of them) |
| 10×10 | 100 | 56 | 56.1% | 25 (43.3% of them) |
So a Tasquare board leaks its answer twice: once through the numbers, and once through where the numbers are allowed to be. The second leak can be priced exactly. At 5×5 the whole answer space is 29,459 boards and fits in memory, so for every cell and every value it can carry, here is how much of that space survives:
| what you are told about one cell | answers left (median) | share | sharpest | bluntest |
|---|---|---|---|---|
| a number may be printed here | 15,498 | 52.6% | 31.6% | 58.5% |
| …and here is its value | 496 | 1.7% | 0.0068% | 35.1% |
A number's position alone keeps a median 52.6% of the answer space — it throws away nearly half of everything before you have read a digit. Reading the digit as well takes it to 1.7%. The value is worth about 31× more than the position, which is the sensible answer; the surprise is that the position is worth anything at all, because it is information the setter cannot withhold.
Put a whole shipped board's worth of positions together and the effect compounds. Take each 6×6 board here, rub out every digit but leave the numbers where they are, and count how many of the 2,804,105 answers could still have produced that arrangement: a median of 10,692, best 296, worst 101,016. The blank board has already done a 262× cut, for free, and the digits do the remaining 10,692-to-1.
How much room the genre has, to the last digit
An answer, before a single number is read, is a shading where every connected block is a square and the unshaded cells are one region. That is a countable object, and src/count.ts counts it exactly with a row-at-a-time profile sweep. Two facts make the rows cheap. Squares may not touch, so a maximal run of shaded cells inside one row is exactly one square's slice and its length is that square's side; and a square that started earlier occupies the very same columns in every row it covers. So the whole shaded structure fits in one small number per column — how many more rows the square above me still owes — and the white structure in the usual connectivity labels.
| grid | answers | frontier states | time |
|---|---|---|---|
| 2×2 | 5 | 4 | 1 ms |
| 3×3 | 43 | 11 | 1 ms |
| 4×4 | 739 | 29 | 2 ms |
| 5×5 | 29,459 | 83 | 8 ms |
| 6×6 | 2,804,105 | 237 | 22 ms |
| 7×7 | 612,730,385 | 685 | 73 ms |
| 8×8 | 308,954,964,834 | 1,977 | 314 ms |
| 9×9 | 357,290,510,534,520 | 5,708 | 1,408 ms |
| 10×10 | 946,392,348,293,841,287 | 16,631 | 6,764 ms |
| 11×11 | 5,735,690,533,358,080,167,874 | 48,505 | 28,655 ms |
| 12×12 | 79,483,030,837,772,295,689,698,468 | 142,595 | 138,904 ms |
The bottom row is a count of 79,483,030,837,772,295,689,698,468 objects arrived at in 138,904 ms across 142,595 frontier states. A depth-first search that shares no code with the sweep past the row generator reproduces the whole small corner it can reach, up to 5×5, which is how I know the sweep is not merely fast. Searching the OEIS in September 2026 for 1, 5, 43, 739, 29459, 2804105, 612730385 returns nothing.
Two clauses nobody prints, priced exactly
The rule has two structural clauses that appear nowhere on the board — every block is a square and the unshaded cells are one region — and the same sweep counts what the grid would allow without them. Both are things a player gets wrong on a first pass, and the numbers say which mistake matters.
| how the rule is read | 4×4 | 6×6 | 8×8 | cost at 8×8 |
|---|---|---|---|---|
| both clauses | 739 | 2,804,105 | 308,954,964,834 | — |
| the white cells may split | 1,558 | 9,286,872 | 1,605,367,953,984 | 5.20× |
| blocks need not be squares | 11,506 | 1,732,082,741 | 51,016,818,604,894,742 | 165,127× |
| neither clause | 65,535 | 68,719,476,735 | 18,446,744,073,709,551,615 | 59,706,903× |
The two are nowhere near the same size. Dropping the square clause multiplies the 8×8 answer space by 165,127×; dropping the white-region clause multiplies it by only 5.20×. Nearly all the structure in this genre is the word "square", and connectivity is a rounding error next to it.
Three of those four rows are sequences somebody else has already published, which is what makes them a check rather than a claim. With the square clause off and splits allowed, a board is any subset of the grid, so the row is 2n² − 1. With the square clause off but the white region kept, a board is a subset whose complement is connected — that is A059525, the connected induced subgraphs of the grid graph, and the sweep reproduces it to 284,374,318,545,830,329,487,309,785 at 10×10. And capping squares at 1×1 with splits allowed leaves exactly the independent sets of the grid graph, A006506:
| grid | squares capped at 1×1, splits allowed | A006506 |
|---|---|---|
| 1×1 | 2 | agrees |
| 2×2 | 7 | agrees |
| 3×3 | 63 | agrees |
| 4×4 | 1,234 | agrees |
| 5×5 | 55,447 | agrees |
| 6×6 | 5,598,861 | agrees |
| 7×7 | 1,280,128,950 | agrees |
| 8×8 | 660,647,962,955 | agrees |
That cap is also worth keeping under the real rules, because it answers "how often does a square bigger than one cell actually turn up". At 8×8, 118,930,018,897 of the 308,954,964,834 answers use nothing but 1×1 squares — 38.5%. So the genre's own name is a minority event on a bit over half of all boards, and a setter who wants a big square in the picture is already fishing.
What a typical answer looks like, exactly
The sweep carries two more accumulators than it needs to count, so the same pass returns the exact mean number of shaded cells and the exact number of squares of each side across the whole space — not a sample of it.
| grid | mean shaded | share of the grid | mean squares | 1×1 per answer | 2×2 per answer | 3×3 per answer | 4×4 per answer | 5×5 per answer |
|---|---|---|---|---|---|---|---|---|
| 4×4 | 3.90 | 24.4% | 3.13 | 2.89 | 0.23 | 5.4e-3 | 1.4e-3 | — |
| 5×5 | 5.92 | 23.7% | 4.82 | 4.48 | 0.33 | 0.01 | 1.4e-4 | 3.3e-5 |
| 6×6 | 8.50 | 23.6% | 6.97 | 6.48 | 0.46 | 0.02 | 3.6e-4 | 1.0e-6 |
| 7×7 | 11.56 | 23.6% | 9.48 | 8.83 | 0.63 | 0.02 | 3.9e-4 | 4.0e-6 |
| 8×8 | 15.11 | 23.6% | 12.41 | 11.55 | 0.83 | 0.03 | 4.6e-4 | 4.0e-6 |
| 9×9 | 19.16 | 23.7% | 15.73 | 14.64 | 1.05 | 0.03 | 5.7e-4 | 4.0e-6 |
| 10×10 | 23.69 | 23.7% | 19.44 | 18.10 | 1.30 | 0.04 | 6.8e-4 | 5.0e-6 |
A typical 10×10 answer shades 23.69 of its 100 cells into 19.44 squares, of which 18.10 are single cells and 1.30 are 2×2. Everything larger is rare and gets rarer fast. The far tail is small enough to check by hand, which is the nicest thing about it: across all 946,392,348,293,841,287 answers there are exactly 4 appearances of a 9×9 square and exactly 1 of a 10×10. Both are obvious once stated — a 9×9 has four places to sit and the leftover strip is entirely adjacent to it, so nothing else can be shaded; a 10×10 has one place and leaves no white at all — and both fall out of the same sweep that produced the twenty-digit number above.
The sampler is uniform. The shipped bank is not.
The generator does not build an answer greedily; it draws one uniformly from the whole space, by running the sweep forwards to find the reachable frontier states, backwards to learn how many boards each one can still finish, and then walking forwards again with each row weighted by what it leaves possible. The check that this works is the mean shaded count, which the sweep already knows exactly.
| board | exact mean shaded | sampler, over draws | shipped boards | shipped ÷ exact |
|---|---|---|---|---|
| 6×6 | 8.495 | 8.485 (20,000) | 9.833 | 1.158× |
| 8×8 | 15.114 | 15.152 (20,000) | 17.278 | 1.143× |
| 10×10 | 23.690 | 23.607 (3,000) | 26.917 | 1.136× |
The sampler lands on the exact mean at all three sizes, so it is doing what it claims. The shipped boards do not, and that gap is the interesting one: they are consistently busier than a fair draw, by 13.6% at 10×10. Nothing in the generator prefers busy answers. What prefers them is the uniqueness filter — more shading means a longer outline, a longer outline means more cells that may legally carry a number, and more legal cells means more information available to pin the board down. Selecting for solvable boards silently selects for crowded answers, and a setter who eyeballs a bank of Tasquare puzzles is not looking at a fair sample of the genre.
Which is also why the generator throws so much away. Numbering every cell that could legally carry a number is the most informative board an answer can produce, and it is usually still not a puzzle:
| board | draws | unique with every legal cell numbered | rate | legal cells (mean) |
|---|---|---|---|---|
| 6×6 | 300 | 105 | 35.0% | 17.8 |
| 8×8 | 300 | 74 | 24.7% | 32.8 |
| 10×10 | 120 | 11 | 9.2% | 51.4 |
At 10×10, 90.8% of maximally numbered boards still have a second answer. The shipped boards then go the other way: numbers are erased for as long as the board stays unique, which leaves a median of 10, 16, 25 numbers on the three sizes — between 43.3% and 48.4% of the cells that could have carried one.
The clue dial
Take a board's full clue set, keep a random subset of it, and ask whether what is left is still a puzzle. Uniqueness climbs with the number of numbers, so the genre has a dial — and it is a steep one with a flat run-up at the bottom.
| numbers kept | 6×6 unique | 8×8 unique |
|---|---|---|
| 1–8 | 0 / 864 (0.0%) | 0 / 864 (0.0%) |
| 9 | 2 / 108 (1.9%) | 0 / 108 (0.0%) |
| 10 | 1 / 108 (0.9%) | 0 / 108 (0.0%) |
| 11 | 9 / 108 (8.3%) | 0 / 108 (0.0%) |
| 12 | 10 / 108 (9.3%) | 0 / 108 (0.0%) |
| 13 | 19 / 108 (17.6%) | 0 / 108 (0.0%) |
| 14 | 27 / 108 (25.0%) | 0 / 108 (0.0%) |
| 15 | 45 / 108 (41.7%) | 0 / 108 (0.0%) |
| 16 | 63 / 108 (58.3%) | 1 / 108 (0.9%) |
| 17 | 76 / 105 (72.4%) | 0 / 108 (0.0%) |
| 18 | 90 / 99 (90.9%) | 0 / 108 (0.0%) |
| 19 | 88 / 90 (97.8%) | 2 / 108 (1.9%) |
| 20 | 57 / 57 (100.0%) | 2 / 108 (1.9%) |
| 21 | 21 / 21 (100.0%) | 1 / 108 (0.9%) |
| 22 | 12 / 12 (100.0%) | 5 / 108 (4.6%) |
| 23 | 6 / 6 (100.0%) | 10 / 108 (9.3%) |
| 24 | 3 / 3 (100.0%) | 9 / 108 (8.3%) |
| 25 | — | 13 / 108 (12.0%) |
| 26 | — | 24 / 108 (22.2%) |
| 27 | — | 26 / 108 (24.1%) |
| 28 | — | 32 / 108 (29.6%) |
| 29 | — | 45 / 108 (41.7%) |
| 30 | — | 57 / 108 (52.8%) |
| 31 | — | 65 / 105 (61.9%) |
| 32 | — | 69 / 102 (67.6%) |
| 33 | — | 84 / 102 (82.4%) |
| 34 | — | 84 / 96 (87.5%) |
| 35 | — | 71 / 78 (91.0%) |
| 36 | — | 61 / 63 (96.8%) |
| 37 | — | 32 / 33 (97.0%) |
| 38 | — | 24 / 24 (100.0%) |
| 39 | — | 9 / 9 (100.0%) |
| 40 | — | 3 / 3 (100.0%) |
Below 9 numbers no subset of any shipped board works at all, at either size. The last rows reach 100% by construction: these boards were chosen for being unique with every legal cell numbered.
The ladder
shape— every block is a square. Kept as a list of candidate squares: a square dies when one of its cells is ruled white or one of its side-neighbours is shaded. A cell no surviving square covers can never be shaded; when only one square can still be a shaded cell's block, that block is settled and everything it touches is white.clue— the numbers. A square can never touch a numbered cell from two sides at once — that would put the numbered cell inside it — so the four sides are independent and a clue is an exact four-way subset sum over the square areas still available on each side.prune— the same arithmetic, pushed back into the candidate list. A square no adjacent number can afford is struck out, and striking squares out can leave a cell with none at all.white— the unshaded cells are one region. Shading a cell that would cut the white region in two is illegal, which is the articulation points of the not-yet-shaded graph — one Tarjan pass answers it for every cell at once.probe— assume a cell, run the cheaper rungs, and drop the assumption if the board dies.
| rung | 6×6 cells settled | 6×6 finished | 8×8 cells settled | 8×8 finished | 10×10 cells settled | 10×10 finished |
|---|---|---|---|---|---|---|
shape | 26.1% | 0/36 | 24.9% | 0/36 | 24.2% | 0/36 |
clue | 38.7% | 1/36 | 41.5% | 0/36 | 46.8% | 0/36 |
prune | 54.7% | 2/36 | 58.4% | 0/36 | 65.2% | 0/36 |
white | 56.7% | 8/36 | 64.8% | 6/36 | 68.3% | 3/36 |
probe | 100.0% | 36/36 | 100.0% | 36/36 | 100.0% | 36/36 |
Propagation alone finishes every board at every size, so nothing here needs the search — but that is the top rung doing it. Below probe the numbers are carrying the board: the shape rung, which knows only that blocks are squares and reads no numbers at all, settles 24.2% of a 10×10. Rub every number off entirely and it settles 0 of 100 cells even with the probe rung running, which is to say nothing at all — unlike a loop genre, an empty Tasquare grid has no forced cells anywhere, because the all-white board is very nearly legal and only the "something is shaded" clause stops it.
The ladder, priced as pruning
Run the complete search but only let it propagate up to a given rung between branches, and count the branch points. The cap is 200,000.
| propagation allowed | 6×6 branch points (median) | 6×6 worst | 8×8 branch points (median) | 8×8 worst |
|---|---|---|---|---|
up to shape | past the cap on 35 of 36 | — | past the cap on 36 of 36 | — |
up to clue | 8 | 387 | 37 | 1,062 |
up to prune | 5 | 31 | 24 | 997 |
up to white | 2 | 14 | 7 | 34 |
This is the table to keep if you keep only one. The shape rung knows the whole structural half of the rule — every block is a square — and on its own it is not enough to finish a 6×6 inside 200,000 branch points on 35 of 36 boards. Add the numbers and an 8×8 falls to a median of 37. Push the same numbers back into the candidate squares and it falls again to 24; add the white-region clause and 7. The clause that is worth the most in the answer-space table is worth the least in this one, and the other way round.
No number on these boards is decoration
| board | numbers erased one at a time | answers afterwards (median) | at least | still unique |
|---|---|---|---|---|
| 6×6 | 338 | 4 | 12 | 0 |
| 8×8 | 573 | 5 | 12 | 0 |
Answer counts are capped at 12. Every board is locally minimal by construction and the test re-derives it.
Three ways to misread the board
| misreading | board | intended answer still legal | answers (median, capped at 12) | still unique |
|---|---|---|---|---|
| the white cells may split | 6×6 | 36/36 | 4 | 10/36 |
| a number counts touching cells | 6×6 | 15/36 | 0 | 11/36 |
| no numbers at all | 6×6 | 36/36 | 12 | 0/36 |
| the white cells may split | 8×8 | 36/36 | 10 | 3/36 |
| a number counts touching cells | 8×8 | 5/36 | 0 | 3/36 |
| no numbers at all | 8×8 | 36/36 | 12 | 0/36 |
Reading a number as the count of touching cells rather than the total area of the squares is the loud failure: the two agree only when every block beside the number is a single cell, so the intended answer stops being legal on 21 of 36 boards at 6×6 and the board simply stops working. Dropping the white-region clause is the quiet one — the intended answer stays legal on all 36 boards, because one region is a special case of several — and it costs uniqueness instead. That is the mistake worth guarding, and guarding it is exactly what the white rung does.