Le défi
Vous devez calculer pi dans la plus courte longueur possible. N'importe quelle langue est la bienvenue pour rejoindre et vous pouvez utiliser n'importe quelle formule pour calculer pi. Il doit pouvoir calculer pi à au moins 5 décimales. Le plus court, serait mesuré en caractères. La compétition dure 48 heures. Commencer.
Remarque : Cette question similaire indique que PI doit être calculé en utilisant la série 4 * (1 - 1/3 + 1/5 - 1/7 +…). Cette question n'a pas cette restriction, et en fait beaucoup de réponses ici (y compris les plus susceptibles de gagner) seraient invalides dans cette autre question. Donc, ce n'est pas un doublon.
code-golf
pi
approximation
poseidon
la source
la source
Réponses:
Python3, 7
Fonctionne dans le shell interactif
Sortie:,
3.1415929203539825
corriger à 6 décimalesEt enfin j'ai une solution qui bat APL!
Oh, et au cas où vous vous poseriez la question, ce rapport est appelé le 密 率 (littéralement "rapport précis"), et est proposé par le mathématicien chinois Zu Chongzhi (429-500 après JC). Un article wikipedia connexe peut être trouvé ici . Zu a également donné le ratio 22/7 comme le "ratio approximatif", et il est connu pour être le premier mathématicien à proposer que 3,1415926 <= pi <= 3,1415927
la source
355/113
. Le plus bas voté réponse:3+.14159
. Je ne vois pas vraiment de différence.PHP -
132127125124 octetsSimulation de base de Monte-Carlo. Toutes les 10 millions d'itérations, il imprime l'état actuel:
Merci à cloudfeet et zamnuts pour vos suggestions!
Exemple de sortie:
la source
$j+=$x*$x+$y*$y<=1;
qui vous ferait économiser quatre octets.$k+=1/4;
etprint $j/$k
pourrait être réduit à$k++;
etprint 4*$j/$k
pour un autre octet.J 6
Explication:
*.
donne la longueur et l'angle d'un nombre complexe. L'angle de -1 est pi.{:
prend la queue de la liste [longueur, angle]Juste pour les fettishists de séries lentement convergentes, pour 21 octets, une série de Leibniz:
la source
atan(0) + pi
. Je ne pense pas que l'utilisation des fonctions trigonométriques et de pi lui-même devrait compter comme un "calcul".Arg
(c'est-à-dire l'argument d'un nombre complexe) n'est pas une fonction trigonométrique, malgré des valeurs similaires à celles d'arctangentatan(0) + pi
.Perl, 42 octets
Il calcule π en utilisant la formule de Leibniz :
999999 est utilisé comme le plus grand n pour obtenir la précision de cinq chiffres décimaux.
Résultat:
3.14159165358977
la source
Piet, de nombreux codels
Pas ma réponse, mais c'est la meilleure solution que j'ai vue à ce problème:
Ma compréhension est qu'il additionne les pixels dans le cercle et divise par le rayon, puis encore une fois. C'est:
Une meilleure approche dans mon esprit est un programme qui génère cette image à une taille arbitraire, puis l'exécute via un interpréteur Piet.
Source: http://www.dangermouse.net/esoteric/piet/samples.html
la source
TECHNIQUEMENT JE CALCULE, 9
TECHNIQUEMENT, JE CALCULE ENCORE, 10
JE CALCULE TELLEMENT, 8
JE ACCIDENTELLEMENT PI, 12
Et techniquement, cette réponse pue.
la source
APL - 6
Sorties
3.141592654
. Il calcule deux fois l'arc sinus de 1.Une solution à 13 caractères serait:
Cela sort
3.141591654
pour moi, ce qui correspond à la précision demandée.Il utilise cependant la
+ 4/1 - 4/3 + 4/5 - 4/7 ...
série simple pour calculer.la source
¯2○¯1
?» (C'est-à-dire acos -1). Mais cela donne une approximation complexe sur repl.it (3.1415926425236J¯1.1066193467303274e¯8
). Une idée pourquoi? Toutes les implémentations font-elles cela?2 * asin(1)
est un peu une triche, cependant.sqrt(1-theta^2)
(qui apparaît dans de nombreuses identités trigonométriques) à un moment donné et a perdu une certaine précision quelque part, se terminant par un légèrement négatif1-theta^2
.acos -0.75
. Il n'y a aucun moyen que cela puisse1 - 0.75 ^ 2
être négatif.J - 5 octets
Cela signifie
|log(-1)|
.la source
ln(e^(42*pi))/42
oupi*113/113
.Calculatrice Google, 48
Prend un bâton de beurre, fait des calculs avancés, en fait pi. J'ai pensé que puisque tout le monde faisait des réponses mathématiques simples, j'en ajouterais un peu plus unique.
Exemple
la source
stick of butter
est mignon et drôle mais c'est essentiellement encore une autrepi*x/x+y-y
identité algébrique.Octave, 31
Calcule l'aire d'un quart de cercle de rayon 2, par intégration numérique.
la source
Mathematica 6
la source
Python, 88
Solution :
Exemple de sortie dans le shell Python:
Permet d'éviter toute importation. Peut facilement être échangé pour utiliser la bibliothèque Decimal de précision arbitraire; il suffit de remplacer
3.
parDecimal('3')
, définir la précision avant et après, puis unaire plus le résultat pour convertir la précision.Et contrairement à beaucoup de réponses ici, calcule en fait π au lieu de s'appuyer sur des constantes intégrées ou des faux mathématiques, c'est
math.acos(-1)
-à- diremath.radians(180)
, etc.la source
langage d'assemblage x86 (5 caractères)
Que cela charge une constante à partir de la ROM ou calcule réellement la réponse dépend du processeur (mais au moins pour certains, il effectue un calcul, pas seulement le chargement du nombre à partir de la ROM). Pour mettre les choses en perspective, il est répertorié comme prenant 40 cycles d'horloge sur un 387, ce qui est un peu plus que logique s'il ne s'agissait que de charger la valeur à partir de la ROM.
Si vous voulez vraiment assurer un calcul, vous pouvez faire quelque chose comme:
[pour 27 caractères]
la source
fldpi
?asin(-1)
nifldpi
sont particulièrement intéressants ou créatifs. Il n'y a pas grand-chose à rivaliser pour voir dont la langue préférée a le nom le plus court pour les fonctions trig et les constantes pi prédéfinies.bc -l, 37 octets
Je ne vois aucune autre réponse en utilisant le produit Wallis , donc comme il porte le nom de mon homonyme (mon histoire des mathématiques professeur d' tiré un gros coup), je n'ai pas pu résister.
Il s'avère que c'est un algorithme assez agréable du point de vue du golf, mais son taux de convergence est abyssal - approchant 1 million d'itérations juste pour obtenir 5 décimales:
bc -l, 15 octets
Alternativement, nous pouvons utiliser Newton-Raphson pour résoudre
sin(x)=0
, avec une approximation de départ de 3. Parce que cela converge en si peu d'itérations, nous codons simplement en dur 2 itérations, ce qui donne 10 décimales:La formule itérative selon Newton-Raphson est:
sin'
===cos
etcos(pi)
===-1
, nous approximons donc simplement lecos
terme pour obtenir:Production:
la source
python -
4745pi est en fait calculé sans fonctions trigonométriques ni constantes.
résultat:
la source
C, 99
Calcule directement l'aire / r ^ 2 d'un cercle.
Cette fonction calculera pi en comptant le nombre de pixels dans un cercle de rayon
r
puis en divisant parr*r
(en fait, elle ne calcule qu'un quadrant). Avecr
10000, il est précis à 5 décimales près (3,1415904800). Les paramètres de la fonction sont ignorés, je viens de les déclarer pour économiser de l'espace.la source
Javascript,
4336x
devientzeta(2)=pi^2/6
ainsisqrt(6*x)=pi
. (47 caractères)Après avoir utilisé la propriété distributive et supprimé les accolades de la
for
boucle, vous obtenez:(43 caractères)
Il renvoie:
Éditer:
J'ai trouvé un moyen encore plus court d'utiliser le produit Wallis:
(36 caractères)
Il renvoie:
la source
Python, Riemann zeta (
5841 car.)Ou épargnez deux caractères, mais utilisez scipy
Edit : 16 (!) Caractères enregistrés grâce à amcgregor
la source
math
importation et l'sqrt
appel en pivotant vers l'exponentiation à la place:(6*sum(n**-2 for n in range(1,9**9)))**0.5
Javascript: 99 caractères
En utilisant la formule donnée par Simon Plouffe en 1996, cela fonctionne avec 6 chiffres de précision après la virgule décimale:
Cette variante plus longue (130 caractères) a une meilleure précision, 15 chiffres après la virgule décimale:
J'ai fait ceci basé dans mes deux réponses à cette question .
la source
Rubis,
545049Version en ligne pour les tests.
Une autre version sans créer de tableau (50 caractères):
Version en ligne pour les tests.
la source
a=__import__;reduce(a('operator').__add__,a('itertools').imap(lambda e:(-1.0)**e/(2*e+1)*4,xrange(9**6)))
- notez l'utilisation de xrange / imap; en Python 3, vous pouvez éviter cela; fondamentalement, je ne veux pas que toute votre RAM soit consommée en construisant une liste avec autant d'entrées.TI CAS, 35
la source
Perl - 35 octets
Produit une précision en virgule flottante complète. Une dérivation de la formule utilisée peut être vue ailleurs .
Exemple d'utilisation:
Version de précision arbitraire
Prolongez au besoin. La longueur de l'itération (par exemple
-329..-1
) doit être ajustée pour être environ log 2 (10) ≈ 3,322 fois le nombre de chiffres.Ou, en utilisant à la
bigint
place:Cela s'exécute sensiblement plus rapidement, mais n'inclut pas de point décimal.
la source
C # 192
Les sorties:
Aucun calcul impliqué. Recherche simplement la version actuelle de TeX et effectue une analyse primitive du code HTML résultant. Finalement, il deviendra π selon Wikipedia .
la source
Python 3 Monte Carlo (103 caractères)
la source
Langue de Game Maker, 34
Suppose que toutes les variables non initialisées sont égales à 0. C'est la valeur par défaut dans certaines versions de Game Maker.
Résultat:
la source
float k(){double x=0,i=0;for(;i++<999999;)x+=6/i/i;return sqrt(x);}
est plus court que celui-ci1e8
au lieu de 999999for(i=1;i<1e8;)x+=6/i/i++;sqrt(x)
pour enregistrer un octet (ou alternativementfor(i=1;i++<1e8;)
)?Java -
8355Shorter version thanks to Navin.
Old version:
la source
180
bypi/180
.R: 33 characters
Hopefully this follows the rules.
la source
Ruby, 82
Uses some formula I don't really understand and just copied down. :P
Output:
3.1415926535897913
la source
Ruby, 12
I am technically "calculating"
pian approximation of pi.la source
acos(-1)
.JavaScript - 19 bytes
Calculates the 9th root of 29809.
la source