# The dataset

> A public, CC0 dataset for Eternity II in two parts: fourteen benchmark instances to solve, and a corpus of 7,658 distinct strong boards to learn from. Every score is recomputed from the board itself, and the corpus is checked to be genuinely diverse rather than a thousand copies of one board.

- Canonical page (with interactive figures/demos): https://eternity2.dev/research/build/dataset/
- Updated: 2026-07-16
- Topics: structure, learning
- Source: The dataset (this repo): instances, the strong-board corpus zip, README, and the build script — https://github.com/raphael-anjou/eternity2/tree/main/research/datasets

---
Two things recur when you work on Eternity II: you need instances to run a
solver against, and, if you want to learn from strong boards, you need a corpus
of them. This dataset packages both, released into the public domain under
[CC0](https://creativecommons.org/publicdomain/zero/1.0/) so it can be reused for
anything without attribution. It has two parts, and both live in the
[dataset directory](https://github.com/raphael-anjou/eternity2/tree/main/research/datasets).

## Part A: benchmark instances

Fourteen instances a solver runs on, each a self-contained JSON file with the
piece set, any pinned hints, and the maximum reachable score.

- **Ten 16×16 instances** (`e2-16x16-v00` … `v09`): the official Eternity II
  piece set with three corners pinned, in ten different corner arrangements.
  Pinning the corners gives ten distinct but equally hard instances off one
  piece set, which is what lets a study compare engines on a diversity axis
  rather than a single board. All three of this project's engine studies (the
  [DFS study](/research/lab/experiments/raphael-anjou/dfs-study), the
  [repair study](/research/lab/experiments/raphael-anjou/repair-study), and the
  [single-core benchmark](/research/lab/experiments/single-core-benchmark)) solve
  exactly these ten. Maximum score 480.
- **Four clue sub-puzzles** (`e2-clue-clue1` … `clue4`): the smaller 6×6 and
  12×6 boards from the puzzle's official clue set. Each is known to have a full
  solution, which makes them a fast correctness fixture: a solver that cannot
  close a clue board has a bug before it ever meets the full puzzle.

Each cell is described in up, right, down, left order, colour 0 is the grey rim,
and `pos` is the row-major cell index. The shape of an instance file:

```json
{
  "id": "e2-16x16-v00",
  "family": "official-16x16-pin3corners",
  "width": 16, "height": 16, "numColors": 22,
  "pieces": [[up, right, down, left], ...],
  "hints": [{"pos": 0, "piece": 0, "rot": 3}, ...],
  "maxScore": 480
}
```

## Part B: a corpus of strong boards

**7,658 distinct boards** scoring 400 to 470, the raw material for methods that
[learn from strong boards](/research/lab/experiments/raphael-anjou/learning):
position priors, learned move-ordering, anti-pattern mining. It ships as a zip
(`e2-strong-boards.zip`, about 16 MB) that unpacks to the same rows as CSV and
as JSON-lines:

```
id,score,family,edges
e2b-00001,469,f008,adcaaendadwe…   (1024 lowercase letters)
```

The `edges` field is the board itself: 256 cells times four sides, row-major, in
up-right-down-left order, `a` for the grey rim. It is the same string the
[e2.bucas.name](https://e2.bucas.name) viewer reads, so any board pastes straight
into the viewer. The `family` is the board's four corner pieces, a proxy for
which basin it sits in; there are 28 distinct families. The score distribution
spikes sharply in the low-450s, where a large single-core beam harvest
concentrates, then thins to a long tail, with 38 boards at 460 or above and the
best at 470.
> **[Interactive: CorpusScoreDistribution]** Rendered on the canonical page (link above); not shown in this markdown export.
## Every score is recomputed, not trusted

No score in this dataset is copied from a source field. Each one is recomputed
from the board's own edge string by counting matched interior adjacencies. This
is not a formality: in the source data one board carried a stale score, claiming
453 when its edges actually score 456, and recomputing from edges corrects it
automatically. Re-derive the scores yourself from the edge strings and you will
get the published numbers exactly.

## The corpus is diverse, not derivative

A pile of several thousand boards is only worth publishing if the boards are
actually different. Before releasing this one we checked that they are not just
perturbations of a single board, and they are not:

- Only 13 of the 7,671 source boards were exact duplicates; the rest are
  distinct, leaving 7,658.
- The *median* board differs from its closest sibling by 235 of its 256 piece
  placements. Almost no board sits within 10 placements of another, and only 1%
  within 25. Even though most boards share a narrow score band, they are
  structurally almost entirely different.
- The boards spread across 28 distinct corner families rather than piling into
  one.

So the corpus is a genuinely varied sample of the strong-board landscape. That
matters for anything that mines it: a learned prior built from thousands of
copies of one board would encode that board, not the structure of good boards in
general.

## Rebuilding it

The [build script](https://github.com/raphael-anjou/eternity2/tree/main/research/datasets)
regenerates the whole dataset. The instances are assembled from the public
variant files; the corpus is deduplicated, rescored from edges, stripped of every
working-store label (source paths, internal preset and seed names, filenames),
and re-keyed with neutral ids, so what ships is board content and verified scores
and nothing else.

## Related

- [Known facts & numbers](https://eternity2.dev/research/build/known-facts) — The numbers every Eternity II researcher ends up re-deriving, collected in one place with their provenance: the puzzle definition, the clue placements, scoring conventions, the record table, search-space sizes and the structural counts.
- [Reference numbers](https://eternity2.dev/research/reference) — Exact counts of how many valid ways a small block can be filled at a given position of the official Eternity II board, under increasingly constrained rules: known-good numbers to check your solver's edge-matching and constraint code against.
- [Learning from strong boards](https://eternity2.dev/research/lab/experiments/raphael-anjou/learning) — A study in five experiments of one idea: instead of searching Eternity II from first principles, mine the corpus of strong boards already found for structure and feed it back into a search. A position prior, a learned move-vote, a scarce-demand compass, an anti-pattern miner, and a record decode, ordered from the simplest signal to the subtlest, and the one wall all five reach.
