v2.10.0 — Senku (peg-solitaire) + sudoku, ambos puro-datos
Release aditivo sobre 2.9.0 (bump minor, SPEC §7.0): dos géneros
nuevos de punta a punta sin tocar el core — el Senku real (perfil puro-datos
peg-solitaire, tableros solubles por construcción, soluciones rejugadas en npm test)
y el perfil sudoku, nacido de un malentendido del nombre y conservado como género
propio. La versión del protocolo sigue en 0.1.
Added — perfil peg-solitaire (puro-datos) + Senku
profiles/peg-solitaire.json(14º perfil, cuarto puro-datos): senku/solitario de
clavijas — tableros como 7 filas de 7 caracteres (_fuera,opeg,.hueco),
goalpor enum (clear= dejar 1 peg |center= dejarlo en el centro),
difficultypor enum yplayer.startpor broken-ref. Límite documentado: la forma
7×7 y el alfabeto de los strings no caben en las familias declarativas (dims exige
matrices de arrays) — los validapegChecken la simulación y ennpm test(tercer
caso para SPEC §11: validadores de patrón/longitud de string).examples/senku.GAME.md(+ generated): 3 tableros solubles por construcción
— B1 y B2 generados por movimientos inversos desde un único peg (LCG determinista),
B3 es el inglés clásico (32 pegs, hueco central, goal center) resuelto por el solver
DFS del generador en 4 ms. Ni una celda escrita a mano. Lint 0/0 a la primera.- Lógica pura en
game3d-logic.mjs(pegCheck/pegInit/pegMoves/pegMove,
+21 chequeos ennpm testy CI): los 3 tableros reales validados y sus soluciones
rejugadas hasta la victoria (B3: 31 saltos con el último peg en el centro),
conservación (pegs = iniciales − saltos en cada paso), saltos ilegales bloqueados,
derrota por bloqueo y derrota específica degoal: center. - Runtime
peg-solitaireen game3d (8º perfil jugable): tablero DOM 7×7 sobre
fondo 3D, flechas + Enter/Espacio (elegir peg y saltar) + Escape, overlays de
victoria/derrota. Verificado jugando en navegador.
Added — perfil sudoku (puro-datos) + Sudoku
- Nacido de una interpretación errónea de «senku» (es el solitario de clavijas, no el
sudoku); el trabajo quedó completo y verificado, así que se conserva como perfil
propio con el juego renombrado aexamples/sudoku.GAME.md. profiles/sudoku.json(13º perfil, tercer puro-datos): puzzles como strings de
81 caracteres (gridcon.+solution),difficultypor enum,player.start
por broken-ref ybalance(lives/hints). Límite documentado: longitud/patrón de los
strings y la consistencia grid↔solution no caben en las familias declarativas —
las validasudokuChecken la simulación de referencia y ennpm test(segundo caso
concreto para SPEC §11: validadores de patrón/longitud de string).examples/sudoku.GAME.md(+ generated): 3 puzzles generados por script con
verificación de unicidad (backtracking + conteo de soluciones; easy 40 / normal 32
/ hard 27 pistas) — ni un dígito escrito a mano. Lint 0/0 a la primera.- Lógica pura en
game3d-logic.mjs(sudokuCheck/sudokuInit/sudokuSet/
sudokuHint, +14 chequeos ennpm testy CI): los 3 puzzles reales validados
(consistencia + validez por filas/columnas/cajas), victoria rellenando la solución,
derrota al agotar vidas, pistas dadas inmutables, hint con descuento. - Runtime
sudokuen game3d (7º perfil jugable): tablero DOM 9×9 sobre fondo 3D,
flechas + dígitos + H para pista, overlays de victoria/derrota. Verificado jugando
en navegador: pista inmutable, fallo que descuenta vida, hint, y tablero resuelto
hasta el overlay de victoria. - README: 128 → 133 reglas (reconteo por script tras ambos perfiles).