Contexte:
Pi ( π) est un nombre transcendantal , et donc il a une représentation décimale sans terminaison. De même, la représentation ne se termine pas si elle est écrite dans une autre base entière. Et si on l'écrivait en base π?
Les chiffres en décimal représentent des puissances de 10, donc:
π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + …
Donc en base π, les chiffres représenteraient des puissances de π:
π = 10 = (1 * π^1) + (0 * π^0)
Dans cette nouvelle base, les entiers ont désormais des représentations non terminales. Donc 10 en décimal devient maintenant le suivant:
10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + (0 * π^-1) + (1 * π^-2) + …
Notez qu'en base πles chiffres utilisés sont 0,1,2,3 car ce sont les chiffres inférieurs à π.
Défi:
Étant donné un entier non négatif x, soit:
Sortir (sans s'arrêter) sa représentation en base
π. Si le nombre a une représentation finie (0, 1, 2, 3), le programme peut s'arrêter au lieu d'imprimer des zéros infinis.Prenez un entier arbitrairement grand
net sortez les premiersnchiffres dexen baseπ.
Règles:
- Puisqu'un nombre a plusieurs représentations possibles, vous devez sortir celle qui apparaît la plus grande (normalisée). Tout comme
1.0 = 0.9999…en décimal, ce problème existe également dans cette base. En baseπ, on est encore1.0, mais pourrait aussi s'écrire0.3011…par exemple. De même, dix est100.01022…, mais pourrait également s'écrire30.121…ou23.202…. - Il s'agit de code-golf, donc le moins d'octets gagne. Programme ou fonction.
- Pas Encastrements ( je regarde vous , Mathematica )
Résultats:
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…
10 000 premiers chiffres de dix en base Pi
Vérification:
Vous pouvez vérifier n'importe quelle sortie souhaitée à l'aide du code Mathematica ici . Le premier paramètre est x, le troisième est n. S'il expire, choisissez-en un petit net lancez-le. Cliquez ensuite sur "Ouvrir dans le code" pour ouvrir une nouvelle feuille de calcul Mathematica avec le programme. Il n'y a pas de limite de temps là-bas.
Convertissez la sortie résultante en nombre ici .
En relation:
n, je suppose que Pi doit avoir au moins des nchiffres de précision.