Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Saturday, August 22, 2026

Fotos con "caritas felices"




El arte digital tiene exponentes notables. Uno de ellos es Paul Van Scott, quien -de acuerdo a la IA- es un artista pop y digital estadounidense famoso por sus intrincados retratos de fotomontaje, sus ilusiones ópticas y sus singulares obras de mosaico creadas a partir de materiales poco convencionales, como caramelos M&M, fichas de póquer, chapas de botella y pelotas de golf. Cuando descubrí a este artista fue porque encontré una imagen de Bobby Fischer que es asombrosa y qué no sé aún, cómo hacer algo parecido. Puede verse esta imagen del ajedrecista norteamericano aquí. 

En alguna ocasión vi una de estas obras, también de Van Scott, hechas con caritas felices:


Claramente la obra es un "collage" digital en donde las caritas felices toman diferentes colores Cabe decir que Van Scott se toma la molestia de pintar cada carita feliz con un color promedio de la región en donde va a poner dicha carita y que ésta, además, es una imagen elaborada en 3D. Vamos, no es una carita feliz simplona (ver la imagn que sigue).

Hacer este tipo de obras requiere de varios pasos. En esta primera aproximación, se me ha ocurrido imitar esta idea de Van Scott pero con una carita feliz sencilla, es decir, plana, sin ser 3D.

La idea en el fondo es sencilla. Hacemos una rutina que ponga círculos que se sobreponen en cierto porecentaje unos con otros en un canvas, es decir, en el lienzo digital. Después, tomamos cada círculo creado y colocamos ahí una carita feliz con el color promedio de la región en donde se e ncuentra el círculo. Hacemos esto con todos los círculos. Las caritas felices se vana superponer unas con otras, pero eso es precisamente lo que queremos.




(Esta es una imagen PNG, con transparencia. Para efectos de las primeras pruebas, 
usamos esta imagen en formato JPEG, que no tiene transparencia asociada)

En este caso, la carita feliz original es una imagen JPEG, la cual no tiene transparencia y por ende, cuando insertamos una carita feliz en la imagen resultante, el fondo de esa imagen no es transparente y en ocasiones uno se da cuenta de un borde alrededor de la carita feliz. Pero en realidad, como las caritas felices son muy pequeñas, no se nota francamente este problema en general. Sin embargo, el plan es usar imágenes PNG, las cuales tienen transparencia, para que así sea más fácil el poner las imágenes superpuestas.

Un detalle final fue el que las caritas felices rotaran sobre su centro, para evitar ser tan monótonos. He aquí el software:



La imagen resultante (como la imagen original), pueden estar ligeramente distorsionadas para que se vean completas en los lienzos de la imagen original y la de resultados. He aquí las imágenes original y final:





He aquí una región ampliada:


Desde luego se puede elaborar mucho más... Ahora que tenga una versión funcional con imágenes PNG, pondré el software a disposición de mis 4 lectores. Seguiremos informando...


Monday, July 20, 2026

El Método Woodpecker (versión La Morsa)


Hace unos días vi el video de alguien que decía que a los libros de Grau (cuatro tomos del Tratado General de Ajedrez), ya había que jubilarlos. La queja del influencer era simple: estos libros no tienen ejercicios y más parece una liturgia en donde habla el todopoderoso Grau que nos enseña a jugar, explicándonos todo, pero ignorando la parte de la práctica. Y realmente tiene algo de cierto en lo que dice, aunque hay que reconocer que muchos grandes ajedrecistas del continente americano se hicieron gracias a la obra de Roberto Grau. Más aún, Grau tenía una tesis: jugar bien al ajedrez no es tan difícil, pero se requiere de entender la lógica que está en el tablero.

Pero como en todo, el ajedrez es mucho más vasto que lo que puede decirse en 4 tomos. Además, el tiempo ha pasado y cada vez hay más ajedrecistas, los cuales -muchos de ellos- nos han enseñado a trabajar en diferentes aspectos del ajedrez: cálculo de variantes, ejercicios de cálculo, finales, aperturas, etcétera.  Y es evidente que hoy se enfocan muchos métodos de mejora en ajedrez en el practicar los diferentes tópicos hasta dominarlos.

No es para nadie un secreto que, para dominar la parte táctica del juego, hay que hacer muchos ejercicios de táctica, de esos que se ven en revistas y libros de "Juegan blancas y ganan", "Juegan las negras y empatan", etcétera. Y se sabe que quien dedique tiempo a este tipo de ejercicios verá eventualmente una mejora en su nivel de ajedrez. Este asunto práctico es tan importante y muchos maestros lo saben, que la literatura en este sentido es amplia. 

Uno de los primeros libros con ejercicios lo publicó el Maestro estadounidense Fred Reinfeld, quien literalmente abrió brecha para que el ajedrez empezara a popularizarse. Reinfeld, por ejemplo, recolectó pacientemente 1001 posiciones de sacrificios y combinaciones brillantes. Lo hizo sin computadora, sin bases de datos, sin Chessbase. Seguro le llevó años recolectar todo su material. Pero además hizo otro libro con 1001 combinaciones de mate. Igualmente, una labor sistemática para poner todas estas posiciones donde un jugador vence a su rival de forma espectacular. estos dos libros se convirtieron en obligatorios para todo aquel que tomase en serio el ajedrez.


