Si una actividad recreativa ha sido la ganadora con la pandemia es el ajedrez. Hoy en día se puede jugar a través de Internet en sitios especializados, contra jugadores de todo el mundo, a un número increíble de tiempos de reflexión (un minuto por partida, tres minutos por jugador, con o sin bono de incremento en segundos, etcétera), y además, se han creado una serie de torneos con los jugadores más fuertes del mundo, que compiten por premios en metálico que suman las decenas de miles de dólares.

Todo esto ha hecho que el ajedrez en línea tenga un verdadero auge.

Para quienes jugamos, ya sea en línea o en torneos, sabemos que las partidas hay que anotarlas. La notación ajedrecística es un sistema de coordenadas, por lo que recibe el nombre de «notación algebraica» y así se puede registrar una partida completa de ajedrez. Por ejemplo:

  1. d4 e6 2. c4 Bb4+ 3. Nc3 Bxc3+ 4. bxc3 b6 5. e4 d6 6. f4 Bb7 7. Bd3 Nd7 8. Nf3 c6 9. e5 d5 10. cxd5 cxd5 11. Ba3 Ne7 12. O-O O-O 13. Bxh7+ Kxh7 14. Ng5+ Kg6 15. Qg4 f5 16. Qg3 Qe8 17. Nxe6+ Kf7 18. Qxg7+ 1-0

Puede verse que cada jugada se numera y consta de dos movimientos, el de blancas y el correspondiente para las negras. Al final, puede verse el resultado: 1-0 ganan blancas; 0-1 ganan negras y 1/2 es un empate.

Antes de esta partida, se añade un encabezado, que muestra los nombres de los jugadores, el torneo en donde se jugó la partida, etcétera, y se ve así:

[Event «ITA-ch»]
[Site «Venice»]
[Date «1883.??.??»]
[Round «?»]
[White «Salvioli, Carlo»]
[Black «Crosara»]
[Result «1-0»]
[ECO «A40»]
[PlyCount «35»]
[EventDate «1883.??.??»]
[EventType «tourn»]
[EventRounds «9»]
[EventCountry «ITA»]
[Source «ChessBase»]
[SourceDate «2006.11.23»]

Cabe decir que no todos los datos son necesarios. Por ejemplo [EventCountry «ITA»] o [Source «ChessBase»] no son obligatorios. Lo importante es que al menos tenga este encabezado el nombre de los jugadores (en este caso [White «Salvioli, Carlo»] y [Black «Crosara»], así como el torneo y la fecha en la que se jugó el encuentro ([Event «ITA-ch»] y [Date «1883.??.??»]).

De esta manera las partidas pueden transmitirse por vía electrónica y como puede verse, son archivos del tipo texto, sin símbolos o caracteres especiales. Un archivo que contenga muchas partidas tiene:

Encabezado
línea en blanco
Movimientos de la partida
.
.
.

Encabezado
línea en blanco
Movimientos de la partida
.
.
.

Por ejemplo:

[Event «ITA-ch»]
[White «Salvioli, Carlo»]
[Black «Crosara»]
[Result «1-0»]
[EventDate «1883.??.??»]

  1. d4 e6 2. c4 Bb4+ 3. Nc3 Bxc3+ 4. bxc3 b6 5. e4 d6 6. f4 Bb7 7. Bd3 Nd7 8.
    Nf3 c6 9. e5 d5 10. cxd5 cxd5 11. Ba3 Ne7 12. O-O O-O 13. Bxh7+ Kxh7 14. Ng5+ Kg6 15. Qg4 f5 16. Qg3 Qe8 17. Nxe6+ Kf7 18. Qxg7+ 1-0

[Event «GDSB-ch02 Zonenturnier»]
[White «Heinrich, Georg»]
[Black «Meyer, Christian Hermann»]
[Result «1-0»]
[EventDate «1934.03.29»]

  1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Bd3 c5 6. Nf3 Nc6 7. O-O Bxc3 8. bxc3 b6 e4 d6 10. e5 dxe5 11. dxe5 Nd7 12. Bxh7+ Kxh7 13. Ng5+ Kg6 14. Qd3+ f5 15. exf6+ Kxf6 16. Qf3+ 1-0

etcétera.

A esto se le llama un archivo PGN (Portable Game Notation).

Pero además, hay otra notación, que es la que nos interesa en este reto, llamada Forsyth Edward Notation (FEN), que describe la posición como si se tratara de la lectura de un libro, viendo el tablero de ajedrez de izquierda a derecha y de arriba a abajo (poniendo las negras en la parte superior).

A diferencia de los sistemas de notación para jugadas y partidas, este sistema se utiliza para anotar una posición en ajedrez.

Si tenemos esta posición:

Tendríamos esta posición representada en notación Forsyth-Edwards como: 4t1r1/p1p2pp1/1d1p3p/1P3P2/1P6 /2c1D3/PA4PP/4T1R1/.

Las iniciales T(orre, C(aballo, A(lfil, D(ama, R(ey y P(eón, representan las piezas blancas. Con minúsculas se ponen las piezas negras.

FEN exige un par de detalles más en su descripción, que pueden consultarse aquí.

El reto de esta semana

Hágase un programa que genere las posiciones FEN para un conjunto de partidas en un archivo PGN. De hecho, existen ya algunos programas que hacen esto y particularmente uno, de un francés, lo hace extraordinariamente rápido. De hecho, usaremos este parámetro para definir al ganador.

Quien genere todas las posiciones FEN del siguiente archivo (que puede descargarse de este sitio), será el ganador del reto. Las soluciones deben mandarse a [email protected]

El ganador (si es de la Ciudad de México), se hará acreedor a una taza con el logotipo de la Morsa. Si es de otro país o de provincia, le mandaremos un USB de al menos 16 GB.

Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero.

El ganador cede su código fuente a la comunidad. Los que estén interesados deberán mandar sus programas a [email protected]. Quien resulte ganador deberá entregar el código fuente para compartirlo con la comunidad.

Digamos que la idea es promover la creación de software y además, hacer que ésta sea de código abierto. Si el autor decide no poner su código accesible, perderá su premio.