Se le da un entero no negativo no base (base 9) que consta de los dígitos del 0 al 8 como de costumbre. Sin embargo, el número de dígitos en este número (sin ceros a la izquierda) es un cuadrado perfecto.
Debido a esto, el número se puede organizar en una cuadrícula cuadrada (con el orden de lectura aún conservado).
Ejemplo con 1480 (1125 base 10):
14
80
Ahora deje que cada dígito en una cuadrícula no tanary indique un movimiento a otro espacio de cuadrícula (con condiciones de contorno periódicas ):
432
501
678
Esto esta diciendo que
0 = stay still
1 = move right
2 = move right and up
3 = move up
...
8 = move right and down
Entonces, si en la cuadrícula de 1480 comienzas en el 4, luego te mueves hacia arriba (recuerda pbc) y hacia la izquierda hacia el 8, lo que significa que te mueves hacia la derecha y hacia abajo hacia el 4, comenzando un ciclo con el período 2.
En general, este proceso continúa hasta llegar a 0 o se nota un ciclo. (A 0 se considera un ciclo con período 1).
En el caso de 1480, el período finalmente alcanzado en cada uno de los 4 dígitos iniciales es 2 2 2 1
respectivamente.
Para una cuadrícula más grande, estos números pueden ser mayores que 8, pero aún podemos usarlos como "dígitos" en un nuevo número nonario (simplemente los coeficientes de 9 ^ n como si fueran dígitos):
2*9^3 + 2*9^2 + 2*9 + 1 = 1639 (base 10) = 2221 (base 9)
Llamaremos a esto la fuerza del número nonario original. Entonces, la fuerza de 1480 es 1639 (base 10) o, equivalentemente, 2221 (base 9).
Desafío
Escriba el programa más corto que diga si la fuerza de un número nonario es mayor, menor o igual que el número nonary en sí. (No es necesario que calcules la fuerza).
La entrada será un número nonario no negativo que contiene un número cuadrado de dígitos (y no ceros a la izquierda además del caso especial de 0). Debe provenir de la línea de comando o stdin.
La salida debería ir a stdout como:
G if the strength is larger than the original number (example: 1480 -> strength = 2221)
E if the strength is equal to the original number (example: 1 -> strength = 1)
L if the strength is less than the original number (example: 5 -> strength = 1)
Desafío de bonificación divertida: ¿
Cuál es el mayor aporte que puedes encontrar que es igual a su fuerza? (¿Hay un límite?)