Otros autores siguieron esta idea y Nunn sacó más de un libro de combinaciones brillantes. Zenón Franco tiene otro, Khenkin hizo otro más con ataques de mate, etcétera. Y no es casualidad. Es claro, para la mayoría de los maestros, que es importantísimo el hacer ejercicios de táctica cotidianamente, De hecho, plataformas como LiChess, Chess.com, ICC y Chessable, entre otras, tienen secciones de táctica para que sus suscriptores trabajen en esta parte fundamental del ajedrez. 

En el 2018, se publicó el Método del Pájaro Carpintero (The Woodpecker Method). el cual es un duro programa de entrenamiento de ajedrez. ideado por el GM Hans Tikkanen y el GM Axel Smith. Su principio central es resolver cientos de problemas de táctica (hasta 1128) en ciclos sucesivos, reduciendo drásticamente el tiempo permitido para resolverlos y logrando así reconocer patrones de forma automática y subconsciente. Esto se reduce a hacer estos 1128 ejercicios en 4 semanas y repetir dos semanas después, una semana, etcétera, hasta llegar a tener que resolver todos los ejercicios en un día. Los autores dicen que gracias a esta idea finalmente lograron las normas finales para convertirse en grandes maestros, aunque el MI Oscar Sánchez, que de ajedrez sabe cualquier cantidad, dice que el método quizás funcione, pero no les compra la idea de que esto sea la diferencia para convertirse en gran maestro.

Yo ya intenté hacer el método del pájaro carpintero, pero no pude. Se requiere de disciplina (y mucho más tiempo del esperado). Así, considerando que no estaría mal tener una visión propia del tema, decidí escribir un programa de computadora (software), que tomara los ejercicios de esta obra (que son posiciones de partidas famosas, y que pueden conseguirse en Internet en archivos PGN [Portable Game Notation] y que, cabe decirlo, no tienen derechos de autor), y me fuese presentando cada posición para así poderla resolver. Esto es mucho más ágil que hacerlo con el libro y anotando las jugadas para después revisar las soluciones. Esto puede ser la diferencia entre poder o no realizar la idea de Tikkanen y Smith.


Me tomé algunas libertades ´para poder crear una aplicación que fuese más ágil para el estudioso del ajedrez. Por ejemplo, decidí que solamente el sistema vería la variante principal y no la sub-variantes. Así, cada posición presentada muestra cómo se resuelve en la línea principal. Eso hace menos complicado trabajar sobre las posiciones y el estudiante tiende a perderse menos que cuando tiene una posición con muchas variantes. Recuérdese que se trata de repetir posiciones con motivos tácticos para que después de N repeticiones, el cerebro las aloje en su subconsciente y con ello hacer que el conocimiento sea ya del estudiante. Tampoco es novedad que la repetición en cualquier ámbito del conocimiento es fundamental para dominar un tema. Un ejemplo clásico: los músicos que tocan algún instrumento.

El software se ha hecho con mucho cuidado y me gusta el resultado. Hay otros libros de táctica que me parece vale la pena pasarlos a este sistema. Estoy en las modificaciones para generalizar su funcionamiento y así poder tener los 1001 problemas que Reinfeld puso en sus dos obras clásicas. Es más, encontré además una base de posiciones pública, de LiChess, con más de ¡6 millones de ejercicios de táctica!, para niveles de 0 hasta 3000 de Elo. Ya estoy trabajando para tener una versión que contenga todos los ejercicios y ahora sí, digamos que el tema estaría bastante completo. Cabe decir que la base de datos de ejercicios de LiChess salió de las partidas que se juegan en ese portal. Los autores de esta enorme base de posiciones se tomaron la molestia en calificar de forma automática el nivel de cada posición en términos del Elo, que mide la fuerza de un ajedrecista, por lo que, en principio, se puede hacer un software que solamente presente ejercicios del nivel que el estudiante quiera.


El plan es ahora recuperar la inversión del desarrollo del software. El costo de mi sistema es muy accesible y si me escriben a mi correo: morsa@la-morsa.com, les puedo mandar información sobre e costo de los diferentes programas. Pero créanme, es más costosa una salida al cine o a cenar.






Thursday, June 18, 2026

