Creemos un mapeo simple y sobreyectivo de enteros positivos a enteros gaussianos , que son números complejos donde las partes real e imaginaria son enteros.
Dado un número entero positivo, por ejemplo 4538
, exprésalo en binario sin encabezado 0
:
4538 base 10 = 1000110111010 base 2
Elimine cualquier rastro 0
:
100011011101
Reemplace cualquier ejecución de uno o más 0
con una sola +
:
1+11+111+1
Reemplace todos los 1
's con i
' s:
i+ii+iii+i
Evalúe la expresión compleja resultante y genere el entero gaussiano simplificado:
i+ii+iii+i = i+i*i+i*i*i+i = 2i+i^2+i^3 = 2i+(-1)+(-i) = -1+i
La salida se puede expresar de una manera matemática tradicional, o se puede dar como dos enteros separados para las partes real y compleja. Por 4538
ejemplo, cualquiera de estos estaría bien:
-1+i
i-1
-1+1i
(-1, 1)
-1 1
-1\n1
Para las entradas como 29
, salidas Mathy formateado como 0
, 0i
o 0+0i
son todos bien.
Usar j
(o algo más) en lugar de i
está bien si eso es más natural para su idioma.
El código más corto en bytes gana.
4+2j
->100+10j
...