Por @Alvy — 20 de agosto de 2019

ChesSkelet: una pequeña maravilla que «juega» al ajedrez en 352 bytes en el Spectrum

Desde el mundillo de los foros del Spectrum llega ChesSkelet, un ajedrez mínimo que compite en tamaño con el mítico ZX-81 Chess, un software de ajedrez cuyo código cabía en 1 KB. En este caso no se trata de jugar bien al ajedrez, sino de saber jugar y hacerlo con el programa más pequeño posible. Recuerdo haber programado algo parecido en los 80, en los 3,5 KB de un viejo VIC-20: ocupaban más los gráficos que el código del juego en sí, que sólo sabía mover al azar (pero respetando las reglas).

ChesSkelet bate todos los récords con tan sólo 352 bytes de código máquina; y con un par de cientos más existen versiones «mejoradas» y con mejor aspecto. Aunque no hay sitio ni para iconos siquiera. En una comparación absurda, la imagen PNG de la captura de pantalla de esta anotación ocupa más de 2 KB (!)

Eso sí: jugar juega de pena, y hasta un niño de 6 años podría ganarle, pero funcionar, funciona y sigue las reglas del juego, que es lo relevante. Como se suele decir, «aquí lo importante del viaje no es llegar, sino el camino»: la historia de cómo se desarrolló el programa, la disección completa del código y el listado original en ensamblador.

Entre las funciones que hubo que sacrificar para conseguir meter todas las reglas del ajedrez en 352 bytes están que no existe el enroque, ni la captura al paso, ni la promoción de peones. Tampoco los peones negros avanzan dos casillas en su salida (sólo una) y el contrincante humano sólo puede jugar con blancas. Las versiones «mejoradas» de ChesSkelet resuelven todos esos problemas, excepto comprobar si el enroque es legal y la captura al paso. Y por supuesto nada de reglas más complicadas como la de las tablas en 50 movimientos, tablas por repetición de tres movimientos, rey ahogado, etcétera. Eso sí, por unos pocos bytes más se puede sombrear el tablero.

En general el ChesSkelet calcula 1,5 movimientos de posibles jugadas futuras, de modo que no llega mucho más allá de evaluar qué respuesta va a dar el contrario y elegir la mejor dentro de sus –muchas– limitaciones. Pero por menos de 1 KB… poco más se puede pedir.

(¡Gracias @MundoAlReves por la pista!)

Relacionado:

Compartir en Flipboard Publicar / Tuitear Publicar