Buscar combinaciones en ajedrez con la computadora


 Todo ajedrecista que quiera mejorar, debe hacer ejercicios de táctica. Estos ayudan a crear la visión cuando hay una posible combinación, lo cual es básicamente un reconocimiento de patrones. El ajedrez se puede estudiar precisamente porque se repiten las situaciones. En ocasiones es difícil hallar el o los motivos que hacen que una combinación sea posible, pero claramente existen configuraciones, patrones, que nos permiten descubrir las posibilidades combinativas en ciertos momentos de la partida.

 Hoy tenemos muchos libros de ejercicios de táctica. ¿Cómo es que fueron escritos? El primero que se me ocurre es el de Fred Reinfeld, “1001 combinaciones de mate”. Se hizo cuando no había computadoras y probablemente el autor recolectó, a través de los años (tampoco había Internet), cientos de posiciones. Cuando tuvo 1001 mates interesantes, los plasmó en un libro. Fue una labor de años, probablemente. Hoy, sin duda, este trabajo es mucho más fácil de hacer.

 Por ejemplo, tenemos un ejército de youtubers e influencers, que cada vez que ocurre una combinación brillante en algún torneo, la publicitan en sus respectivos canales de videos. Así, viendo los canales de algunos de estos entusiastas creadores de contenido de ajedrez, podríamos ir recolectando partidas de forma mucho más sencilla.

 Pues bien, pensando en esto, se me ocurrió discurrir sobre la posibilidad de escribir una aplicación (software), para que dado un archivo PGN (una colección de partidas), me dijera el sistema en qué momento se dio alguna combinación.

 Evidentemente el problema es definir lo que es una combinación para la computadora. Algunos criterios podrían ser:

  •  ·         Secuencia forzada con ganancia material
  • ·         Mate en N jugadas
  • ·         Sacrificio seguido de ventaja clara
  • ·         Evaluación que cambia drásticamente (ej. +0.5 → +5.0)
  •  

Para ello podemos usar un motor de ajedrez como Stockfish, Houdini, etcétera. El único requisito sería usar el protocolo UCI para comunicarse con el programa de ajedrez para que nos ayudara en esta labor.

 El flujo sería algo como esto:

 Archivo PGN → Parser → Tablero posición por posición → Motor de ajedrez → Detección de combinación → Reporte

 Un detector de combinaciones debe entonces definir las reglas de esta manera:

  •  Si la evaluación cambia más de X puntos → posible combinación
  • Si hay sacrificio + mejora → combinación
  • Si hay mate en N → combinación

 Por ejemplo, el reporte potencial que debería entrega el software es:

 Partida 12 (Kasparov vs Topalov)

  • → Jugada 24: combinación detectada
  • → Evaluación: +0.3 → +6.5

 Habría que ver, más adelante, si puede saberse qué tipo de combinación es la que ocurre, por ejemplo:

 → Tipo: sacrificio + ataque

 pero por lo pronto, nos bastaría saber si el cambio radical en la valoración del motor de ajedrez, es suficiente como para definir que existe una combinación.

 Yo estoy convencido que no es un criterio absoluto y que habrá un alto porcentaje de combinaciones detectadas únicamente usando este criterio. No obstante, podrá haber "falsos positivos", con los que habrá que lidiar.

 Por ende, me senté a escribir mi analizador de partidas de ajedrez. La conexión entre el engine de ajedrez y mi programa (en Delphi 7), fue quizás lo más complicado. Primero usé un componente de terceros, pero parece que no usa threads  (hilos e ejecución, que son una forma de ejecutar código en paralelo al flujo principal de tu programa), y entonces la interfaz gráfica se congela de manera aleatoria. Gemini me dio la solución (y hasta me ayudó con el fragmento de código), y entonces todo fluyó.

 La imagen 1 muestra mi software evaluando una partida mía, en donde hice una simpática combinación al buen amigo, el Dr. en Física, Efraín Chávez, que reconozco, siempre tuvo mala suerte conmigo cuando nos tocó jugar (y que con él lo hemos comentado en más de una ocasión). La partida está analizada aquí.

 


Imagen 1

Nótese la valoración que da Stockfish en LiChess, la cual se mantiene bastante parecida. Las diferencias son porque LiChess tiene computadoras y servidores más robustos y rápidos. Sin embargo, en mi máquina se mantiene la misma forma de la gráfica (Véase la segunda imagen).

 


Imagen 2

Puede verse que el error del negro ocurre en la jugada 16, en donde pasa de +0.2 a +4.8. El cambio es muy brusco, lo que sugiere fuertemente una combinación (que de hecho, existe).

 ¿Para qué puede servir este software? Fácil: se puede poner una colección de partidas en formato PGN y pedirle al programa que analice automáticamente cada una de estas partidas e indique si se sospecha de una combinación, al haber un cambio brusco en la valoración.

 Ahora estoy trabajando sobre la interfaz con el archivo PGN. Sin embargo, los avances hasta ahora me tienen contento. Cabe decir que hay un sitio, https://chessgrammar.com/, el cual hace algo similar, pero es de paga (aunque da oportunidad de probarlo de forma gratuita). Hace algunas otras cosas, como reconocer algunos patrones tácticos. Se ve bien pero no sé qué tan efectivo sea. En cualquier casoo, cmo ejercicio de programación me parece una buena idea.

Seguiremos informando.

Monday, April 07, 2025

Mejoras sobre mi software de dados


En las últimas semanas he recibido muchas peticiones de mi programa de creación de imágenes con dados. Así que me senté a agregarle un par de cosas que tenía pendiente desde hace tiempo: la primera era hacer imágenes con dados que se viesen más realistas y lo segundo, hacer imágenes usando dados de colores. Por el momento agregué solamente dos colores (naranja y azul claro), pero pobablemente en estos días agregue más.

