# Build a solver

> The practitioner's corner of the wiki: validation data to check your code against, the literature ranked by usefulness, the record timeline and the methods behind it, the dead ends, and how to run the code yourself.

- Canonical page (with interactive figures/demos): https://eternity2.dev/research/build/
- Updated: 2026-07-21

---
The practitioner's corner. Validation data to check your code against, the
literature ranked by usefulness, the record timeline and the methods behind
it, plus the dead ends so you don't spend a month on an approach that provably
can't work.

## Where to start

1. **[The builder's toolkit](/research/build/toolkit)** is the one step that
   gets you to running code: a ready-to-use Rust workspace that already scores,
   generates, converts, and benchmarks, with a solve→sweep→compare loop, so you
   write only the solver. Set it up in your coding agent with one line, or
   generate boards in the browser. Start here.
2. **[A map of every known approach](/research/build/approaches-map)**
   is the one-page survey: every family of attack on Eternity II, what each
   reached, and where it walls out. The place to orient before you dive in.
3. **[The techniques](/research/build/techniques)** are the technique shelf: the
   algorithms and pruning ideas that recur in every serious solver, each with
   what it costs and what it actually bought on this puzzle.
4. **[Solver catalogue](/research/build/solvers)** shows how the record engines
   assemble those parts, from Verhaard's 467 to Blackwood's 470.
5. **[Reference numbers](/research/reference)** and the
   **[known facts](/research/build/known-facts)** give you exact counts to check
   your own edge-matching and constraint code against.
6. **[Dead ends](/research/build/dead-ends)** lists the approaches that sounded
   good and provably don't move the score, so you can skip them.
7. **[Run it yourself](/research/build/run-it-yourself)** is how to build and run
   this project's own code.

The [record timeline](/research/records) and the two-part
[history](/research/community/hunt) trace how the community climbed from the
first partial boards to today's 470.

## Pages in this section

- [The builder's toolkit](https://eternity2.dev/research/build/toolkit) — A ready-to-use Rust starter kit for building your own Eternity II solver: score, generate boards with real colour balance, batch-generate with pinned clues, convert every format, benchmark, and a solve→sweep→compare iteration loop, so you write only the solver. Plus a one-line setup for coding agents, and a board generator right here in the browser.
- [A map of every known approach](https://eternity2.dev/research/build/approaches-map) — The survey the community keeps asking for and never finds: every family of attack tried on Eternity II, what each one actually reached, where it walls out, and a link to the deep page. One organising insight runs through all of them.
- [Board & puzzle formats, written down](https://eternity2.dev/research/build/formats) — Every format an Eternity II board or puzzle travels in on this site and in the community: the board_edges letter string and the hints clue list, e2pieces.txt, the puzzle CSV, the site's Puzzle JSON, and the viewer URL, with the exact byte-level rules (how the grey border is encoded in each) and, most of all, what each format can and cannot recover.
- [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.
- [The community's benchmarks](https://eternity2.dev/research/build/benchmarks) — How a community forbidden from sharing the pieces built a shared test culture anyway: derived-count verification protocols, the Txibilis and beginner suites, node-count duels, full enumerations, and the one benchmark that is still standing open today.
- [The community's toolbox, 2007–2026](https://eternity2.dev/research/build/tooling) — Nineteen years of community software for Eternity II (manual-placement GUIs, editors, public solvers, generators and viewers), plus the quieter layer that made them interoperate: e2pieces.txt, CRC-16 checksums, and the board-in-a-URL format that became the lingua franca. A reference census, with every tool sourced to the message that announced it.
- [The four clue puzzles](https://eternity2.dev/research/build/clue-puzzles) — Tomy sold four small companion puzzles for Eternity II: solve one, submit the solution, and the official site revealed one piece's placement on the main board. What each puzzle was, the broken online checker, the eBay grey market, why puzzles 5 and 6 never came, and the clue puzzles' second life as complex-theory test cases and donor piece sets.
- [The variants and the claims that live there](https://eternity2.dev/research/build/variants) — Every "Eternity II" that is not the real puzzle: the TopCoder Marathon variant and the unresolved Takahashi 468, McGavin's unframed 480/480, the mixed-set boards, the no-starter challenge, and the claim quarantine, from the 2007 phantom-sets warning to the community's zero-knowledge verification ethic. Ends with a checklist for stating a score properly.
- [How the record solvers search](https://eternity2.dev/research/build/solvers) — How the solvers that hold the records actually search. They are all, at heart, depth-first backtrackers; what separates them is the order they try things and how they bend the rules near the end.
- [Reduce the search](https://eternity2.dev/research/build/reduce) — Everything that throws away hopeless states before the search wastes time on them: propagation to a fixed point, the all-different matching filter, learned no-goods, and the edge-slipping invariant.
- [Backtracking](https://eternity2.dev/research/build/backtracking) — Depth-first search done seriously. The order a solver visits the cells is its one free choice and moves the tree size by orders of magnitude; restarts turn a heavy-tailed runtime into a portfolio. This is the family behind every record backtracker.
- [Go faster](https://eternity2.dev/research/build/faster) — Raw throughput: the craft below the algorithm (lookup tables, cache-sized structs, generated code) and spreading the work across many machines. It decides whether a node costs 26 cycles or 2,600, and it is the clearest demonstration that speed alone does not move the wall.
- [Build boards up](https://eternity2.dev/research/build/construct) — Building a high-scoring board from an empty grid instead of digging with backtracking: beam search keeps the best partial boards alive and grows them cell by cell. The workhorse behind this project's from-scratch builders, and a clean illustration of why breadth alone stalls in the deep interior.
- [Learn from strong boards](https://eternity2.dev/research/build/learning) — Most attacks on Eternity II search from first principles. A distinct family does the opposite: it mines the corpus of boards people have already found for structure, then feeds that structure back into the search. Position priors, learned move-ordering, anti-pattern mining, record decoding, and the failure mode where a learned signal collapses.
- [Local search](https://eternity2.dev/research/build/local-search) — Start with a full, imperfect board and improve it by moves: destroy-and-repair, annealing and tempering, evolutionary recombination. The most reliable polishers here, and the cleanest demonstrations of the rigidity wall, where every one of them stops at the same height.
- [Exact methods](https://eternity2.dev/research/build/exact) — Solvers that can prove things: SAT and CSP encodings, integer programming and its relaxations, exact-cover, meet-in-the-middle, and iterated projection maps. Complete methods stall on the full board, but their verdicts earn their keep as impossibility proofs on sub-boards.
- [The techniques](https://eternity2.dev/research/build/techniques) — The technique shelf: the algorithms and pruning ideas that recur in every serious Eternity II solver, each with what it is, what it costs, and what it actually bought when measured on this puzzle.
- [Analysis](https://eternity2.dev/research/build/analysis) — These do not try to solve the puzzle: they measure it, which is how the community knows where the walls are. Parity arguments give one-pass impossibility proofs; solution counting pins down how many full solutions exist to within a factor of two, without anyone having seen one.
- [GPU & hardware](https://eternity2.dev/research/build/hardware) — Throwing silicon at the wall: GPU ports, FPGA pipelines, distributed sweeps, and the perennial quantum proposal. This is the ledger of what each one actually delivered, and why the wall it meets is memory and structure, not arithmetic.
- [Dead ends](https://eternity2.dev/research/build/dead-ends) — Approaches we tried that look promising and don't move the needle on Eternity II, written down with what we found so you can spend your time elsewhere.
- [The dataset](https://eternity2.dev/research/build/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.
- [Run it yourself](https://eternity2.dev/research/build/run-it-yourself) — The whole site, the engine, and every result in this section run from one repository. Here is how to get it going, rebuild the WebAssembly engine, and reproduce the numbers.
