title: Golígono
text: # Golígono
  
  Un golígono (técnicamente llamado "isógono serial de 90 grados) es cualquier polígono con todos los ángulos rectos, cuyos longitud de los lados son una secuencia de números enteros. Los golígonos fueron inventados y nombrados por Lee Sallows, y popularizados por A.K. Dewdney en la columna de Scientific American (Smith) de 1990. Hay variaciones de la definición de golígonos que implican permitir que los lados se crucen, usando secuencias diferentes a números enteros consecutivos, y considerando ángulos distintos a 90°.
  
  En cualquier golígono, todos los lados horizontales tienen la misma paridad, así como también pasa en los lados verticales. Por lo tanto, el número n de lados debe permitir la solución en un sistema de ecuaciones.
  
      $\pm 1\pm 3\cdots \pm (n-1)=0$
      $\pm 2\pm 4\cdots \pm n=0.$
  
  De esto se desprende que n debe ser múltiplo de 8.
  
  El número de soluciones a este sistema de ecuaciones puede ser calculado eficientemente usando funciones generadoras (Secuencia A007219 en OEIS) pero encontrar el número de soluciones que corresponde a un polígono cuyos lados no se cruzan parece ser más difícil.
  
  Solo hay un golígono de 8 lados (mostrado en la imagen); con el cual se puede embaldosar el plano mediante una rotación en 180°. Esto se verifica usando el criterio de Conway.
  
  ## Reglas
  
  Aunque con el tiempo han surgido y se han sugerido variaciones, en las reglas originalmente dadas por Dewdney se pueden establecer como sigue:
  
  * Cada segmento mide 1 unidad más que el segmento precedente. Así el primero, tiene 1 unidad.
  * Los segmentos se alternan entre horizontal y vertical. Esto es, a cada segmento horizontal le sigue y antecede uno vertical y viceversa.
  * Se obtiene un golígono válido cuando al trazar un segmento, éste acaba en el origen del primer segmento.
  
  Con posterioridad se han sugerido extensiones consistentes en levantar algunas restricciones. Por citar algunas:
  
  * Los segmentos no precisan estar ordenados por tamaño (se mantiene que deben estar en el rango 1-n).
  * El valor inicial podría ser un valor superior a 1.
  * El incremento de cada segmento podría tene un valor distinto a 1.
  * El sistema completo podría aplicarse a más de 2 dimensiones.
  
  ## Algoritmo de resolución
  
  Aunque Lee Sallow creó su propio programa para encontrar souciones y Donald Knuth también creó alguno, no han trascendido al público.
  
  El problema puede ser resuelto en pocos pasos al margen de la presentación.
  
  * En primer lugar no es complicado constatar que los segmentos que avanzan hacia la derecha deben sumar lo mismo que lo segmentos que avanzan hacia la izquierda, pues solo así se logra quedar en el punto de partida. Sucede igualmente con los segementos que avanzan en vertical, luego el primer paso se reduce a calcular cuanto deben sumar dichos segmentos para cada n.
  
         Sea la siguiente secuencia la representación de los 8 segmentos: ABCDEGFH. Así si decidimos que empezamos con horizontales: A-C-E-F son los segmentos con un avance horizontal que tendrán valores 1,3,5,7. Entonces aplicando lo antedicho, debe encontrarse todas las secuencias tal que una o más variables sumen lo mismo que el resto, (1+3+5+7)/2= 8.
         Igualmente se procede con las variables de avance vertical, siendo: -B-D-G-H con valores a sumar: 2,4,6,8, se deberán buscar todas las secuencias de variables que sumen: (2+4+6+8)/2 = 10.
  * El segundo paso consiste en encontrar todas las secuencias cuyos términos con los pesos indicados totalicen el valor señalado en el primer paso.
  
         Por ejemplo, para el Golígono n=1, la secuencia completa a usar será: ABCDEFGH, para horizontales será: ACEG y para verticales será: BDFH.
         Para horizontales solo hay 2 secuencias posibles:
            AG (1+7) = 8
            CE (3+5) = 8
         Para verticales igualmente solo hay 2 secuencias posibles:
            BH (2+8) = 10
            DF (4+6) = 10
         Si se decide que las secuencias obtenidas son las que avanzan hacia un sentido, el resto de variables que no intervienen en la secuencia completa (para cada orientación) son las variables que avanzan hacia el sentido opuesto.
  * En tercer lugar puede entenderse que un golígono se genera, con cualquier conjugación consistente de usar cada una de las secuencias horizontales con cada una de las secuencias verticales.
  
         Dado que el número de secuencias halladas será siempre el doble (unas son espejo de las otras), el número de golígonos posibles para cada n, será el producto de la mitad de variaciones horizontales por la mitad de variaciones verticales. Para n=1, variaciones horizontales= 2, y verticales= 2, luego para n=1 solo hay 1 golígono. Para diferentes n= (h*v) hay:
            Goligonos(1)= ((2/2) * (2/2)) = (1*1) = 1
            Goligonos(2)= ((8/2) * (14/2)) = (4*7) = 28
            Goligonos(3)= ((68/2) * (124/2)) = (34*62) = 2108
            Goligonos(4)= ((692/2) * (1314/2)) = (346*657) = 227322
            Goligonos(5)= ((7930/2) * (15272/2)) = (3965*7636) = 30276740
            Goligonos(6)= ((96792/2) * (187692/2)) = (48396*93846) = 4541771016
            Valores para 'h' (Secuencia A107350 en OEIS)
            Valores para 'v' (Secuencia A060005 en OEIS)
  * El último lugar hay que trasladar o convertir la secuencia generada (con las 4 partes reunidas) en una secuencia que utilice como variables, las letras: D, I, B, S (de Derecha, Izquierda, Baja y Sube).
  
         En la imagen de la derecha se adjunta el golígono resultante del siguiente ejemplo.
         Por ejemplo. Sea la secuencia: ACMO la secuencia horizontal tomada hacia la derecha, los segmentos hacia la izquierda serán los que falten de la serie: ACEGIKMO, es decir EGIK. Y sea BDFHP, la secuencia vertical tomada hacia abajo, la secuencia hacia arriba serán las que falten de la serie: BDFHJLNP, es decir: JLN
         Podemos ordenarlos en las siguientes líneas en vertical:
  * Todavía resulta de interés dibujar el gráfico que genera el golígono, con lo que se recurre a interpretar la secuencia de salida obtenida.
  
         Mediante un bucle se va recorriendo la secuencia obteniendo un carácter en cada ciclo. El tamaño del segmento viene dado por la posición del carácter escrutado (+1). Y el carácter escrutado determina la dirección y sentido de avance.
      Puede notarse que el sistema seguido permite poder dibujarlo a mano en un papel cuadriculado, con solo seguir el orden de la secuencia de órdenes.
         En la imagen de la derecha se adjunta el golígono resultante de la secuencia: DBIBDBDBDBDBDBDBIBDBDSISIBDSISIS.
         Debajo de estas líneas dos más de 48 segmentos. En el dibujo se ha incluido sus respectivas secuencias.
  