miércoles, 20 de agosto de 2025

Oops Again

 


Este juego tiene 10 piezas y cada pieza consta de dos bolas unidas en un punto. Lo que diferencia unas piezas de otras son los colores de sus bolas. En el juego hay 5 colores diferentes y en las 10 bolas encontramos todas las formas posibles que hay de combinarlos de dos en dos (sin repetir colores en cada pieza).

El objetivo del puzzle es colocar las piezas formando una pirámide con base triangular de forma que dos bolas del mismo color nunca se toquen. El puzzle fue inventado por Mike Reilly y se comercializó en 1993 a través de Channel Craft. Bueno, en realidad se comercializaron dos juegos. La palabra Again dentro del nombre del puzzle hace referencia a otro juego de menor tamaño llamado Oops, con la mitad de piezas. Dejo aquí una imagen que conservo de hace bastante tiempo donde se ven los dos juegos (y que no recuerdo de dónde salió).


La verdad es que teniendo el juego grande, es muy fácil quedarse sólo con las 5 piezas necesarias para el pequeño y jugar. Simplemente eliminando todas las piezas que lleven uno de los colores (por ejemplo el lila) y otra pieza más (no importa cuál, por ejemplo el verde y azul).


Equivalencias y simetrías

Ambos juegos son bastante entretenidos y por supuesto es más difícil resolver el grande que el pequeño. Aunque ninguno de los dos nos llevará demasiado tiempo son muy entretenidos e interesantes. ¿Pero, cuántas soluciones tienen? Incluso contar las soluciones que vamos obteniendo no es fácil porque si tenemos una solución válida y hacemos una permutación de colores, obtendremos otra solución aparentemente diferente. Pero sólo aparentemente ya que supongo que todos coincidiremos en que se debería considerar como la misma ya que, por ejemplo en Oops again todos los colores son “simétricos” (en Oops hay dos grupos de colores).

Del mismo modo, si hacemos una rotación o cualquier otra simetría del tetraedro (de las 23 distintas de la identidad que tiene) obtendremos otra que también debería considerarse como equivalente. Es decir, tenemos dos formas de hacer que una misma solución parezca otra diferente pero sin serlo realmente (incluso una tercera que sería combinar las dos formas).

Al tener tantas soluciones equivalentes, lo primero que es importante es fijar una de ellas como “representante canónico” de todas. Y por supuesto pensar en algún método para poder anotarlas.


Buscando todas las soluciones

Desde que me fabriqué una copia de este juego (hace ya más de 22 años) siempre me ha intrigado saber el número total de soluciones del puzzle. Para Oops hice un pequeño análisis a mano y llegué a la conclusión de que tiene sólo dos soluciones, eliminando simetrías y permutaciones de colores (aunque como pondré al final de este post, este resultado no era correcto).

Pero con Oops again no he tenido tanta paciencia. Aunque empecé a analizarlo a mano, enseguida pude ver que tenía tantas posibilidades que no tuve valor a seguir intentándolo. Como siempre, teniendo BurrTools era obligado intentar hacer algo con este programa. Por lo menos conseguí ver que, considerando las piezas todas iguales e ignorando los colores, las piezas se podrían colocar de 213 formas diferentes para formar la pirámide.

Seguramente si intentase poner color a cada una de esas 213 soluciones para que cumpliese las restricciones del juego tendríamos que cada una (o muchas) se desdoblaría en varias coloraciones diferentes válidas. Con lo cual, efectivamente, eran demasiadas soluciones para hacerlo a mano. Sólo era razonable programarlo para que se resolviera con ordenador. Lo malo es que yo no sé nada de programación. Hace 10 años compartí en facebook una foto de este juego y animé a mis contactos a que buscasen el número de soluciones del puzzle. Pero imagino que nadie con los conocimientos necesarios se animó a hacerlo. Igual ya se conoce el número de soluciones, pero yo no he podido enterarme. También intenté contactar con Mike Reilly, pero no tuve éxito.


Programando en Python con IA

Finalmente, este invierno me enteré casualmente de que ChatGPT podía usarse para programar. Supongo que habrá otras IA que estarán más especializadas en programación, pero a mí se me cruzó esta en el camino y lo intenté con ella. Preparar la descripción de las piezas y las adyacencias dentro del tetraedro era lo más sencillo. Pero conseguir guiar a la IA para que el programa funcionase correctamente fue bastante trabajoso y a veces desesperante. Y supongo que alguien con bastantes conocimientos de programación lo haría con menos trabajo, más elegante y mejor.

