正整数からガウス整数への単純な全射マッピングを作成してみましょう。ガウス整数は、実数部と虚数部が整数である複素数です。
たとえば4538
、正の整数が与えられた場合、先頭に0
'を付けずにバイナリで表現します。
4538 base 10 = 1000110111010 base 2
後続0
のを削除します。
100011011101
1つ以上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
出力は、従来の数学的な方法で表現することも、実数部と複素数部に2つの個別の整数として与えることもできます。この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
...