A quien le interesen estas modificaciones, escríbame a mi correo: morsa@la-morsa.com y a vuelta recibirá las condiciones para que pueda enviárselo. En este caso he pedido una cuota de apoyo simbólica. Servirá además para darme cuenta qué tanto la gente se interesa cuando tiene que pagar algo por el programa. Vamos, hasta de experimento social va a servir. Por cierto, a quienes quieran el software y paguen la cuota establecida, los pondré en una lista para que puedsan recibir las siguientes actualizaciones sin costo alguno.

Gracias. 



Michael Jordan hecho con dados realistas



Detalle de la imagen



Jordan en naranja




El siguiente video explica lo que he hecho: 




Sunday, May 07, 2023

Fotografías hechas con Post-it


El proceso digital de imágenes permite hacer un número increíble de transformaciones en las fotografías. Hay filtros gráficos para encontrar el borde una imagen o bien, para hacer más precisa una región de la misma, o el poder quitar los "artefactos", es decir, los puntos indeseables que de pronto aparecen en las fotografías.

Hace tiempo escribí dos entradas al respecto, las cules pueden verse aquí y aquí. En este caso escribí un programa que -con un mosaico de estrellas, rectángulos redondeados o círculos- creaba la imagen de la fotografía a procesar. Los resultados fueron interesantes.

Sin embargo, quedaba pendiente una idea, la de hacer imágenes usando sólo Post-it, esas pequeñas notas de papel de 3M, que se hicieron muy populares hace algunos años. De hecho esto lo tenía pendiente desde hace mucho tiempo. La idea era crear un mosaico como el de las imágenes (ver los dos enlaces más arriba), pero usando una colección de Post-it. Cabe señalar que el problema de hacer imágenes con Post-it, en términos reales, es que 3M no proveé muchos colores para los Post-it aunque me da la impresión que hoy en día usa la paleta web (que contiene 216 colores), para pintar sus notas con pegamento.

Pues bien, un buen amigo me hizo con algún programa de gráficas o de animación, diez imágenes de Post-it. Estos simulaban cómo quedan pegadas estas notas en una superficie. Se ve la sombra de cada uno de ellas o bien, cuando no están bien pegadas, etcétera. Estos son un par de imágenes al respecto:






Al tener estas imágenes, lo único que tenía que hacer era rellenar cada post-it virtual con el color de cada región de una imagen, es decir, de una fotografía a la cual le aplicaría el filtro mosaico y entonces, cada región promedio sería sustituida por un Post-it con ese color promedio.

Escribí entonces las rutinas necesarias y las incorporé a mi programa. Estos son los resultados:




Dar click para agrandar la imagen


He aquí un fragmento de cómo se ven:


Este es un fragmento ampliado de la imagen:


Dar click para ampliar


Como puede verse, el resultado resulta bastante aceptable. A quien le interese el software, escríbame a morsa@la-morsa.com y se lo mando a vuelta de correo electrónico.

____

(*) La imagen inicial de este artículo es de https://www.pinterest.co.uk/pin/370280400622612839/

Tuesday, March 07, 2023

La computadora que hace arte II

 


A mí me parece que la computadora moderna es francamente una revolución, como lo fue en su momento el teléfono o la televisión. Si a eso le añadimos el acceso a Internet, pues tenemos todos los ingredientes para hacer maravillas, sobre todo si pensamos que todos estos elementos están al alcance de las mayorías.


Si pensamos en las gráficas, la computadora ha avanzado considerablemente y de tener apenas 4 colores en su tarjeta gráfica (1981 en la IBM PC original), hoy podemos desplegar casi 17 millones de colores. De hecho, ya no hay que diseñar tarjetas más poderosas porque -aparentemente- el ojo humano ya no puede distinguir más tonalidades.


En lo que se refiere a proceso digital de imágenes (en 2 dimensiones), podemos escribir filtros que sirvan para segmentar imágenes, para cambiar el contraste y el brillo y hacer más visible alguna región que ha aparecido oscurecida, por ejemplo, lo que quizás podría ser útil en el proceso de imágenes médicas. Algunos filtros podrían incluso investigar -con inteligencia artificial- lo que los médicos suponen es un tumor o un elemento que no debería estar en un lugar específico del cuerpo.


Pero hay también filtros gráficos, como los que vimos en el artículo pasado. Pues bien, me quedé con las ganas de implementar un filtro como el de los círculos o rectángulos redondeados, pero en esta ocasión con la figura de una estrella. Puse manos a la obra y quizás en media hora pude implementar el procedimiento correspondiente.



Debo reconocer que esperaba un resultado "más espectacular", pero no fue así. Sin embargo, tampoco es despreciable el resultado. Para esta prueba usé una foto de Polina Tsarenkova (polina_tsarenkova en Instagram), quien creo es una modelo rusa y bueno, califíquenla ustedes. De nuevo, la técnica usada es similar a la que ya expliqué en el artículo pasado.


Quizás lo interesante es ver cómo vía un algoritmo sencillo, amén de tener acceso a sistemas de cómputo verdaderamente poderosos, pueden permitirnos crear filtros con visos artísticos sin necesidad de tener que hacerlos "a mano". 





