バックグラウンド:
Pi(π
)は超越数であるため、終了しない10進表現を持ちます。同様に、他の整数ベースで記述された場合、表現は終了しません。しかし、baseで記述した場合はどうなりπ
ますか?
10進数の数字は10の累乗を表します。
π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + …
したがって、base π
では、数字は次のべき乗を表しますπ
。
π = 10 = (1 * π^1) + (0 * π^0)
この新しいベースでは、整数は終了しない表現になりました。したがって、10進数で10は次のようになります。
10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + (0 * π^-1) + (1 * π^-2) + …
基本的π
に使用される数字は0、1、2、3であることに注意してくださいπ
。これらは未満の数字です。
チャレンジ:
負でない整数が与えられたx
場合:
baseにその表現を出力(停止せずに)し
π
ます。数値が有限表現(0、1、2、3)である場合、プログラムは無限のゼロを出力する代わりに停止する場合があります。任意の大きな整数を取り、in baseの
n
最初のn
桁を出力します。x
π
ルール:
- 数値には複数の可能な表現があるので、最大の(正規化された)表示を出力する必要があります。
1.0 = 0.9999…
10進数と同様に、この問題もこのベースに存在します。baseπ
では、1つはまだ1.0
ですが0.3011…
、たとえばと書くこともできます。同様に、10はですが100.01022…
、30.121…
またはと書くこともでき23.202…
ます。 - これはコードゴルフなので、バイト数が最も少なくなります。プログラムまたは機能。
- 組み込みなし(私はあなたを見ている Mathematica)
結果:
0 = 0
1 = 1
2 = 2
3 = 3
4 = 10.220122021121110301000010110010010230011111021101…
5 = 11.220122021121110301000010110010010230011111021101…
6 = 12.220122021121110301000010110010010230011111021101…
7 = 20.202112002100000030020121222100030110023011000212…
8 = 21.202112002100000030020121222100030110023011000212…
9 = 22.202112002100000030020121222100030110023011000212…
10 = 100.01022122221121122001111210201201022120211001112…
42 = 1101.0102020121020101001210220211111200202102010100…
1337 = 1102021.0222210102022212121030030010230102200221212…
9999 = 100120030.02001010222211020202010210021200221221010…
検証:
こちらのMathematicaコードを使用して、必要な出力を確認できます。最初のパラメーターはx
、3番目はn
です。タイムアウトした場合は、小さいものn
を選んで実行します。次に、「コードで開く」をクリックして、プログラムで新しいMathematicaワークシートを開きます。時間制限はありません。
関連:
n
ませんが、Piには少なくともn
桁数の精度が必要だと思います。