Durante las últimas semanas estuve trabajando en crear crucigramas en los que las palabras se crucen en tres direcciones. La idea se me ocurrió después de preguntarme si existían crucigramas en tres dimensiones y encontrar un sitio donde se publican algunos cuyas pistas colocan de manera simpática en calendarios, además de que las palabras no siguen una sola dirección como en los crucigramas clásicos sino que a veces dan vuelta hacia otra línea. A mí me pareció más interesante el problema de encontrar conjuntos de palabras entrecruzadas sin hacer esas «curvas» y encontrar la manera de hacerlos más fáciles de visualizar.
Desde el punto de vista de crear pasatiempos, no creo que con esta idea se obtenga algo más divertido que un crucigrama típico de dos dimensiones, pues con más cruces hay más pistas que facilitan la resolución. Por lo tanto, mi intención no fue publicar acertijos con definiciones para resolver, sino simplemente lograr un algoritmo que encuentre configuraciones con cierto conjunto de palabras válidas y una retícula de casillas dada.
Siendo así, puse manos a la obra para modificar el programa que hace meses hice para generar los crucigramas cuadrados. Sin entrar en muchos detalles técnicos, no fue muy difícil, pero requirió resolver algunos asuntos. El que considero más interesante fue elegir una disposición de casillas que pudiera recorrerse de manera ordenada para hacer la búsqueda y que al mismo tiempo tuviera tres ejes de simetría. Pensé en un arreglo de triángulos primero, pero al final me decidí por uno de hexágonos, para lo cual me sirvió mucho el contenido del sitio redblobgames. El sistema de coordenadas cúbicas para un conjunto de anillos de hexágonos fue la respuesta a lo que buscaba.
A continuación muestro un par de ejemplos de lo que conseguí implementando la idea en PHP, que es algo lento para la tarea, porque las soluciones posibles en estas retículas son pocas y tarda a veces horas en hallarlas, incluso con pocas casillas. Como trabajo pendiente queda portar todo a lenguaje C, con el que seguramente podré encontrar soluciones a retículas con un radio mayor en un tiempo razonable. Pasando el cursor sobre una casilla aparecen unas flechas que indican el sentido en el que se deben leer las palabras.
