El Rincón del Ajedrecista Junio 2013 | Page 28

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.