Todo lo que necesitas para empezar a construir un solucionador de Eternity II,
menos el solucionador. El kit de inicio
es una carpeta del repositorio: un pequeño espacio de trabajo Rust que ya hace la
fontanería. Puntuación, generación de tableros, generación de lotes con pistas
fijadas, conversión de formatos, benchmarks y un bucle completo
resolver → barrer → comparar: todo está ahí. Escribes un único Solver; el
resto sigue funcionando a su alrededor.
Nada en el kit reimplementa la puntuación, la generación o los formatos. Vienen
de las mismas bibliotecas compartidas sobre las que corre el propio sitio, así que
una puntuación del kit es el mismo número que producen el visor y
cualquier otro motor: el recuento canónico de aristas emparejadas, borde
excluido. Copia la carpeta, mete tu idea e itera.
✨Configúralo con tu agente de código
¿Usas Claude Code, Cursor u otro agente de código? Pega esto: obtiene las instrucciones de instalación del kit, lo compila y te ayuda a escribir tu primer solucionador.
Follow the instructions from
https://raw.githubusercontent.com/raphael-anjou/eternity2/main/research/starter-kit/PROMPT.md
and ask me questions as needed.
¿Tu agente no tiene acceso web? Clona el repositorio y abre research/starter-kit/AGENTS.md.
- Puntuar y verificar cualquier tablero, desde una URL
eternity2.dev /
e2.bucas.name o un simple bloque board_edges, a través del puntuador
canónico, y comprobarlo contra el conjunto de piezas oficial real (piezas todas
distintas, cumplimiento de pistas), que el kit ahora incluye.
- Generar tableros con el equilibrio de colores real de Eternity II: cinco
colores de borde confinados al marco, el interior equilibrado, cada pieza
distinta, totalmente determinista según la semilla.
- Generar lotes («dame 100 tableros, estas semillas, cinco pistas fijadas»)
como JSON de esquema-sitio reproducible que puedes releer directamente.
- Convertir entre todos los formatos que usa la comunidad:
board_edges,
board_pieces, e2pieces.txt, las URLs eternity2.dev y bucas heredadas, y
CSV. Ver la referencia de formatos.
- Medir la fontanería en un solo núcleo, para conocer el presupuesto de
sobrecarga de tu solucionador.
- El bucle de iteración: un trait
Solver estable, un ejecutor de barrido que
escribe directorios de ejecución reproducibles y una herramienta compare que
compara dos ejecuciones, con la disciplina de varianza que este puzzle exige
incorporada.
En Eternity II la puntuación varía mucho de una semilla a otra: la desviación
estándar entre semillas es de aproximadamente 12 a 20 puntos para un solucionador
de tablero completo. Así que una diferencia de uno o dos puntos de media entre dos
versiones de solucionador casi siempre es ruido. La herramienta compare del kit
se niega a llamar victoria a una diferencia por debajo del ruido, te dice que
barras al menos 40 semillas y siempre informa de la dispersión. Mantén todo en un
solo núcleo, como hacen los benchmarks del sitio, y
tus números seguirán siendo comparables con los de los demás.
Todo el kit se construye en torno a un único 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` ya lleva las pistas fijadas
// ...tu búsqueda aquí. Consulta budget.expired().
SolveOutcome::complete(board) // o ::improved / ::exhausted / ::bound
}
}
Copia examples/my_solver.rs (una base voraz completa y funcional), reemplaza el
cuerpo de solve y luego bárrelo:
cargo run --release --example sweep -- --n 40 --budget 3
cargo run --release --bin e2kit -- compare runs/<A> runs/<B>
Las recetas completas (puntuación, generación, lote, conversión, benchmark)
están en el README
del kit. Los tableros para probar un solucionador están en el
conjunto de datos CC0; los enfoques a probar están
recogidos en el mapa de todos los enfoques conocidos.
El generador del kit, en el navegador: el mismo motor WASM, sin instalación.
Elige una forma y un rango de semillas y crea un lote reproducible; haz clic en
cualquier tablero para abrirlo en el visor y puntuarlo arista por
arista.
¿Quieres lo mismo en la línea de comandos, o 10 000 tableros con pistas fijadas?
Usa el ejemplo generate_batch del kit: escribe cada tablero en JSON que puedes
volver a alimentar directamente a un solucionador.