This repo stores 40k+ puzzle grids of 100+ puzzle types for puzzlekit.
| No. | Puzzle Name | #. prob. | #. sols. | Size Range | #. specs | Pipeline |
|---|---|---|---|---|---|---|
| 1 | ABCEndView | 606 | 606 | 3x3~8x8 | 6 | rim |
| 2 | Akari | 968 | 968 | 5x5~100x100 | 99 | base |
| 3 | Aqre | 90 | 90 | 4x4~17x17 | 10 | region |
| 4 | Araf | 120 | 120 | 5x5~10x18 | 7 | base |
| 5 | BalanceLoop | 70 | 70 | 5x5~17x17 | 9 | base |
| 6 | Battleship | 859 | 858 | 6x6~30x30 | 7 | rim |
| 7 | Binairo | 380 | 379 | 8x8~20x20 | 5 | base |
| 8 | Bosanowa | 36 | 36 | 3x5~11x16 | 25 | base |
| 9 | Bricks | 210 | 210 | 6x6~8x8 | 2 | base |
| 10 | Buraitoraito | 101 | 100 | 6x6~15x15 | 7 | base |
| 11 | Burokku | 250 | 250 | 4x4~10x10 | 7 | base |
| 12 | ButterflySudoku | 75 | 75 | 12x12 | 1 | base |
| 13 | CanalView | 110 | 110 | 6x6~17x17 | 6 | base |
| 14 | CastleWall | 110 | 110 | 8x8~50x50 | 13 | base |
| 15 | Cave | 416 | 416 | 8x8~25x25 | 12 | base |
| 16 | Chocona | 248 | 248 | 5x5~17x17 | 8 | region |
| 17 | Clueless1Sudoku | 29 | 29 | 27x27 | 1 | base |
| 18 | Clueless2Sudoku | 40 | 40 | 27x27 | 1 | base |
| 19 | CocktailLamp | 50 | 50 | 6x6~17x17 | 13 | region |
| 20 | Cojun | 120 | 120 | 6x6~17x17 | 6 | region |
| 21 | ConsecutiveSudoku | 211 | 211 | 5x5~9x9 | 5 | s3 |
| 22 | CountryRoad | 270 | 270 | 5x5~15x15 | 8 | region |
| 23 | Creek | 443 | 440 | 7x7~40x50 | 33 | ext |
| 24 | CurvingRoad | 190 | 190 | 8x8~14x14 | 4 | base |
| 25 | Detour | 76 | 76 | 4x4~13x12 | 12 | region |
| 26 | DiffNeighbors | 140 | 140 | 8x8~15x15 | 4 | region |
| 27 | DigitalBattleship | 80 | 80 | 6x6~12x12 | 4 | rim |
| 28 | Dominos | 581 | 580 | 4x5~31x32 | 8 | base |
| 29 | Doors | 270 | 270 | 5x5~12x12 | 7 | base |
| 30 | DoppelBlock | 240 | 240 | 5x5~8x8 | 4 | rim |
| 31 | DotchiLoop | 60 | 60 | 6x6~17x17 | 6 | region |
| 32 | DoubleBack | 98 | 98 | 6x6~26x26 | 13 | region |
| 33 | EntryExit | 170 | 170 | 8x8~16x16 | 5 | region |
| 34 | Eulero | 290 | 290 | 4x4~5x5 | 2 | base |
| 35 | EvenOddSudoku | 129 | 129 | 9x9 | 1 | base |
| 36 | Factors | 150 | 150 | 9x9~11x11 | 3 | region |
| 37 | Fillomino | 840 | 840 | 5x4~50x64 | 57 | base |
| 38 | Fobidoshi | 220 | 220 | 4x4~12x12 | 8 | base |
| 39 | Foseruzu | 310 | 309 | 6x6~30x45 | 23 | base |
| 40 | Fuzuli | 160 | 160 | 5x5~8x8 | 3 | base |
| 41 | Galaxies | 577 | 577 | 7x7~20x36 | 9 | base |
| 42 | Gappy | 405 | 403 | 10x10~18x18 | 8 | rim |
| 43 | Gattai8Sudoku | 120 | 120 | 21x33 | 1 | base |
| 44 | Geradeweg | 97 | 97 | 5x5~14x14 | 10 | base |
| 45 | GokigenNaname | 780 | 780 | 6x6~24x36 | 12 | ext |
| 46 | GrandTour | 350 | 350 | 5x5~15x15 | 6 | base |
| 47 | Hakoiri | 140 | 140 | 8x8~12x12 | 3 | region |
| 48 | Hakyuu | 478 | 478 | 6x6~30x45 | 14 | region |
| 49 | Hanare | 97 | 97 | 6x6~16x16 | 6 | region |
| 50 | Hashi | 909 | 909 | 5x5~40x60 | 32 | base |
| 51 | Heyawake | 786 | 786 | 6x6~31x45 | 55 | region |
| 52 | Hidoku | 510 | 510 | 6x6~10x10 | 5 | base |
| 53 | Hitori | 941 | 941 | 4x4~25x25 | 13 | base |
| 54 | JigsawSudoku | 677 | 677 | 4x4~9x9 | 6 | region |
| 55 | Juosan | 79 | 79 | 6x6~30x45 | 16 | region |
| 56 | Kakkuru | 356 | 356 | 4x4~9x9 | 6 | base |
| 57 | Kakurasu | 280 | 280 | 4x4~11x11 | 8 | rim |
| 58 | Kakuro | 995 | 995 | 6x6~31x46 | 32 | base |
| 59 | KenKen | 430 | 430 | 4x4~9x9 | 6 | region |
| 60 | KillerSudoku | 809 | 809 | 4x4~9x9 | 3 | region |
| 61 | Koburin | 150 | 150 | 8x8~12x12 | 3 | base |
| 62 | Kuromasu | 537 | 537 | 5x5~31x45 | 13 | base |
| 63 | Kuroshuto | 210 | 210 | 8x8~14x14 | 4 | base |
| 64 | Kurotto | 229 | 229 | 8x8~19x27 | 12 | base |
| 65 | LITS | 419 | 410 | 6x7~40x57 | 68 | region |
| 66 | Linesweeper | 310 | 310 | 4x4~16x16 | 16 | base |
| 67 | Magnetic | 439 | 439 | 6x6~12x12 | 4 | rim |
| 68 | Makaro | 190 | 190 | 8x8~15x15 | 4 | region |
| 69 | MarginSudoku | 149 | 149 | 9x9 | 1 | rim |
| 70 | Masyu | 826 | 824 | 5x5~40x58 | 94 | base |
| 71 | Mathrax | 175 | 175 | 5x5~9x9 | 5 | ext |
| 72 | Maze-a-pix | - | - | - | - | - |
| 73 | Mejilink | 1 | 0 | 8x8 | 1 | base |
| 74 | MidLoop | 2 | 2 | 4x4~10x10 | 2 | base |
| 75 | Minesweeper | 360 | 360 | 4x4~14x24 | 15 | base |
| 76 | MoonSun | 199 | 199 | 10x10~30x45 | 27 | region |
| 77 | Mosaic | 165 | 104 | 15x15~118x100 | 21 | base |
| 78 | Munraito | 359 | 359 | 4x4~12x12 | 8 | base |
| 79 | Nanbaboru | 270 | 270 | 5x5~9x9 | 5 | base |
| 80 | Nanro | 159 | 159 | 8x8~14x14 | 4 | region |
| 81 | Nawabari | 160 | 160 | 8x8~14x14 | 4 | base |
| 82 | Nondango | 109 | 109 | 4x4~14x14 | 7 | region |
| 83 | Nonogram | 2307 | 2306 | 10x5~30x40 | 22 | s1 |
| 84 | Norinori | 289 | 289 | 6x6~36x54 | 51 | region |
| 85 | NumberCross | 170 | 170 | 4x4~8x8 | 5 | rim |
| 86 | NumberLink | 549 | 549 | 5x5~35x48 | 29 | base |
| 87 | NumberSnake | 70 | 70 | 6x6~10x10 | 5 | base |
| 88 | Nurikabe | 1091 | 1091 | 3x3~50x50 | 79 | base |
| 89 | Nurimisaki | 100 | 100 | 6x6~10x10 | 5 | base |
| 90 | OneToX | 58 | 58 | 6x6~10x10 | 3 | rim |
| 91 | PaintArea | 226 | 226 | 8x8~12x12 | 3 | region |
| 92 | Patchwork | 209 | 209 | 10x10~12x12 | 2 | region |
| 93 | Pfeilzahlen | 358 | 357 | 5x5~10x10 | 6 | base |
| 94 | Pills | 164 | 163 | 8x8~10x10 | 2 | rim |
| 95 | Pipeline | 349 | 349 | 5x5~20x20 | 8 | rim |
| 96 | Pipelink | 187 | 187 | 5x5~30x45 | 10 | base |
| 97 | Polyiamond | - | - | - | - | - |
| 98 | Polyminoes | - | - | - | - | - |
| 99 | Putteria | 54 | 54 | 5x5~16x16 | 7 | region |
| 100 | RegionalYajilin | 70 | 70 | 6x6~10x18 | 6 | region |
| 101 | Rekuto | 220 | 220 | 8x8~14x14 | 6 | base |
| 102 | Renban | 150 | 150 | 6x6~9x9 | 4 | region |
| 103 | SamuraiSudoku | 270 | 270 | 21x21 | 1 | base |
| 104 | Shakashaka | 367 | 367 | 8x8~22x30 | 73 | base |
| 105 | Shikaku | 496 | 496 | 7x7~50x40 | 34 | base |
| 106 | Shimaguni | 265 | 265 | 6x6~30x45 | 15 | region |
| 107 | Shingoki | 103 | 103 | 6x6~41x41 | 8 | base |
| 108 | Shirokuro | 110 | 110 | 10x10~17x17 | 4 | base |
| 109 | ShogunSudoku | 90 | 90 | 21x45 | 1 | base |
| 110 | Shugaku | 126 | 126 | 6x6~30x45 | 23 | base |
| 111 | SimpleLoop | 67 | 67 | 6x6~17x18 | 14 | base |
| 112 | Skyscraper | 470 | 470 | 4x4~8x8 | 5 | rim |
| 113 | SkyscraperSudoku | 50 | 50 | 9x9 | 1 | rim |
| 114 | Slitherlink | 1157 | 1138 | 4x4~60x60 | 49 | base |
| 115 | Snake | 230 | 230 | 8x8~12x12 | 5 | rim |
| 116 | SoheiSudoku | 120 | 120 | 21x21 | 1 | base |
| 117 | SquareO | 120 | 80 | 3x3~15x15 | 4 | base |
| 118 | Starbattle | 309 | 308 | 5x5~25x25 | 13 | region |
| 119 | Sternenhimmel | 187 | 187 | 7x7~17x17 | 8 | rim |
| 120 | Stitches | 110 | 110 | 5x5~15x15 | 6 | rim |
| 121 | Str8t | 547 | 547 | 6x6~9x9 | 2 | base |
| 122 | Sudoku | 125 | 125 | 9x9~16x16 | 2 | base |
| 123 | Suguru | 200 | 200 | 6x6~10x10 | 5 | region |
| 124 | Sukoro | 140 | 140 | 6x6~12x12 | 4 | base |
| 125 | SumoSudoku | 110 | 110 | 33x33 | 1 | base |
| 126 | Tatamibari | 150 | 150 | 8x8~14x14 | 4 | base |
| 127 | TennerGrid | 362 | 361 | 6x10 | 1 | base |
| 128 | Tent | 699 | 699 | 8x12~30x30 | 14 | rim |
| 129 | TerraX | 80 | 80 | 6x6~17x17 | 6 | region |
| 130 | Thermometer | 250 | 250 | 6x6~10x10 | 3 | s2 |
| 131 | TilePaint | 377 | 377 | 10x10~16x16 | 4 | rim |
| 132 | Trinairo | 60 | 60 | 6x6~12x12 | 3 | base |
| 133 | Tripletts | 190 | 190 | 3x4~10x12 | 6 | region |
| 134 | Usoone | 129 | 129 | 8x8~30x45 | 9 | region |
| 135 | WindmillSudoku | 150 | 150 | 21x21 | 1 | base |
| 136 | Yajikabe | 100 | 100 | 6x6~17x17 | 6 | base |
| 137 | Yajilin | 607 | 607 | 7x7~39x57 | 118 | base |
| 138 | YinYang | 170 | 170 | 6x6~14x14 | 5 | base |
| 139 | Yonmasu | 120 | 120 | 6x6~10x10 | 5 | base |
| Total | 40884 | 40737 | - | - | - |
Datasets live under assets/data/{Puzzle}/{Puzzle}_dataset.json. The cleaners/ package normalizes text, validates layout, deduplicates, and writes reports. Default is dry-run (no JSON changes unless you pass --write; a *.json.bak backup is created first).
Requirements: Python 3.10+, run from repo root. Optional: pip install pytest.
# Dry-run one puzzle
python -m cleaners run --puzzle Araf
python -m cleaners run --puzzle Aqre --changelog # snippet for docs/CHANGELOG.md
# Batch dry-run
python -m cleaners run --all
python -m cleaners run --all --quiet --summary # writes cleaners/reports/dry_run_batch_latest.*
# Write cleaned JSON
python -m cleaners run --puzzle Aqre --write
# Validate / reports
python -m cleaners check --puzzle Araf
python -m cleaners report --latest
pytest tests/cleaners/The Pipeline column in the table above matches cleaners/registry.py. To register a new puzzle type, add it there (only if on-disk layout matches):
pipeline |
Layout | Notes |
|---|---|---|
base |
1 + m grid |
Exact-string dedupe on full problem |
region |
1 + m or 1 + 2m |
Per-puzzle config in REGION_LAYOUTS; dedupe: exact header (+ clues if present) + region isomorphism |
rim |
Edge clues + optional body | Per-puzzle config in RIM_LAYOUTS; solution as 1 + m grid |
ext |
Non-standard shapes | Per-puzzle config in EXT_LAYOUTS; dedupe on header + layout rows |
| (omit) | β | Skipped by run --all |
After pytest and a dry-run look good, use --write and record the run in docs/CHANGELOG.md. Machine reports: cleaners/reports/{timestamp}_{Puzzle}.json (gitignored).
For puzzles like ABCEndView, Gappy etc, we have margin clues.
They are represented following the order of Top -> Bottom -> Left -> Right.
Each margin reads from left to right (horizontal ones) or from top to bottom (vertical ones). Empty clues indicated by -.
| Puzzle | Repr |
|---|---|
![]() |
6 6 d - a c a c - - d a c a - - d c d c - - a d c d - |
Indicating trivial clues on the grid. Empty clues indicated by -. Few puzzles have special clues repr, shown in Puzzles section.
| Puzzle | Repr |
|---|---|
![]() |
6 6 - - - - - 1 1 - - 1 - - - - 3 - - 2 3 - - - - - - 3 - 3 - 0 0 |
For puzzles with regions, i.e., Aqre, Heyawake, regions are indicated via numbers or characters, each representing one region.
| Puzzle | Repr |
|---|---|
![]() |
6 6 4 - - 1 - - - - - - - - - - - - - - 4 - - 4 - - - - - - - - - - - - - - 1 1 1 2 2 2 1 1 1 2 2 2 1 1 1 2 2 2 3 3 3 4 4 4 3 3 3 4 4 4 3 3 3 4 4 4 |
π Margin Clues > π₯ Grid Clues > π₯ Regional Division.
w (lower case) for white, b for black.
| Puzzle | Repr |
|---|---|
![]() |
6 6 - - - - - - w b - - - - - - - w b - - w w - - - - - - - w w - - - - - - |
Mostly appear in solution representation. nsew method: n: north, s: south, e: east, w: west. No restrictions on the order.
| Puzzle(solution) | Repr |
|---|---|
![]() |
6 6 es ew ew sw es sw ns es ew nw ns ns ns ns es ew nw ns ns ns ns es sw ns ns en nw ns ns ns en ew ew nw en nw |
Often appear in both problem & solution representation.
Each cell is represented by a 4-bit binary number. From right to left, the bits correspond to: left, down, right, top edges.
A bit is set to 1 if the corresponding edge is connected, 0 otherwise.
Example:
- 13 (binary 1101): left, right, and top edges are connected.
- 6 (binary 0110): down and right edges are connected.
| Puzzle(solution) | Repr |
|---|---|
![]() |
5 5 11 10 8 12 13 9 14 1 0 6 5 9 6 1 12 1 2 8 0 6 7 11 2 2 14 |





