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:
la source
n
, je suppose que Pi doit avoir au moins desn
chiffres de précision.Réponses:
Julia 0,6 , 81 octets
Imprime des chiffres (et le. Qui m'a coûté 14 octets) jusqu'à ce que la pile déborde à environ 22k chiffres sur TIO. Si je suis autorisé à passer l'entrée en tant que
BigFloat
je peux couper 5 octets. Utilise la constante de précision arbitraire intégréeπ
. Mais c'est un peu plus cool que cela, c'est en fait une constante de précision adaptative,π*1.0
c'est un nombre à virgule flottante de 64 bits,π*big(1.0)
(alias multiplié par un nombre de précision plus élevé) donneπ
quel que soit votre précision.Essayez-le en ligne!
la source
Python 3 ,
471317310 octets7 octets grâce à caird coinheringaahing.
Il y a sûrement des golfs que j'ai ratés. N'hésitez pas à les signaler dans les commentaires.
Essayez-le en ligne!
Version non golfée:
Essayez-le en ligne!
la source
`i`
.Ruby
-rbigdecimal/math
,11110397 bytesEssayez-le en ligne!
Prend le nombre d'entrée comme
x
et la précision souhaitée commen
. Sorties par impression. Utilise la bibliothèque BigDecimal intégrée pour une valeur PI de précision arbitraire.la source
Python 3 + sympy, 144 octets
Essayez-le en ligne!
Assez lent, en fait.
la source