Para empezar, pensé que sería bueno fijar una pieza concreta en un vértice de la pirámide (ya que todas las piezas son “equivalentes” en un principio. De ese modo ya habrá dos colores fijos y una pieza. Y para seguir “normalizando las soluciones” fijé también dos colores en las posiciones que forman un pequeño tetraedro con la pieza fijada en el vértice de la solución.

Con ese punto de partida y mucha ayuda por mi parte, la IA consiguió generar un programa con el que se obtenían 251626 soluciones y las pude guardar en un Excel para analizarlas. Según mi forma de “normalizar” los colores (eligiendo los 4 que formarían un vértice de la pirámide) ya se habrían eliminado las posibles permutaciones de colores.

Aún así, y dado que por el camino la IA había fallado con la implementación de mis requisitos en multitud de ocasiones, ese resultado me generaba bastante desconfianza. Por lo que intenté analizar un poco las soluciones del Excel obtenido. Lo primero que conseguí ver es que si ignoramos los colores, en la estructura de todas esas soluciones hay sólo 213 “estructuras” diferentes de las piezas. Es decir, la misma solución aportada por BurrTools. Eso me hizo tener algo más de confianza en el conjunto de soluciones que teníamos.

El siguiente paso que intenté fue modificar el programa (o mejor dicho, pedir a la IA que lo hiciera) para que en lugar de las piezas del puzzle usara sólo 20 bolas de colores sueltas. Es decir eliminar la “estructura” de las piezas y el puzzle para fijarnos sólo en cuántos coloraciones diferentes de la pirámide podían obtenerse. Resultado inicial: 3778 (ya eliminando las simetrías y partiendo de las soluciones “normalizadas”).


¿Cuántas soluciones tienen?

Y así creía haber concluido mi análisis del número de soluciones. Ya que en teoría las permutaciones de colores ya estaban tenidas en cuenta y también las 24 simetrías del tetraedro. Pero me faltaba probar también qué pasaba si las combinaba. Tomé una solución del juego, le apliqué una simetría y luego una permutación de colores adecuada para “normalizar” las solución (y así poder compararla con el listado de 251626 soluciones). De ese modo encontré que llegaba a otra solución teóricamente diferente de ese listado. Es decir, tenía que depurar esas soluciones ya que habría muchas equivalentes.

Es probable que lo mejor fuese modificar el programa para que tenga en cuenta esto. Pero yo tenía ya resultados en Excel y preferí seguir la vía de buscar otro programa que depurase estos resultados. Empecé con el que contenía las 3778 coloraciones diferentes del puzzle ya que me parecía más sencillo y de nuevo con Python conseguimos que esas soluciones se redujeran a 183 coloraciones.

De modo que 183 coloraciones diferentes y 213 “estructuras” diferentes podrían dar como máximo un total de 183*213=38979 soluciones (ya tenía una cota máxima para las soluciones del juego).

Y finalmente, después de bastantes equivocaciones y de casi tirar la toalla en varias ocasiones llegamos a reducir a 31617 las soluciones para Oops again (partiendo de las 251626 iniciales).

Y haciendo lo mismo (ahora a mano) con su hermano pequeño Oops pude comprobar que mis dos soluciones iniciales eran en el fondo equivalentes. Con lo cual, yo diría que Oops (10 bolas) tiene una solución única.


Estas son mis conclusiones y la verdad es que me gustaría que alguien con conocimientos de programación pudiera comprobar si son correctos o si estoy equivocado. Dar por correcto un resultado hecho con ordenador me resulta difícil si no se tiene confianza en el programa usado. Y en este caso, al no tener ni idea de programación mis inseguridades se multiplican. Pero lo que sí tengo claro es que todas las soluciones que he probado de mi listado son válidas y correctas.

Igualmente si alguien tiene algo que corregirme sobre mi forma de considerar soluciones equivalentes, lo debería hacer libremente.

martes, 12 de agosto de 2025

N52


 

Continúo con la serie de puzzles n-arios en este caso con el puzzle N52 de Jean Claude Constantin. Este puzzle es el segundo de una serie de puzzles ternarios donde tenemos un nivel inferior N5 de dificultad o de tamaño. Y, que yo sepa, se han fabricado también los niveles superiores: N522, N5222, N5, N52222222 y N522222222 (aunque el límite de las ampliaciones está sólo en la paciencia del jugador). 

 

Descripción.

Si conocías el juego seguro que la descripción que hago a continuación la necesitas, también puedes buscar algunos vídeos donde ver su manejo:

Como se puede ver en la fotografía de mi juego N52, el nombre deriva de “leer” las ranuras que aparecen en la línea inferior del puzzle orientado tal como aparece en la foto (y en la columna de la derecha). De modo que, por ejemplo N522 tiene una fila más y una columna más, y en la última línea se podrá “leer” el nombre del puzzle.

El puzzle consta de una serie de piezas en forma de listones horizontales que alternan los colores (3 en el caso de N52). Y por debajo de estos listones otros tres verticales que tienen una especie de pin metálico que hace de tope para limitar los movimientos. Estas piezas sólo pueden moverse deslizándose longitudinalmente sobre una base cuadrada de madera y por debajo de una cubierta transparente que permanecen fijas. En la posición inicial del puzzle (la de la primera fotografía) cada pin metálico de los 9 que tiene N52 se encuentra en la esquina superior derecha de esa especie de ranuras que son las que forman las figuras que le dan nombre al puzzle.

Observando la forma de estas ranuras vemos que se distribuyen siempre igual: una diagonal con lo que podríamos llamar la letra N. Por encima de esa diagonal aparece el simétrico de n, podríamos llamarlo U. Por debajo de esa diagonal principal tenemos otra diagonal con números 5 y por debajo de esta última todo son números 2. Toda la serie de Puzzles de esta familia mencionada cumple esta distribución.

El objetivo del puzzle es sacar una pequeña bola metálica que hay en un pequeño surco que tiene la primera pieza vertical (la primera por la izquierda). Esa bola se mueve junto con la pieza vertical en la que se encuentra. En algunos momentos durante la resolución del puzzle podremos inclinar el puzzle para que la bola pueda subir (y desplazarse en el hueco que tienen las horizontales a la izquierda) o bajar de nuevo según nos convenga. Para que al final podamos sacarla por el agujero superior que tiene la tapa de plexiglás del juego. (El otro agujero del plexiglás es para introducir la bola a su posición original una vez resuelto el puzzle y colocado convenientemente)

 






Notación, resolución y clasificación del puzzle

Según la clasificación que ha hecho de puzzles n-arios Goetz Schwandtner (y yo coincido con él), este puzzle es ternario. Esta clasificación se debe a que cada pieza deslizante vertical y horizontal podemos ponerla en tres posiciones diferentes (aunque realmente hay una que sólo la ponemos de dos formas). Y como consecuencia, para poder escribir los pasos que vamos dando en la resolución tendremos que usar 3 números (p ejemplo 0, 1, 2). Esos números describirán la posición de cada una de las piezas horizontales o verticales respecto de la posición inicial.

Así, para N52 usaremos una notación de 6 dígitos. El primero correspondería a la tira horizontal inferior, el segundo para la horizontal intermedia, luego la superior, después la vertical de la izquierda, y así seguiría con las dos que quedan. Además yo lo escribo con un espacio intermedio para distinguir mejor a simple vista las horizontales de las verticales.

De este modo la posición inicial (para mí) es 000 000. El primer movimiento nos permite pasar de golpe a la posición 000 200 (o si queremos podemos decir que pasamos por el camino por 000 100), Luego 100 200…

En un primer momento puede considerarse este código como un código Gray ternario (si consideramos los pasos intermedios por el 1 del cuarto dígito). Pero es bastante diferente a los que hemos usado otras veces para resolver los aros chinos o Cros&Crown.

La primera diferencia es que ahora no es estrictamente un código Gray reflejado (o por lo menos yo no he encontrado esa estructura). Aunque sí que hay subgrupos de movimientos repetitivos y que son reflejados de determinados movimientos anteriores. Esto hace que el puzzle dé una falsa sensación de que será repetitivo y elemental. En realidad hay que ir haciendo pequeñas variaciones, y es muy frecuente perdernos y acabar dando vueltas en círculo en los mismos movimientos.

Otra diferencia respecto a los mencionados aros chinos, Cross&Crown, etc es que el camino tampoco es totalmente lineal. En varios puntos a lo largo de la resolución, tenemos pequeñas alternativas para seguir otra vía, aunque son sólo de un paso y las dos nos acaban llevando al mismo sitio. También hay que mencionar que hay algunos callejones sin salida que a veces nos despistan. Todas estas diferencias hacen que el juego no nos lleve a recorrer el código gray ternario de 6 cifras completo, como sí sucedía con las series de juegos mencionados (vistos en mis post anteriores).

Además no se trata sólo de deslizar las piezas sino que no debemos perder de vista el objetivo del puzzle: sacar la bola. Por lo tanto hay que estar muy atento a los momentos en que tendremos que hacer que ésta cambie de nivel.

 

¿Número de pasos?

Goetz Schwandtner encontró una forma muy ingeniosa de modelizar esta serie de puzzles para ser resueltos por BurrTools (Su enlace directo para descargarlo: https://puzzles.schwandtner.info/compendium/extras/N_N5_N52_N522.xmpuzzle ).

(enlace sacado de aquí: Compendium of Chinese-Rings-Like puzzles )

Con un mismo modelo ha conseguido hacer que el programa encuentre las soluciones a N5, N52 y N522 (además de resolver lo que él ha llamado un nivel inferior a todos: N). En este archivo lo que no aparece es el movimiento de la bola.

El archivo está preparado para que el programa cuente los movimientos necesarios hasta hacer que todas las piezas horizontales lleguen hasta su posición extrema en la derecha. Además el programa mueve alguna vez (creo que sólo una vez) dos piezas al tiempo, con lo cual altera el recuento de pasos necesarios.

En resumen, según el programa el número de pasos es de:

    19 pasos para N5,

    68 para N52

    y 211 pasos para N522.

 Aunque yo creo que, si no me he equivocado en mi análisis, es posible sacar la bola usando 65 deslizamientos de las piezas horizontales y verticales de juego N52 (más 4 ó 7 movimientos de la bola, según cómo los contemos).

Aprovechando el archivo de Goetz y su idea en las piezas horizontales he hecho una pequeña modificación para obligar al programa a que siga analizando movimientos hasta llegar a la posición totalmente opuesta a la inicial. En este archivo podemos ver que se necesitan:

    29 pasos para llegar a 22 22 en N5,

    105 pasos para llegar a 222 222 en N52

    y 329 pasos para llegar a 2222 2222 en N522.

 En todo caso bastantes menos pasos de los que serían al recorrer el Gray binario completo. Ni siquiera transformando las secuencias que pasan de 0 a 2 directamente del cuarto dígito, en secuencias 0 - 1 - 2 (eso añadiría 31 códigos más en N52, llegando a 136).


Y ahora una conjetura: Esta familia de puzzles en la que podemos ir añadiendo filas y columnas subiendo el nivel de dificultad junto al número de pasos necesarios en la solución nos invita a buscar recursividad. Pues bien, me aventuro a decir que cada vez que añadimos un nivel, el número de pasos se triplica (sólo aproximadamente). Dividiendo el número de pasos para un cierto tamaño de juego (n) entre los pasos necesarios para el nivel anterior (n-1) ¿se va aproximando cada vez más a 3? ¿Alguien se anima a comprobarlo? De momento yo he probado a añadir un nivel más y en ese caso creo que serían unos 631 pasos depurados (631/211=2,99 usando el modelo de Goetz)

 

viernes, 25 de julio de 2025

Cross & Crown


En este post vamos a seguir analizando puzzles n-arios. En las entradas anteriores empecé con la serie de los puzzlesbinarios que incluía los aros chinos y demás variantes y ahora quiero centrarme en Cross & Crown, un puzzle quinario (5-ario).

Para empezar, contar que este puzzle apareció en el registro de patentes de Massachusetts en 1912. Por lo tanto se supone que la idea original se la debemos enteramente a la persona que la registró: Louis S. Burbank.

US1071874A - Puzzle. - Google Patents

Lo que no tengo todavía claro es quién y en qué momento lo bautizó como Cross & Crown, ya que en la patente no veo que aparezca ese nombre. (Si alguien conoce el origen del nombre, agradecería esa información).

En la página de puzzles de Rob vemos el ejemplar en metal que fue usado como modelo para que se volviera a fabricar y se comercializase este juego tan interesante. Según cuenta Rob, en la IPP32 se llevó ese puzzle para enseñárselo a Goetz Schwandtner. Goetz lo resolvió y ya desconozco el resto de detalles que llevaron a Michel van Ipenburg a actualizar el puzzle que finalmente fue construido por Robrecht Louage. Y no solo lo pusieron de nuevo en circulación, sino que crearon una generalización de mayor nivel que es Cross and Crown 7  (7-ario). De modo que muchas gracias a los cinco responsables de que tengamos estos dos puzzles.

 (Espero haber sido fiel a la información que he leído en las páginas:

Rob's Puzzle Page - Mazes and Other Route Finding Puzzles      y     

Jerry's Mechanical Puzzle & Brain Teaser Collection: Cross & Crown 2013  )

 

Supongo que con las fotografías de las páginas anteriores y la descripción de las piezas que puede verse en los detalles de la patente, no es necesario decir mucho más de la mecánica del juego. Aunque sí que me gustaría centrarme un poco más en su análisis y cómo podemos escribir los pasos para llegar a detallar los 5^4=54= 625 pasos necesarios para resolverlo.

En el modelo que yo tengo se pueden quitar los cuatro “tornillos” que unen las dos piezas de este puzle. Se agradece porque en cualquier momento podemos resetear el puzzle. Y también así fue como pude sacar un dibujo más exacto de los cuatro caminos en zigzas para poder medir mejor los ángulos.

Como se ve en las fotografías, cada uno de los cuatro “caminos” tiene forma de zigzag. Estos zigzags tienen cinco tramos circulares (niveles) y otros cuatro radiales que van permitiendo a los tornillos ir hacia el exterior. Estos tornillos están abrazando el disco superior a la pieza en forma de cruz que hay debajo. De manera que el giro de los cuatro tornillos está sincronizado.

Por eso es clave analizar los ángulos de cada uno de esos tramos circulares ya que el giro del aspa estará limitado por los ángulos a los que puede llegar cada uno de los tornillos en cada momento. Esta limitación se dará cuando ese tornillo llegue al extremo del zigzag. Además, un tornillo puede ser el responsable de limitar el giro del aspa en un sentido y puede que sea otro tornillo diferente el que limite el giro en el otro sentido. Por tanto es clave en qué nivel está cada tornillo para ver los movimientos que podrán hacerse.

En un principio todos los tornillos están en el nivel más cercano al centro (nivel 0). Desde esa posición inicial giramos el aspa hacia la izquierda y hay uno de los tornillos que llega primero al final de su recorrido (lo llamaremos “a”). Como todos los tornillos tienen que acabar en el exterior del disco, hay que conseguir llevarlos todos hasta un nivel superior. Pero habrá que hacerlo poco a poco.



Si el tornillo  a  lo subimos del nivel 0 al 1, entonces seguimos sin poder girar más a la izquierda, pero habrán cambiado los límites en que podemos girar el aspa. Ahora podremos girar a la derecha hasta el extremos de nivel 1 para a (que es menos de lo que se podía en la posición inicial). Pero al llevar a a ese punto podemos subirlo de nuevo al nivel 2. Con esto cambian de nuevo los límites de giro y ahora sí podremos girar más hacia la izquierda de lo que nos limitaba el tornillo  a  en el nivel cero.






En este momento, al girar a la izquierda será el tornillo b el que llegue al tope en el nivel cero y podrá subir al nivel 1. Ahora pensaríamos que pasará algo parecido a lo que hicimos con el tornillo a (nos gustaría subirlo al nivel 2).  Pero el  b  no puede subir todavía al nivel 2 porque el tornillo a no nos permite girar lo suficiente a la derecha. Con lo cual hay que bajar de nuevo el tornillo a del 2 al 1 y luego al 0. Así, podremos girar a la derecha lo suficiente para que  b  suba hasta el nivel 2…



Supongo que más o menos se va entendiendo en qué consiste el puzzle. Cada tornillo tiene limitados los ángulos en los que se puede mover en cada nivel de modo que para subir o bajar cada uno de los cuatro tornillos es fundamental dónde se encuentran los otros para que no limiten sus movimientos de subida o de bajada (según lo que se necesite).

Explicado parece muy complicado, pero con el juego en las manos no lo es tanto ya que le pasa lo mismo que a los aros chinos y a sus equivalentes: En cada momento sólo tenemos dos movimientos posibles, y uno de ellos es volver atrás. De modo que para resolverlo lo más importante es que no nos confundamos y que no acabemos dando marcha atrás (cosa que es extremadamente fácil que suceda al ser circular y tener tantos pasos).

Hemos dicho que este juego tiene 5^4 pasos, aunque en realidad son el doble de movimientos si contamos los giros del aspa (que, por cierto, siempre van alternando el sentido de giro). Hemos contado los pasos según los tramos circulares en que se encuentren los tornillos. Vamos a generar un código donde se indique dónde está cada tornillo y de ese modo podremos anotar todos los movimientos. Una buena notación es fundamental para tener la secuencia completa de la solución y llegar a entenderla.


Notación y Código Gray

Cuidado: A partir de aquí tal vez consideres que hago Spoiler. Si quieres seguir tu propio análisis no sigas leyendo.

La notación que usaremos para cada posición será con un código de 4 cifras, una por cada tornillo. Los tornillos se nombran a, el primero que hace tope desde la posición inicial. b sería el que se encuentra a su derecha y que sería el siguiente en hacer tope en el nivel cero. Y así seguiríamos c el siguiente y d el último (que quedará a la izquierda de a).

Los valores que anotaremos para cada tornillo será el nivel en que se encuentre, siendo el nivel 0 el más cercano al centro y el nivel 4 el más exterior. Así,  dcba representará con números la posición de cada tornillo. Y de este modo, los movimientos descritos anteriormente con demasiado texto serían:

0000
0001
0002
0012
0011
0010
0020

Como podemos ver, eso tiene pinta de un código Gray, ya que sólo cambia un dígito en cada paso (si no sabes lo que son puedes mirar mis dos post anteriores). Además es reflejado y ternario, o por lo menos eso parece en el principio. Pongamos de ejemplo cómo son los códigos Gray ternarios reflejados de 1, 2, 3 y 4 dígitos:


Con un solo dígito sería el orden de numeración normal: 

A

0

1

2

Para dos dígitos lo hacemos colocando a la derecha el código anterior junto al cero, su reflejado junto al 1, etc.

AA

00

01

02

12

11

10

20

21

22

 

Para tres dígitos colocamos los 9 códigos de secuencia AA junto al 0, luego sus reflejados junto al 1 y de nuevo el reflejado del reflejado (el AA) junto al 3:

AAA

000

001

002

012

011

010

020

021

022

122

121

120

110

111

112

102

101

100

200

201

202

212

211

210

220

221

222

 

Y por último igual con cuatro dígitos: (Aunque creo que se entiende: se lee por columnas de izquierda a derecha)

AAAA

 

 

0000

1222

2000

0001

1221

2001

0002

1220

2002

0012

1210

2012

0011

1211

2011

0010

1212

2010

0020

1202

2020

0021

1201

2021

0022

1200

2022

0122

1100

2122

0121

1101

2121

0120

1102

2120

0110

1112

2110

0111

1111

2111

0112

1110

2112

0102

1120

2102

0101

1121

2101

0100

1122

2100

0200

1022

2200

0201

1021

2201

0202

1020

2202

0212

1010

2212

0211

1011

2211

0210

1012

2210

0220

1002

2220

0221

1001

2221

0222

1000

2222

 

Se puede comprobar que los códigos de la última tabla (AAAA) representan las primeras 81 (=3^4) posiciones del puzzle en su camino hacia la solución óptima. Pero para entender la lógica de los movimientos que siguen tenemos que hacer algunos cambios.

Se supone que el puzzle es quinario es decir, que supuestamente tendríamos que usar códigos desde 0 a 4 (cinco dígitos). Pero por ahora sólo hemos usado un código ternario. La clave estará en usar códigos Gray ternarios de varias cifras (como los anteriores) “anidados” del siguiente modo.

 

Dos Gray ternarios anidados = Gray Quinario (3+3-1=5)

En la tabla del Gray ternario con 4 dígitos (la última) en lugar de usar los números 0,1 y 2 podríamos haber usado tres símbolos consecutivos como pueden ser las letras A, B, C. Y puesto que entendemos el orden, seguiría siendo un código Gray pero ahora con letras en lugar de números. Si después sustituimos B por el dígito 3 y en lugar de C ponemos el dígito 4 nos quedaría el siguiente código:

****

 

 

AAAA

3444

4AAA

AAA3

3443

4AA3

AAA4

344A

4AA4

AA34

343A

4A34

AA33

3433

4A33

AA3A

3434

4A3A

AA4A

34A4

4A4A

AA43

34A3

4A43

AA44

34AA

4A44

A344

33AA

4344

A343

33A3

4343

A34A

33A4

434A

A33A

3334

433A

A333

3333

4333

A334

333A

4334

A3A4

334A

43A4

A3A3

3343

43A3

A3AA

3344

43AA

A4AA

3A44

44AA

A4A3

3A43

44A3

A4A4

3A4A

44A4

A434

3A3A

4434

A433

3A33

4433

A43A

3A34

443A

A44A

3AA4

444A

A443

3AA3

4443

A444

3AAA

4444

 

La tabla anterior nos sirve de “mapa” (lo llamaremos ****) para poder escribir la secuencia completa de las 5^4=256 posiciones del puzzle que será un Código Gray Quinario. Lo que hay que hacer ahora es “sustituir” las “A”  de ese "mapa" por los códigos ternarios con dígitos del 0 al 2 que hemos detallado para una, dos, tres y cuatro cifras en las tablas ternarias anteriores (tablas A, AA, AAA y AAAA) del siguiente modo:

Cada código de la tabla **** será sustituido por tantos códigos como resulten de cambiar todas las A’s que tenga el mencionado código de **** por la secuencia completa de gray ternario correspondiente a 1, 2, 3 ó 4 dígitos (según el número de A’s que tenga ese código). Esa secuencia ternaria habrá que sustituirla en orden creciente o decreciente según cómo termine la sustitución anterior para respetar que sólo cambie un dígito. Lo vemos con ejemplos:

El primer código de la tabla **** es AAAA y por eso, en lugar de ese código tendremos que poner la tabla AAAA completa. Como ya habíamos visto son los 81 primeros movimientos del puzzle.

El siguiente elemento de la tabla **** es AAA3. Por lo tanto tendremos que insertar donde están las A's los 27 códigos del gray ternario de 3 dígitos (tabla AAA). Pero ahora en orden inverso ya que el último código que teníamos antes era 2222 y sólo tiene que cambiar uno de los dígitos para pasar al siguiente.

Así la solución del juego continúa a partir de la posición 82 con:

Pos

AAA3

82

2223

83

2213

84

2203

85

2103

86

2113

87

2123

88

2023

89

2013

90

2003

91

1003

92

1013

93

1023

94

1123

95

1113

96

1103

97

1203

98

1213

99

1223

100

0223

101

0213

102

0203

103

0103

104

0113

105

0123

106

0023

107

0013

108

0003

 

A Continuación volvemos a mirar la tabla **** y vemos que el siguiente código es AAA4 y habrá que insertar en su lugar otros 27 códigos de la tabla AAA (ahora en orden “creciente”) y respetando la posición ocupada por el 4 (como antes hemos hecho con el 3).

De esta forma seguiremos luego con AA34 y AA33  pero usando en ambos casos los 9 dígitos de la tabla AA (cada vez será en un orden distinto, ya que vemos que siempre van alternando ese orden).

 Y para el siguiente código de **** que sería AA3A se hace también con la secuencia de tres dígitos ternarios. Es decir, hay que “ignorar el 3” que hay intercalado entre las A’s (aunque lo respetamos en su posición) para insertar los 27 códigos ternarios correspondientes.

 

Dejo aquí un archivo Excel para que se vean detallados todos los pasos de la solución.

 Excel con solución completa de C&C5

 

Estudio de la forma del puzzle (ángulos)

Como es evidente, el juego está dividido en cuatro cuadrantes, y en cada uno hay un “camino” en forma de ranura. En esos cuatro caminos, que tendremos que ir recorriendo “simultáneamente”, lo importante son los ángulos que cada tornillo nos permita girar la cruz o aspa de la capa inferior.

Para tener una referencia, en cada cuadrante elegimos como origen para medir los ángulos la línea que une el centro del juego con el punto inicial de ese cuadrante (el extremo del camino más cercano al centro). Midiendo los ángulos hasta los extremos de cada zigzag (dado el grosor de la ranura esto no es muy preciso) y luego ordenando los valores obtenidos, tenemos que hay 18 ángulos diferentes. Numerados del 0 al 17 y ordenados en la siguiente tabla nos describen el juego:

D

C

B

A

0 – 12

0 – 11

0 – 10

0 – 9

5 – 12

6 – 11

7 – 10

8 – 9

5 – 16

6 – 15

7 – 14

8 – 13

1 – 16

2 – 15

3 – 14

4 – 13

1 – 17

2 – 17

3 – 17

4 – 17

 

En la primera fila están representados los “ángulos” (no su medida, sino su ordinal) entre los que se pueden mover cada uno de los tornillos, y por lo tanto la cruz inferior a la que van unidos. He representado, como en el código gray, a la derecha el primer tornillo que podremos mover a un nivel superior. 

Recordamos que al principio todos los tornillos están en el nivel 0 (primera fila de la tabla) y por lo tanto el “a” es el primero que nos va a limitar los movimientos al llegar al extremo (al llegar al 9º ángulo). Pero lo movemos a otro círculo más alejado (bajamos mentalmente en la tabla en ese tornillo). Así ahora estamos limitados a movernos entre el 8º y el 9º ángulo. Pero sacando “a” de a otro círculo más exterior podremos movernos entre el 8º y el 13º. Así permitimos que el tornillo “b” pase a otro nivel superior …Y así podemos ver todas las limitaciones en cada momento en el puzzle. Aunque es muy tedioso ir revisando toda la solución con esta tabla, espero que permita entender un poco mejor cómo funciona el juego (sobre todo a los que no lo tengan en mano).

Si sólo miramos los números izquierdos de cada casilla de la tabla anterior vemos claramente la regularidad que siguen dentro de la tabla (Y análogamente con los de la derecha). Además vemos que es fácilmente generalizable: podemos añadir más zigzags (Spoiler: De hecho esa es la generalización de Cross&Crown 7)

 

Variantes 

Lo siguiente que se me ocurrió cuando escribí esa tabla con los ordinales de los ángulos es que el juego se podía introducir en Burrtools transformando el disco en un rectángulo: y así lo hice. Al hacerlo comprobé que, el número de movimientos y su secuencia coincide exactamente con lo descrito hasta aquí.


Poco después, buscando indagar más en este puzzle, encontré en la página de Jerry Loo mencionada al principio un artículo de Goetz Schwandtner sobre el juego “Kugellager” de Jean-Claude Constantin (dejo aquí el enlace a ese artículo: Kugellager.pdf). Y por supuesto, busqué la fuente original de dicho artículo y encontré la página de Goetz con una colección impresionante de puzzles de este tipo (dejo el enlace que lleva a todos sus contenidos: Goetz' homepage   y otro en lace que lleva a los puzzles del tipo de los aros chinos, donde incluye Kugellager y Cross and Crown Compendium of Chinese-Rings-Like puzzles )

Como puede verse en el artículo citado de Goetz, el puzzle Kugellager es igual que el que yo introduje en BurrTools. Como es lógico cambia un poco las proporciones al no tener las limitaciones de cubos unitarios que pone el programa y además estaría intercambiado la izquierda y la derecha. Por lo tanto el juego de Jean-Claude Constantin totalmente equivalente a Cross and Crown. Aunque como señala Goetz en su artículo en el apartado 18, no hay nada que pruebe o indique que Kugellager esté basado en Cross and Crown. Supongo que puede ser un caso más de convergencia creativa.

 

Una vez que había visto que podía crear un modelo en Burrtools para resolver este juego, se me ocurrió que se podrían variar las distribuciones de los ángulos en los zigzas del juego. La mayor parte de esos cambios supongo que no tendrán mucho interés, pero yo me propuse buscar una distribución que necesitara para resolverse un código Gray Quinario Reflejado puro. Es decir, que no usara el artificio de anidar dos códigos ternarios. Para conseguir esto generé la siguiente tabla con los ordinales de los ángulos. Similar a la que puse antes para Cross&Crown pero con una lógica diferente.

D'

C'

B'

A'

0 – 15

0 – 13

0 – 11

0 – 9

2 – 15

4 – 13

6 – 11

8 – 9

2 – 16

4 – 14

6 – 12

8 – 10

1 – 16

3 – 14

5 – 12

7 – 10

1 – 17

3 – 17

5 – 17

7 – 17

 

Esta variación del juego tiene la “belleza matemática” de que lleva asociado un código gray quinario reflejado puro. Pero no es una buena opción como puzzle ya que es bastante monótono al necesitar que el primer tornillo (el de la derecha) se tenga que mover siempre 5 veces seguidas (entre los extremos interior y exterior del puzzle). Se rinde demasiado fácil a nuestra intuición y sería más aburrido que el original.


Cross and Crown 7 

La otra variación ya mencionada es añadir un zigzag más (dos niveles más). Y eso es lo que hizo  Michel van Ipenburg (según indica Goetz) al diseñar Cross and Crown 7.



Como ya hemos visto en detalle el funcionamiento del puzzle original, ahora pasamos directamente a analizar los ordinales de los ángulos que se usan en esta generalización:

D

C

B

A

0 – 16

0 – 15

0 – 14

0 – 13

9 – 16

10 – 15

11 – 14

12 – 13

9 – 20

10 – 19

11 – 18

12 – 17

5 – 20

6 – 19

7 – 18

8 – 17

5 – 24

6 – 23

7 – 22

8 – 21

1 – 24

2 – 23

3 – 22

4 – 21

1 – 25

2 – 25

3 – 25

4 – 25

 Y el número de pasos que se necesitarían para resolverlo es de 7^4=2401.


Para encontrar la secuencia completa de los pasos a seguir podemos hacer lo mismo que hicimos antes. Lo único es que ahora hay que “anidar” en un código gray ternario el código quinario que obtuvimos para C&C5 y sus versiones con 3, 2 ó 1 dígito. Del siguiente modo:

Si recordamos la tabla **** que procedía de un Gray ternario reflejado con ABC en el que antes sustituíamos B=3 y C=4. De forma análoga, pero ahora habría que hacer B=5 y C=6. Quedando una tabla equivalente a **** que llamaremos &&&&:

&&&&

 

 

AAAA

5666

6AAA

AAA5

5665

6AA5

AAA6

566A

6AA6

AA56

565A

6A56

AA55

5655

6A55

AA5A

5656

6A5A

AA6A

56A6

6A6A

AA65

56A5

6A65

AA66

56AA

6A66

A566

55AA

6566

A565

55A5

6565

A56A

55A6

656A

A55A

5556

655A

A555

5555

6555

A556

555A

6556

A5A6

556A

65A6

A5A5

5565

65A5

A5AA

5566

65AA

A6AA

5A66

66AA

A6A5

5A65

66A5

A6A6

5A6A

66A6

A656

5A5A

6656

A655

5A55

6655

A65A

5A56

665A

A66A

5AA6

666A

A665

5AA5

6665

A666

5AAA

6666

 

Y procedemos como en el caso anterior sustituyendo las A’s por el código gray quinario correspondiente según el número de A’s que tengamos que sustituir:

En el primer caso AAAA lo sustituimos por la secuencia de 625 códigos enumerados para C&C5. Y para sustituir en AAA5 por el código quinario de 3 dígitos podemos ahorrar tiempo si usamos los últimos 125 códigos de la lista de 4 dígitos (de la solución de C&C5). Ya que en esa lista los 125 últimos códigos son todos de la forma 4AAA y quitando el 4 queda ordenado el gray quinario de tres dígitos. Igualmente, cuando necesitemos sustituir los de dos dígitos también podemos usar los últimos 25 de esa lista (que serán 44AA). Y los más fáciles son los de un dígito, ya que son correlativos según la numeración habitual.

Excel con solución completa de C&C7

Observa que al anidar dos Gray ternarios obteníamos otro de orden cinco (3+3-1=5) y ahora al anidar un quinario en un ternario obtenemos un Gray de orden 7 (3+5-1=7). Estos órdenes de complejidad de los dos juegos son exactos tanto por el hecho de usar en su notación 5 o 7 dígitos diferentes como en el número de pasos que son necesarios. En ambos casos se recorren los respectivos códigos Gray completos y se generan 5^4  o 7^4 pasos.

 

Ampliación a niveles superiores 

En teoría, este puzzle se puede seguir ampliando con más círculos concéntricos, aunque materialmente será cada vez más complicado. No sólo por el elevadísimo número de movimientos necesarios para resolverlo sino porque para cada zigzag sólo disponemos de 90º en los que colocarlo. Y si nos fijamos en los ordinales de los ángulos analizados para C&C7 vemos que hemos necesitado 25 ángulos diferentes (dejando fuera del 0). De modo que cada vez un ángulo y el siguiente de ese ordinal tendrán una diferencia menor. Esto junto a las pequeñas imperfecciones de fabricación que son inevitables, el ancho necesario para la ranura y cierto margen de tolerancia que habrá que respetar haría que algunas veces podamos (físicamente) hacer movimientos que según la idea del juego no se deberían poder hacer. De hecho, en mi ejemplar de C&C7 hay algunos puntos en los que me ha pasado esto cuando lo estaba resolviendo: he podido mover de forma fortuita tornillos en otro orden consiguiendo así atajos que no tendrían que existir.

 


Por fin llego al final. Soy consciente de que estos post quedan un poco pesados y que a los aficionados no matemáticos tal vez no les interese tanto detalle. Pero a mí me parece muy curioso y me veo en la obligación de comunicar mis análisis, aúnque acabe siendo cansino. Supongo que algunos lo habréis leído saltando lo que halláis considerado oportuno (y bien que lo veo).

(Espero no haber cometido muchos errores tipográficos con tantos códigos, avisadme de los que localicéis)

Que nadie se asuste: sólo tengo en mente otro post de este tipo de puzzles y ya cambiaremos de tercio.