Unique polyomino puzzle generator

Generate a unique polyomino puzzle—and prove it.

Choose a 5×5–8×8 constrained board, transformations, difficulty, and seed. MosaicProof carves original pieces, enumerates exact covers to a second solution, and returns a playable puzzle only when uniqueness is established within explicit limits.

Generate · verify · solve

A polyomino puzzle generator where uniqueness is a search result, not a decorative badge.

MosaicProof starts with an asymmetric board mask so rotating the whole square does not automatically create another answer. A seeded growth pass partitions the active cells into original connected polyominoes. The generator builds every legal placement permitted by your rotation and reflection settings, then runs a clean-room exact-cover backtracker. It selects the uncovered cell with the fewest available placements, explores candidates, and deliberately continues until either a second solution appears or the search is exhausted.

A puzzle is released only when the search completes with exactly one solution. Node and time ceilings prevent a difficult seed from freezing the page; if the proof cannot finish inside those bounds, the interface keeps the existing puzzle and asks you to try a different seed or simpler transform set. New Clicks, copied levels, and source-site graphics play no role in the generation process.

During play, drag a labeled piece to the board or select it and tap a cell. Rotation and reflection return a transformed piece to the tray so overlaps cannot be hidden. Invalid placements receive visible conflict feedback. Undo restores the previous board, three hint levels move from a single useful cell to placing one verified piece, and the completion message appears only when every active board cell is covered exactly once. The seed URL recreates the generator settings, while Print produces a clean paper-friendly puzzle sheet.

Bounded verification

Every proof reports visited search nodes and elapsed time. A cap is a cap: an interrupted search is never labeled unique.

Original geometry

Pieces are grown from the chosen board and seed. The project contains no copied puzzle level, third-party art pack, or external shape catalog.

Useful solving tools

Move pieces by drag or tap, transform the selected piece, undo safely, ask for graduated hints, share the seed, and print the board.

How seed-based polyomino pieces are formed

The seed initializes a deterministic pseudorandom sequence. Growth begins at cells with few available neighbours, then expands through connected frontier cells until the current size target is met. Any tiny remainder joins a region it actually touches. This produces a complete partition with no disconnected decorative fragments and makes the same URL reproducible across browsers.

What exact-cover uniqueness verification means

Each legal orientation and anchor becomes a placement candidate. A solution must choose one placement for every labeled piece while covering each active cell exactly once. Finding one cover proves playability, but not uniqueness. MosaicProof continues until it either discovers a second cover or exhausts the search tree. The algorithm guide describes the cell-choice heuristic, transform rules, and hard caps.

Solve by drag, tap, rotation, and reflection

Desktop players can drag a piece from the tray and drop its anchor on the board. Touch and keyboard users can select the same labeled card and activate a board cell. A transform returns the piece to the tray before changing its coordinates, which keeps an old placement from silently overlapping another piece. Conflict cells and undo make experimentation reversible.

Print and share a puzzle without copying a level

The print layout preserves the current generated board and piece tray while removing interactive controls. The seed link recreates the generator contract instead of distributing a copied level file. Read more about the project’s clean-room boundary on the About page, and review local processing and optional analytics on the Privacy page.