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
n
et sortez les premiersn
chiffres dex
en 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 n
et 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 n
chiffres de précision.