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

shaded — part of some square ruled out — you have decided it stays white proved — what the selected rung already knows number — never shaded, never zero

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:

boardcellscells that could carry a numbershare of the gridnumbers actually printed
6×6362054.6%10 (48.4% of them)
8×8643655.8%16 (44.8% of them)
10×101005656.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 cellanswers left (median)sharesharpestbluntest
a number may be printed here15,49852.6%31.6%58.5%
…and here is its value4961.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.

gridanswersfrontier statestime
2×2541 ms
3×343111 ms
4×4739292 ms
5×529,459838 ms
6×62,804,10523722 ms
7×7612,730,38568573 ms
8×8308,954,964,8341,977314 ms
9×9357,290,510,534,5205,7081,408 ms
10×10946,392,348,293,841,28716,6316,764 ms
11×115,735,690,533,358,080,167,87448,50528,655 ms
12×1279,483,030,837,772,295,689,698,468142,595138,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 read4×46×68×8cost at 8×8
both clauses7392,804,105308,954,964,834
the white cells may split1,5589,286,8721,605,367,953,9845.20×
blocks need not be squares11,5061,732,082,74151,016,818,604,894,742165,127×
neither clause65,53568,719,476,73518,446,744,073,709,551,61559,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 2 − 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:

gridsquares capped at 1×1, splits allowedA006506
1×12agrees
2×27agrees
3×363agrees
4×41,234agrees
5×555,447agrees
6×65,598,861agrees
7×71,280,128,950agrees
8×8660,647,962,955agrees

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.

gridmean shadedshare of the gridmean squares1×1 per answer2×2 per answer3×3 per answer4×4 per answer5×5 per answer
4×43.9024.4%3.132.890.235.4e-31.4e-3
5×55.9223.7%4.824.480.330.011.4e-43.3e-5
6×68.5023.6%6.976.480.460.023.6e-41.0e-6
7×711.5623.6%9.488.830.630.023.9e-44.0e-6
8×815.1123.6%12.4111.550.830.034.6e-44.0e-6
9×919.1623.7%15.7314.641.050.035.7e-44.0e-6
10×1023.6923.7%19.4418.101.300.046.8e-45.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.

boardexact mean shadedsampler, over drawsshipped boardsshipped ÷ exact
6×68.4958.485 (20,000)9.8331.158×
8×815.11415.152 (20,000)17.2781.143×
10×1023.69023.607 (3,000)26.9171.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:

boarddrawsunique with every legal cell numberedratelegal cells (mean)
6×630010535.0%17.8
8×83007424.7%32.8
10×10120119.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 kept6×6 unique8×8 unique
1–80 / 864 (0.0%)0 / 864 (0.0%)
92 / 108 (1.9%)0 / 108 (0.0%)
101 / 108 (0.9%)0 / 108 (0.0%)
119 / 108 (8.3%)0 / 108 (0.0%)
1210 / 108 (9.3%)0 / 108 (0.0%)
1319 / 108 (17.6%)0 / 108 (0.0%)
1427 / 108 (25.0%)0 / 108 (0.0%)
1545 / 108 (41.7%)0 / 108 (0.0%)
1663 / 108 (58.3%)1 / 108 (0.9%)
1776 / 105 (72.4%)0 / 108 (0.0%)
1890 / 99 (90.9%)0 / 108 (0.0%)
1988 / 90 (97.8%)2 / 108 (1.9%)
2057 / 57 (100.0%)2 / 108 (1.9%)
2121 / 21 (100.0%)1 / 108 (0.9%)
2212 / 12 (100.0%)5 / 108 (4.6%)
236 / 6 (100.0%)10 / 108 (9.3%)
243 / 3 (100.0%)9 / 108 (8.3%)
2513 / 108 (12.0%)
2624 / 108 (22.2%)
2726 / 108 (24.1%)
2832 / 108 (29.6%)
2945 / 108 (41.7%)
3057 / 108 (52.8%)
3165 / 105 (61.9%)
3269 / 102 (67.6%)
3384 / 102 (82.4%)
3484 / 96 (87.5%)
3571 / 78 (91.0%)
3661 / 63 (96.8%)
3732 / 33 (97.0%)
3824 / 24 (100.0%)
399 / 9 (100.0%)
403 / 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

rung6×6 cells settled6×6 finished8×8 cells settled8×8 finished10×10 cells settled10×10 finished
shape26.1%0/3624.9%0/3624.2%0/36
clue38.7%1/3641.5%0/3646.8%0/36
prune54.7%2/3658.4%0/3665.2%0/36
white56.7%8/3664.8%6/3668.3%3/36
probe100.0%36/36100.0%36/36100.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 allowed6×6 branch points (median)6×6 worst8×8 branch points (median)8×8 worst
up to shapepast the cap on 35 of 36past the cap on 36 of 36
up to clue8387371,062
up to prune53124997
up to white214734

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

boardnumbers erased one at a timeanswers afterwards (median)at leaststill unique
6×63384120
8×85735120

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

misreadingboardintended answer still legalanswers (median, capped at 12)still unique
the white cells may split6×636/36410/36
a number counts touching cells6×615/36011/36
no numbers at all6×636/36120/36
the white cells may split8×836/36103/36
a number counts touching cells8×85/3603/36
no numbers at all8×836/36120/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.