(Click para hacer más grande la foto)


 

Saturday, February 25, 2023

Pepe Gordon recursivo

 Hace unos 20 años trabajé una idea para un filtro gráfico que surgió de mi investigación sobre los fotomosaicos. En ese entonces hallé que una mujer llamada Beth Clemens había creado una imagen recursiva de ella misma. Esto es, había tomado su foto, cuadriculado su imagen, poniendo la misma imagen de Beth en las pequeñas regiones de la cuadrícula, usando como base el tono de gris de esa región, el cual simulaba poniendo un brillo a la imagen original que coincidiera con ese gris. 

Esta es la image creada:

Fractal Beth

y este es el detalle de la misma:


Detalle de "Fractal Beth"


Intentando simular este efecto gráfico, que no es otra cosa que un filtro, decidí hacer mi propio software. 


El software creado...


La teoría de la creación de imágenes recursivas, es decir, imágenes que se recurren a sí mismas, (o dicho en otras palabras, imágenes creadas con otras imágenes), es verdaderamente simple. En el caso particular de imágenes creadas con la misma imagen (en tonos de gris), la teoría al respecto puede describirse de la siguiente manera:

  1. • Tomar una imagen a procesar (la que llamaremos imagen fuente) 
  2. • Pasarla a tonos de gris
  3. • Copiar esa misma imagen 30 veces pero con diferentes tonos de gris, en un gradiente que va de muy claro a muy oscuro
  4. • Hacer una rejilla en la foto original (una cuadrícula). Tomar cada pequeña región (una sección de la rejilla), y calcular el tono de gris de la misma. 
  5. • Sustituir el tono de gris encontrado por la foto con el tono de gris más próximo.

Queda claro que hacer imágenes recursivas con la misma imagen fuente requiere de generar las imágenes que sustituirán regiones de puntos. Para el caso del blanco y negro es relativamente fácil, porque la paleta de tonos de grises no es mayor que 256 tonos de gris. Los componentes en gris para el negro, en RGB son R=0, G=0, B=0. Para un negro menos oscuro, por decirlo de alguna manera será: R=1, G=1, B=1, y así sucesivamente hasta llegar al blanco, el cual tendrá como componentes RGB las siguientes: R=255, G=255, B=255. En la decisión del diseño del software de fotos recursivas en tonos de gris, la ocurrencia más simplista fue usar 30 fotos con tonos de gris diferentes. 

Apliqué este programa a una foto de Pepe Gordon, uno de los mejores divulgadores de la ciencia en nuestro país, gran escritor y mejor amigo. He aquí el resultado:


y este es el detalle:

Como puede verse, la foto final puede definirse así: "Esta es una foto de Pepe Gordon hecha con la misma foto de Pepe Gordon", de ahí que se recurre a sí misma para entender dicha imagen.

Las imágenes recursivas son en realidad un subconjunto de un tema mucho más amplio. La naturaleza parece ser recursiva, se llama a sí misma y por ende, parece ser que gracias a ello la Naturaleza funciona a las maravillas. 

Va pues este artículo dedicado a Pepe Gordon. Yo sé que él valorará el resultado final.

Friday, June 03, 2022

Los datos del ajedrez mexicano (y de otros países)



La Federación Internacional de Ajedrez (FIDE por sus siglas en francés), es el organismo que sanciona el juego ciencia en todo el planeta. Es el encargado de organizar los torneos por equipos (a niivel internacional), campeonatos europeos por ejemplo, así como olimpiadas de ajedrez (antes llamados torneos de las naciones), entre muchos otros torneos, incluso para diferentes edades y categorías,  y por si todo esto fuera poco, organiza el campeonato por el título mundial, amén de las justas para elegir al retador del actual Campeón Mundial (Magnus Carlsen).

La FIDE lleva también el control de la puntuación Elo, o rating, que es una medida numérica que representa la fuerza ajedrecística de cada jugador. El sistema de rating (como lo llamó su creador, el físico Arpad Elo), toma en cuenta una idea muy simple: estadísticamente el resultado más probable cuando se enfrentan dos jugadores de la misma fuerza, es el empate. No importa si los contrincantes son jugadores de 3a fuerza o jugadores de la elite.

Elo desarrolló una serie de fórmulas para establecer cuantos puntos se ganan (y se pierden), cuando se juega con diferentes ajedrecistas que tienen más o menos rating que uno. Igualmente, puede calcular los puntos que se pierden cuando un jugador superior cae derrotado por uno inferior. Elo armó una simple tabla que casi es lineal (se curva en los extremos), por lo que calcular el nuevo rating de un jugador es una cuestión de sumas, restas y multiplicaciones.

Cada mes, la FIDE publica una lista con el rating de todos los jugadores asociados. Esto significa que podemos saber quiénes son los jugadores más fuertes de la lista. Por ejemplo, hoy día Magnus Carlsen tiene el más alto rating de la historia: 2864 puntos. Esto es una barbaridad. Un Gran Maestro (título que otorga la propia FIDE), empieza en 2500 puntos. Con esta simple comparación podemos pensar que un Campeón del Mundo puede derrotar el 95% de las ocasiones a alguien con la puntuación Elo mínima de Gran Maestro. Vamos, quien escribir tiene unos 800 puntos menos que Carlsen. Las tablas matemáticas de Elo pronostican que yo no podría ganarle una partida en cien. Así de fuerte es el campeón mundial.

