让我们创建一个从正整数到高斯整数的简单的射影映射,高斯整数是复数,其中实部和虚部都是整数。
例如4538
,给定一个正整数,以二进制形式表示,且不带前导号0
:
4538 base 10 = 1000110111010 base 2
删除任何尾随0
的:
100011011101
用一个替换任意一个或多个0
的运行+
:
1+11+111+1
更换所有1
的用i
的:
i+ii+iii+i
计算结果复杂表达式并输出简化的高斯整数:
i+ii+iii+i = i+i*i+i*i*i+i = 2i+i^2+i^3 = 2i+(-1)+(-i) = -1+i
输出可以用传统的数学方式表示,也可以用两个单独的整数表示实部和复杂部分。对于4538
例如,任何这些就可以了:
-1+i
i-1
-1+1i
(-1, 1)
-1 1
-1\n1
对于像输入29
,mathy格式化输出,诸如0
,0i
或0+0i
都是细。
如果您的语言更自然,则使用j
(或其他方式)代替i
可以。
以字节为单位的最短代码获胜。
4+2j
->100+10j
...