alfil de c2 ataca el peón de h7» y
punto final. Este es un enunciado del
patrón. Para este particular ejemplo
tenemos el patrón definido de la
siguiente manera:
►Dama blanca en h6
E
sto nos indica que la
descripción del patrón debe
ser absolutamente precisa.
H
e aquí el patrón definido en el
tablero:
►Alfil blanco (de casillas blancas)
atacando el punto h7. De hecho, con
esta descripción no tenemos que
indicar en dónde está el alfil, si en
b1, c2, d3, etcétera.
►Rey negro en g8.
►Peón negro en f7, defendido
solamente por el rey.
►Puede haber un peón negro
opcionalmente en h7 pero éste
solamente debe estar defendido por
el rey.
Patrón ejemplo
Caracterización de las
posiciones
C
►Solución del patrón: Juegan las
blancas y ganan con la combinación
1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.£h7+
¢f8 4.£f7#
H
emos caracterizado la posición
simplemente en términos de
ataques y defensas. Ahora se trata
de que esta descripción sea pasada
a un lenguaje de programación, o a
un mecanismo que permita guardar
el patrón y así buscar similitudes.
hecho esto, escribir el código que
busque las descripciones de estos
patrones en las partidas de ajedrez
o en las posiciones que se deseen.
Es claro que así como el sistema
debe buscar si existen los patrones
correspondientes, el sistema debe,
en cada partida analizada, buscar
todos los ataques y defensas que se
encuentren en cada posición de la
partida y entonces comparar contra
los patrones definidos. Si el patrón
existe, entonces el sistema debe
poder guardar o desplegar la
información sobre en qué momento
de la partida se encontraron uno o
más patrones.
►Usar alguna herramienta de
búsqueda en posiciones de ajedrez,
por ejemplo Chess Query Languaje
(CQL).
A
mbas
posibilidades
son
factibles. Si se desea crear un
programa que haga toda la tarea, lo
cual da más versatilidad porque el
programador puede añadir lo que
considere necesario, hay que decidir
en qué lenguaje escribirlo. Hay dos
opciones:
onsideremos el patrón ejemplo
►Lenguajes de cuarta generación
con el que hemos comenzado
imperativos (Pascal, C),
toda esta discusión. El problema a
resolver es cómo caracterizar este
►Lenguajes lógicos y funcionales
patrón de manera que pueda ser
(Prolog).
leído por una computadora para
después pedirle que busque
ara ello hay las siguientes
a primera opción tiene una
similitudes, es decir, patrones
alternativas:
ventaja: ya hay mucho código
similares. Una opción sería crear un
lenguaje de descripción, como el ►Escribir un programa que fuente de terceros para manejar
posiciones de ajedrez, que leen
que permiten las matemáticas,
partidas en formato PGN, entre
por ejemplo, en el caso de la
multitud de tareas que realizan.
geometría analítica, en donde la
función f(x) = mx + b, que
a segunda opción tiene
identifica a una línea recta. En
la virtud de poder expresar
lugar de esto, ¿por qué no
de manera muy sencilla
representar el patrón sobre qué
piezas atacan, qué piezas Una estrategia para procesar los patrones predicados en Prolog, cláusulas
de Horn, para expresar
defienden, qué casillas son
importantes y dónde deben estar las permita, por una parte, crear los posiciones. Tal vez un esquema
piezas? Por ello, podemos decir, «el patrones que se necesitan. Una vez híbrido sea una buena opción, pero
P
L
L
27
Ciencia y Ajedrez
E
l peón de f7 está defendido por
la torre negra en a7, por ende,
las blancas no pueden dar mate en
4. Sin embargo, pueden empatar con
1.¥xh7+ ¢h8 2.¥g6+ ¢g8 3.¥h7+ y
tablas por perpetuo.