Tout ce qu'il faut pour commencer à construire un solveur Eternity II, sauf le
solveur lui-même. Le kit de démarrage
est un dossier du dépôt : un petit espace de travail Rust qui fait déjà la
plomberie. Scoring, génération de plateaux, génération de lots avec indices
épinglés, conversion de formats, benchmarks, et une boucle complète
résoudre → balayer → comparer : tout y est. Vous écrivez un seul Solver ;
tout le reste continue de fonctionner autour.
Rien dans le kit ne réimplémente le scoring, la génération ou les formats. Ils
proviennent des mêmes bibliothèques partagées que le site lui-même utilise, donc
un score du kit est le même nombre que celui produit par le visualiseur
et tout autre moteur : le décompte canonique des arêtes appariées, bordure
exclue. Copiez le dossier, glissez-y votre idée, et itérez.
✨Configurez-le avec votre agent de code
Vous utilisez Claude Code, Cursor ou un autre agent de code ? Collez ceci : il récupère les instructions d'installation du kit, le compile et vous aide à écrire votre premier solveur.
Follow the instructions from
https://raw.githubusercontent.com/raphael-anjou/eternity2/main/research/starter-kit/PROMPT.md
and ask me questions as needed.
Pas d'accès web dans votre agent ? Clonez le dépôt et ouvrez research/starter-kit/AGENTS.md à la place.
- Scorer et vérifier n'importe quel plateau, depuis une URL
eternity2.dev /
e2.bucas.name ou un simple bloc board_edges, via le scorer canonique, et le
contrôler contre le vrai jeu de pièces officiel (pièces toutes distinctes,
conformité des indices), que le kit fournit désormais.
- Générer des plateaux au vrai équilibre des couleurs d'Eternity II : cinq
couleurs de bordure confinées au cadre, l'intérieur équilibré, chaque pièce
distincte, entièrement déterministe selon la graine.
- Générer des lots (« donne-moi 100 plateaux, ces graines, cinq indices
épinglés ») en JSON de schéma-site reproductible que vous pouvez relire
directement.
- Convertir entre tous les formats de la communauté :
board_edges,
board_pieces, e2pieces.txt, les URLs eternity2.dev et bucas héritées, et
le CSV. Voir la référence des formats.
- Mesurer la plomberie en mono-cœur, pour connaître le budget de surcharge de
votre solveur.
- La boucle d'itération : un trait
Solver stable, un lanceur de balayage qui
écrit des répertoires de run reproductibles, et un outil compare qui compare
deux runs, avec la discipline de variance qu'exige ce puzzle intégrée.
Sur Eternity II, le score varie beaucoup d'une graine à l'autre : l'écart-type
entre graines est d'environ 12 à 20 points pour un solveur de plateau complet.
Une différence d'un ou deux points de moyenne entre deux versions de solveur est
donc presque toujours du bruit. L'outil compare du kit refuse de qualifier de
gain une différence en dessous du bruit, vous dit de balayer au moins 40 graines,
et rapporte toujours l'écart. Gardez tout en mono-cœur, comme le font les
benchmarks du site, et vos chiffres restent
comparables à ceux de tous les autres.
Tout le kit est bâti autour d'un seul trait :
use e2_kit::{Board, Budget, Instance, SolveOutcome, Solver};
struct MySolver;
impl Solver for MySolver {
fn name(&self) -> String { "my-solver".into() }
fn solve(&mut self, instance: &Instance, start: &Board, budget: Budget) -> SolveOutcome {
let mut board = start.clone(); // `start` porte déjà les indices épinglés
// ...votre recherche ici. Interrogez budget.expired().
SolveOutcome::complete(board) // ou ::improved / ::exhausted / ::bound
}
}
Copiez examples/my_solver.rs (une base gloutonne complète et fonctionnelle),
remplacez le corps de solve, puis balayez-le :
cargo run --release --example sweep -- --n 40 --budget 3
cargo run --release --bin e2kit -- compare runs/<A> runs/<B>
Les recettes complètes (scoring, génération, lot, conversion, benchmark) sont
dans le README
du kit. Les plateaux pour tester un solveur sont dans le
jeu de données CC0 ; les approches à essayer sont
recensées dans la carte de toutes les approches connues.
Le générateur du kit, dans le navigateur : le même moteur WASM, sans
installation. Choisissez une forme et une plage de graines, et il produit un lot
reproductible ; cliquez sur un plateau pour l'ouvrir dans le visualiseur
et le scorer arête par arête.
Vous voulez la même chose en ligne de commande, ou 10 000 plateaux avec indices
épinglés ? Utilisez l'exemple generate_batch du kit : il écrit chaque plateau
en JSON que vous pouvez réinjecter directement dans un solveur.