El trabajo de Elo es francamente relevante porque finalmente se pudo dar un criterio numérico a algo tan incierto a la habilidad de un jugador de ajedrez. Tan es importante esta contribución que ahora los organizadores, para invitar a los jugadores a sus torneos, revisan esta lista para ofrecerles jugar en sus respectivos torneos. Antes el título honorífico de GM (gran maestro), MI (maestro internacional) o FM (maestro FIDE), eran los criterios aceptables. Hoy estos títulos son más por la vanidad del jugador, porque lo que ahora habla por su fuerza es su puntuación Elo.

La publicación de la lista de rating mensual se puede descargar del sitio web de la FIDE y dicha lista, que contiene unos 380 mil jugadores viene en orden alfabético. Por lo tanto, saber quiénes son los ajedrecistas mexicanos que están incluidos en la lista no es un asunto trivial. Entonces se me ocurrió escribir un programa simple, que lee el archivo descargado (que viene en modo texto sin símbolos raros) y lo que hago es simplemente buscar las siglas MEX. Cuando el programa entonces procesa el archivo completo descargado, filtra los datos de los mexicanos. 

Por ejemplo, la lista de los mexicanos es de 10080 jugadores registrados en la FIDE, lo cual me parece, no es nada despreciable. Esto quiere decir que el ajedrez mexicano tiene cierta presencia que se está incrementando desde hace algunos años. Desde luego que esto no es comparable a otros países, pero en la medida de los recursos con los que cuenta el ajedrez federado, bien podemos decir que la tendencia es de incremento.

El filtrado de la lista nos puede decir también cuantos grandes maestros tiene registrados la federación, o bien, cuántos maestros FIDE hay en el planeta. Por ejemplo, hay unos 1700 grandes maestros (el máximo título aparte del de Campeón Mundial) y en total hay  8470 jugadores con un título de Maestro FIDE.

A quien le interese esta herramienta, escríbame a morsa@la-morsa.com y le mando el software de manera gratuita.

Sunday, May 01, 2022

Entrenamiento en táctica con CT-ART


El ajedrez es 99% táctica, decía el Gran Maestro Teichmann y no le faltaba razón. Al final de cuentas toda la estrategia, todas las maniobras posicionales, incluso las más sutiles, se resuelven con un golpe táctico el cual define la partida.

Los ajedrecistas saben eso y los grandes maestros en general han trabajado en desarrollar sus habilidades tácticas de forma que al final de cuentas, no se les escape un remate de una partida por no ver una combinación, por más escondida que esté la misma. Y para ello lo que se ha hecho por muchos años es el trabajar muchos ejercicios de táctica, los cuales son fragmentos de partidas (reales o inventadas), de forma que el estudioso ponga la posición en el tablero (o la vea directamente en la impresión en el libro), e intente resolverla. Cuando se ha logrado el resultado deseado, se pasa a la siguiente posición, etcétera. Este es un trabajo sistemático que todo jugador ambicioso tiene que hacer si quiere llegar a jugar bien.

Por ejemplo, en los años 1960s, el estadounidense Fred Reinfeld, abrió brecha publicando en total unos 50 libros sobre ajedrez. El autor pensaba en el aficionado en general y sin embargo, tiene obras interesantes para todos los niveles. Reinfeld, que probablemente tenía la fuerza de un maestro internacional, publicó dos libros de entrenamiento táctico magníficos. 1001 Combinaciones y Sacrificios Brillantes (se puede descargar en inglés y con la notación descriptiva antigua aquí ) y 1001 Combinaciones de Mate (que se puede descargar de aquí ).



Cabe decir que Reinfeld hizo una labor de recolección de posiciones que se antoja complicada, porque no había Internet, ni muchos libros de ajedrez, ni la explosión de información que hoy vivimos. Es realmente notable el trabajo que hizo. Ambas obras de táctica del maestro estadounidense desde luego, pueden ser mejoradas, pero para su momento histórico son muy buenas y todo ajedrecista que busque mejorar tendría que empezar por estos libros.

Otros autores, como John Nunn, tiene "1001 Deadly Checkmates" y el "John Nunn's Chess Puzzle Book", que bien pueden considerarse las versiones modernas de lo que hizo Reinfeld. Hay que decir además, que no se trata de poner las combinaciones encontradas en libros y revistas, sino en tratar de poner posiciones que sean nuevas para el lector, porque muchas veces los libros de táctica repiten hasta el hartazgo posiciones ultra conocidas, por ejemplo, Torre - Lasker, de Moscú 1925, por mencionar una de las más famosas.



Zenón Franco, el GM paraguayo, también tiene un libro muy bien escrito: "The Giant Chess Puzzle Book", el cual contiene también unos 1000 ejercicios de táctica. Es claro que quien trabaje con este material de manera metódica y disciplinada, verá resultados en los meses siguientes a su estudio.


