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 0con 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 4538ejemplo, 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, 0io 0+0ison todos bien.
Usar j(o algo más) en lugar de iestá bien si eso es más natural para su idioma.
El código más corto en bytes gana.
4+2j->100+10j...