Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Programación lúdica: La máquina de Torres Quevedo

Leonardo Torres Quevedo (1852-1936), fue un inventor español, el cual además de todo, tiene un lugar de honor en el ajedrez, al haber inventado una...

torres-quevedo00

Leonardo Torres Quevedo (1852-1936), fue un inventor español, el cual además de todo, tiene un lugar de honor en el ajedrez, al haber inventado una máquina que podía jugar el final de torre y rey vs. rey. En este caso, al contrario del Turco de Von Kempelen -que era un fraude- la máquina de Torres Quevedo ganaba este final básico, pero si pensamos que esto se mostró para antes del 1920, el resultado es notable.

atkinson-chess00Me he preguntado ¿cómo será el algoritmo de este inventor español para ganar este final? Y lo he hallado descrito en el siguiente libro: Chess and Machine Intuition, de George W. Atkinson, Ed. Intellect Books. Este libro me parece fascinante. He aquí el algoritmo de Leonardo Torres Quevedo según el apéndice del libro mencionado:

torres-quevedo01

El esquema de Torres para dar mate en este final de rey y torre vs rey asume una posición inicial con el rey del autómata en a8, torre en b8 y el rey enemigo en cualquier casilla en donde no esté en jaque en las primeras seis filas. He aquí el algoritmo en seudocódigo RB = Rey Blanco; RN = Rey negro y T = Torre blanca:

Si el RN está en a6, con las mejores tácticas dilatorias, el mate puede tardar, con este algoritmo, unas 61 jugadas.

Leonardo_Torres_QuevedoEsto puede resumirse en estas tres reglas básicas: si el rey enemigo está cerca de la torre atacante, esta debe alejarse; si el rey enemigo está alejado de la torre por más de una fila o columna, hay que estrechar la movilidad del rey; cuando los dos reyes están distanciados, acercar el rey atacante. Con estas sencillas leyes aquel autómata daba jaque mate.

Torres Quevedo construyó una máquina física para que su sistema jugase este final básico en ajedrez. Desde luego que esto se puede ahora evitar programando una computadora en donde este algoritmo se ejecute. El reto de la programación lúdica es el de escribir un programa que pueda jugar con éxito este final. La aplicación debe poderme permitir definir en dónde quiero poner las piezas (torre y rey blanco, rey negro), y el programa debe jugar contra el usuario y siempre darle jaque mate. ¿Premio? Una taza de La_Morsa a quien lo haga en el menor número de jugadas (habrá tres premios, para el primero, segundo y tercer lugar).

No se necesita mostrar un tablero gráfico del ajedrez (puede ser incluso en modo texto). El asunto es que se vean las jugadas en un  tablero electrónico, aunque éste sea muy simple y se observe cómo el algoritmo termina por ganar. ¿Tiempo aproximado para este reto? unas tres semanas, máximo cuatro. Dudas y comentarios a [email protected].

Referencias:

Qué Aprendemos 
Cybernetic Zoo 

Comentarios