Pero hay más, la empresa ChessOK.com tiene un software clásico llamado "CT-ART" (Chess Tactics Art), basado en un libro de ejercicios de Blokh.  Aquí la diferencia es que el sistema es más interactivo. El software pone la posición y el usuario debe mover las piezas en el tablero electrónico para resolver el problema planteado. Si uno hace una jugada equivocada, el sistema le pondrá flechas y ayudas. Si aún así el usuario hace una jugada mala, el programa mostrará un ejemplo abreviado con el tema y volverá al problema principal cuando se resuelva el ejemplo ilustrativo. Por cada fallo, el sistema quita puntos y así mide el Elo, es decir, la fuerza ajedrecística del usuario. Tiene unos 2000 ejercicios y el programa se diseñó para jugadores de 1400 a 2400 puntos, aproximadamente. CT-ART cuesta unos 10 euros para la PC. Lo mismo cuesta la app en iOS o en Android (aproximadamente). De hecho, yo compré la versión Android porque así puedo practicar mi táctica en el autobús, cuando espero en el dentista, etcétera.


Así que por material e información no paramos. No hay pretexto. El costo de la app CT-ART es verdaderamente económico para el servicio que puede darnos. Los libros mencionados se pueden descargar todos en PDF. ¿Qué es lo que falta entonces? Simple: aplicarnos y trabajar en serio en nuestro ajedrez.


Thursday, February 10, 2022

Inteligencia Artificial para mejorar la calidad de las fotos


Hoy en día hay toda clase de filtros gráficos. La plataforma ideal para ellos parece ser la de los teléfonos inteligentes. A la gente le gusta tomarse fotos o bien ponerse frente a la cámara de su celular y aplicar alguno de los numerosos filtros gráficos los cuales, de alguna manera, son estupendos y están muy bien escritos. 


Hace apenas un par de días encontré una app llamada Remini AI, la cual promete mejorar la calidad de las fotografías antiguas, pixeladas, borrosas, etcétera. ¿Qué tan bueno será? Y mi pregunta es legítima porque entiendo el problema, el cual lo discuto en mis clases de procesamiento de imágenes. Vamos, en esta asignatura hacemos filtros que hacen las imágenes más borrosas, las pixelean, las hacen más precisas (filtro "sharpen"), laas diterizan, entre muchas otras cosas. Pero la mayoría de estos filtros no son biyectivos, es decir, una vez aplicados no se puede recuperar la foto original.


Un ejemplo de esto es el filtro que convierte una imagen de colores en una en tonos de grises. No se puede hacer el proceso inverso. Una vez realizado el filtro se pierde la información de color y oor ello, incluso Photoshop de Adobe, pregunta si queremos continuar con el filtro porque no hay marcha atrás (aunque el software de Adobe tiene un buffer donde va guardando todo por si nos arerepentimos).  


La publicidad de Remini AI es notable:



Considerando lo anterior, decidí probar qué tan bueno era el software. ¿De verdad usará inteligencia artificial? No encontré ninguna descripción de cómo hace el trabajo, pero bueno, veamos con un ejemplo, usando una foto mía y procesándola con Remini AI en el teléfono Android que tengo.


Esta es la foto original y al lado está la foto que decidí procesar, a la que le apliqué el filtro blur (borroso) en un 23% aproximadamente.


                                        Original                                               Imagen con blur (borrosa)


Le apliqué el filtro y este es el resultado que presentó:

Efectivamente el software hace bastante bien la tarea y claramente el proceso no es muy tradicional, es decir, el software sí parece tener algunos criterios inteligentes para procesar la foto. Pero id., lector, lectora, ¿qué opina de este filtro? (he aquí la captura hecha en el teléfono):




Saturday, November 13, 2021

Bosquejo para crear software que genere y resuelva crucigramas




Uno de los temas que tengo en el tintero, desde hace años, es cómo se crean los crucigramas que vemos publicados en los periódicos. Y eso me lleva siempre a preguntarme: ¿Usan algún software específico para eso? ¿Es posible escribir un software que genere crucigramas "profesionales", es decir, crucigramas que contienen ciertas características (de las que hablaré más adelante)? Y más aún, es posible escribir software que -dado un diccionario de palabras (quizás muy grande), pueda resolverlos automáticamente.

Si lo pensamos, muchos juegos se resuelven ya hoy en día a través de software, por ejemplo, los sudokus, el cubo de Rubik, etc. La idea de software que genere y resuelva crucigramas cae probablemente en la "programación lúdica" y sin embargo, es un interesante reto a resolver. Para ello, primero definamos lo que quiero decir con un crucigrama "profesional". Básicamente es aquel que en la mayoría de los casos es una malla cuadrada de letras, en donde los límites entre las palabras son cuadros negros que forman una imagen geométrica, muchas veces incluso simétrica. Por ejemplo, el siguiente crucigrama no es muy profesional. El dibujo de los cuadros negros está más puesto por las necesidades de cómo están puestas las palabras que por el hacer un dibujo simétrico.


