Notes & files
Measurements describe the whole board. Counts appear as proportions where meaningful; Notes identify each denominator. Hover a value or open the full record for exact counts and precision. A missing saved solution does not mean a board is unsolvable.
Arrow keys browse thumbnails. S toggles the solution. Drag either board to move the close-up; arrow keys move one cell, Shift moves ten.
Sampled solution lines join every nth visited cell and may cross walls. They summarize the route, not playable moves. Blue marks the start; orange marks the finish.
Close-up
Source & method notes
Scope & precision
Exact saved record · full precision and field names
Complete contents of this board’s stats.json, including its generation settings and validation record.
What this overlay counts
What this number misses
Compare the matching boards
These are the same boards selected by the filters on the left. Select a point or a saved board to inspect it above. Repeated outcomes stay in the results.
How sensitive is the selected metric to recipe and seed?
The separate 300×300 survey uses the same three seeds per recipe. These descriptive ranges help judge sensitivity; three seeds do not establish a stable distribution.
These ranges belong to 300-square survey boards. They do not describe the new sampling collections or other sizes. A range of recipe means and a median seed range measure different things; neither proves that a metric captures every visible style or predicts solving difficulty.
A guide to board characterization
A board is a vector of measurements and distributions. No aggregate “style score” or difficulty score is assigned here. These descriptors use only walls and open cells; the saved solution is used for validity checks.
1 · Occupancy
Open cells ÷ total cells. High occupancy means little wall area, but two boards can have equal occupancy and different arrangements. The pair below has the same 50% occupancy.
Metric illustrations only; these are not claimed to be valid Coil puzzles.
2 · Texture and density variation
Variance of open fractions in nonoverlapping 32×32 tiles. Low variance means local occupancy is fairly uniform. High variance means denser and emptier areas coexist. Partial edge tiles count equally with full tiles.
This differs from the overlapping 3×3/5×5 window statistic in the Python prototype. Scale matters: a 32-cell window measures the same cell scale on every board, but a different fraction of its total area.
3 · Open runs and orientation
A run is a maximal uninterrupted horizontal or vertical stretch of open cells. The histogram counts runs, not cells. The comparison’s mean-run value averages the horizontal and vertical means. A run is not necessarily a legal solution segment.
Axis bias = (horizontal open adjacencies − vertical open adjacencies) ÷ all open adjacencies. +1 means entirely horizontal; −1 entirely vertical. A quarter-turn swaps run distributions and reverses the sign.
4 · Wall shapes and open squares
Largest all-wall/all-open square is reported as its side length in cells, with an exact top-left coordinate witness in the JSON. The explorer shows its side as a percentage of the smaller board dimension for comparisons across sizes, including sorting and comparison plots. Its spectrum shows the percentage of possible placements at each side length that are all open or all wall; placements overlap.
A large all-open square is a geometric observation, not a room decomposition. A long thin wall can have a large area and a largest square of side one.
5 · Pillars, degrees, and interfaces
Isolated-wall fraction: wall cells with no orthogonally adjacent wall, divided by all wall cells. Degree: number of orthogonal open neighbours; degree-two fraction divides by open cells.
Interface per open cell = (4N − 2E) ÷ N. Exterior boundaries count as wall-facing sides. Degree two does not by itself force both edges into a solution: a cell may be an endpoint.
6 · Boundary and symmetry
The edge profile reports occupancy at each exact distance from the nearest border. Edge contrast subtracts overall occupancy from the outermost layer’s occupancy.
Adjusted symmetry = (observed agreement − chance) ÷ (1 − chance), where chance = p²+(1−p)². Zero is the independent-density baseline, not “no structure”; one is exact invariance. Uniform boards have undefined adjusted agreement. Reflections and half-turns are reported separately.
Original tweak-generator methods
The completeness proof, backward growth, uniform-board references and deeper edits are in the integrated research and board viewer. The quality policy and recipe study below describe the original tweak generator.
Tweak geometry
Len1 is the offset into the existing segment where a tweak starts. Len2 is the perpendicular excursion. Len3 is the parallel part. Names that combine these usually maximize an expression over candidates.
len1 favors later pivots. len23 favors excursion + parallel length. sz2-3 favors perpendicular over parallel length. They are preferences, not guaranteed final board traits.
Random, limited, and mixed choices
rndN scores each candidate with a random integer; ties retain the first maximum, so it is not uniform sampling of candidates. 1stlast2 chooses between extremes of length ordering. equal23 favors equal excursion and parallel lengths.
2lim10 gives a score bonus below a length threshold; that is distinct from an enforced geometric cap or --lim, which limits candidate enumeration.
Segment ordering
First and Last choose earlier/later segments in the evolving known path. Longest prioritizes segment length. Weighted variants combine path index and length; successive roots reduce index influence.
Changing the order changes which future tweaks become available. It can interact strongly with the tweak picker.
Initial walk and stopping
The generator starts with a random path, then tweaks it. --wander-full makes initial moves use the full available length. --wander-max limits initial move length; --wander-steps limits its segment count. Full-slide walks default to eight segments to prevent the initial path from spiraling across a huge open region. Tweak-based generation rejects all-open squares larger than one fifth of the smaller board dimension (allowing eight cells on small puzzles).
--loops 1 limits segment-picker passes. It does not mean one tweak. --keep-deadends keeps the generated endpoints instead of trimming their one-exit pockets.
Picker names are now unique. The redundant 2lim25 entry was removed. Historical len23-10th retains its 1-in-5 bonus for reproduction; the formerly shadowed 1-in-10 version is now len23-10th-exact. The frozen survey covers the original 53 choices; the current picker command builder exposes all 54.
How the large representatives were chosen
The baseline rnd99 and full initial-slide variant anchor the selection. Six further configurations maximize distance from already chosen configuration means across ten range-normalized geometry features (maximum run length is log-transformed first). Each contributes its most separated observed seed pair through 2,000 square; 5,000 uses one seed per selected configuration; 10,000 includes four boards across three configurations, including a same-method seed pair.
The unlimited-candidate last-picker recipe became costly at 500 square (52–122 seconds per export). From 1,000 upward it is replaced by the measured finite-candidate seg-2lim10-Last alternative. Its interrupted 1,000-square run produced no claimed specimen. The short-tweak equal23short/First export then took 242 seconds at 2,000 square; the separately surveyed equal23short/Longest was tried at 5,000. Four ordering-heavy 5,000-square experiments reached their recorded 10- or 20-minute budgets and have no claimed specimen. Additional Weighted4/lim20 recipes replace them in the saved collection; the outcomes remain in the selection record. The extra len23/Weighted4 probe completed in 104 seconds at 5,000, so it supplies the dense 10,000-square specimen. These measured scaling decisions are saved in the selection record. Selection is frozen from the original survey; the 18 oversized-region specimens were subsequently regenerated with eight initial full slides. Selection means in the historical record therefore precede the repair. Current cards and findings use the replacements. This is a reproducible coverage heuristic. Feature scaling affects selection, and three seeds do not establish a recipe’s full range. Large-size behavior is measured afresh; small-board traits are not assumed to scale unchanged. Selection details · All survey outcomes · Measured findings · Matched-seed changes
Development state
The working generator was ported to .NET 10, with validation, performance improvements, board interchange, a reference DFS solver, and a separate structural-analysis prototype. This study adds a compact full-board geometry pass, persisted gzip solution replay, a repeatable style survey, representative selection, and this offline explorer.
The C# characterization checks cover all 512 binary 3×3 boards against direct square enumeration, rotation and run-count invariants, and corridor fixtures. Generator regression checks cover index caches and all 12 saved hard-level solutions. Python analysis has its own exhaustive small-board deduction tests. Exact generation and persisted replay are required for every specimen.
The Python meta-solver now evaluates actual bounded C# searches through a JSON bridge. Direction order, start order, and pruning settings change real behavior; returned solutions receive independent Python replay. Time, node, and depth limits are reported explicitly. All 512 binary 3×3 boards were checked against a separate exhaustive oracle under 16 search configurations. This explorer includes 4,864 board entries, including the original game archive and all 296 sampling specimens, with exact cell close-ups through 10000×10000. Solution visit-order colors are available through 1000×1000. See the evaluation contract and limits. Current geometry metrics do not establish a solving difficulty order. Project README · Structural-analysis design · Collection and reproduction · Full measured catalog