El siguiente crucigrama, es uno profesional. Obsérvese que el dibujo que se genera es simétrico. Esto es lo común en los crucigramas que aparecen en los periódicos y otras publicaciones.

Podemos pues definir el problema en dos partes: i. generación de un crucigrama y ii. resolución del mismo. Analicemos brevemente ambos temas:


i. Generación de un crucigrama

Crear crucigramas requiere de una lista de palabras y de una cuadrícula, que no necesariamente debe ser cuadrada, en donde aparecen las palabras elegidas. Desde luego que esas palabras deben poderse definir de acuerdo al diccionario de la Real Academia de la Lengua para así crear el acertijo completo. No es fácil, al menos en esta primera incursión, saber si primero debemos dibujar los cuadros negros, los límites de las palabras o bien, empezar a poner palabras y después poner el correspondiente dibujo de cuadros negros. En primera instancia pareciera que es necesario primero definir la imagen de cuadros negros y entonces empezar a acomodar las palabras. Hacerlo de manera inversa parece más difícil en el momento de querer dibujar una figura simétrica.

Desde luego, podemos en un principio obviar el problema de la figura de cuadros negros simétrica, pero claramente es importante en el momento de escribir un software que bien podría usarse en publicaciones comerciales. Así, dada una colección de palabras, tenemos que tener una manera de revisar de forma automática su definición, para poder incorporar después esto en el acertijo final. Una idea sería tener un diccionario de la Real Academia de la Lengua Española en formato electrónico para así hallar por software las definiciones que necesitamos. Afortunadamente hay más de una versión de este diccionario en PDF.

Una vez teniendo esto, probablemente lo que haya que hacer es categorizar las palabras que se quieren poner en el crucigrama en el número de letras, de una letra, dos, tres, hasta N letras. Esto parece ser una buena idea porque también podemos hacer un dibujo de cuadros negros y hacerlo de manera tal que haya espacio para palabras de una letra, dos letras, tres letras, etc.

Y una vez que tenemos todo esto, empezar por asignar a alguna parte de las cuadrícula una palabra... y entonces ver si podemos poner alguna otra que sea en el sentido opuesto, es decir, si pusimos una palabra en vertical, la siguiente debería ser quizás horizontal. No podemos poner todas las palabras horizontales o verticales porque entonces tendríamos zonas con palabras sin sentido. Podemos seguir este proceso hasta que ocurra un camino cerrado y entonces, al no tener ninguna palabra para poner tenemos dos opciones: a. buscar una palabra que cumpla con ciertos requisitos y entonces ponerla o bien, b. desechar la última palabra puesta y buscar otra, en un proceso de backtracking que bien podría irse casi hasta la primera palabra puesta si es necesario. Si hacemos esto último, el problema es que no podríamos garantizar que el crucigrama se generara. Es decir, tendríamos un programa indecidible. Sin embargo, este problema, el núcleo de la creación de un crucigrama, lo hace un problema fascinante.


ii. Resolución de un crucigrama

He visto desde hace mucho programas que buscan resolver crucigramas automáticamente. De hecho, en un libro en Prolog vi un pequeño programita que resuelve un crucigrama trivial, el cual lo hace a través de backtrack (ver aquí - https://la-morsa.blogspot.com/2009/07/creador-de-crucigramas.html). La idea es simple: se busca una primera palabra de la lista que contenga el número de letras que llenen el espacio de letras que estamos buscando. La ponemos y ahora buscamos la segunda palabra, que intersecte con la primera en alguna letra y qué, además, tenga la cantidad de letras necesarias para llenar el espacio. Si la encontramos la ponemos en el crucigrama y seguimos buscando. Pero... ¿qué pasa si hay un error y no tenemos ningunas palabra que resuelva el siguiente espacio de letras? Pues hacemos backtrack, es decir, nos regresamos al paso anterior, buscamos otra palabra que cumpla con las condiciones de la última palabra requerida (que sea diferente a la que ya pusimos). Si la hallamos, la ponemos y seguimos. Si no encontramos ninguna palabra, entonces hacemos backtrack sobre la palabra anterior a esta, y así sucesivamente. Eventualmente -si el crucigrama se puede resolver- el sistema lo podrá solucionar. Sin embargo, de nuevo caemos en el terreno de lo indecidible.


Otros detalles

Cabe decir que los crucigramas profesionales ya usan algunas palabras que ocurren frecuentemente cuando se generan este tipo de acertijos. Por ejemplo, muchas veces aparece "Dios del Sol egipcio", lo cual es "Ra". Hay así algunas palabras comodines que nos ayudan a la creación de un crucigrama profesional. En cambio, un crucigrama no profesional, de aficionado, cuando tiene que llenar un espacio y le quedaron las letras AVZ, por ejemplo, lo resuelve definiendo esa palabra como "Arturo Vázquez Zetina (iniciales)". Esto es muy poco profesional y me parece que este recurso no se usa en los crucigramas comerciales.

El problema de generación y resolución de crucigramas, creo yo, da para una tesis de licenciatura en la carrera de ciencias de la computación y/o matemáticas. Si alguien quiere hacer tesis con este tema, escríbame a morsa@la-morsa.com y lo platicamos.