Dans le moins d'octets possible, votre travail consiste à écrire un programme qui génère:
3.14
Bien sûr, pour célébrer une fin de journée Pi! :)
Règles
Vous pouvez le faire quand bon vous semble, mais il y a des restrictions.
- Vous ne pouvez pas utiliser d'opérations arithmétiques nulle part dans votre programme. Cela comprend
+
,-
,*
,/
,%
,^
(exponentiation), etc ... Cela inclut également incrémenter ( en général++
), décrémentation (--
), les opérations au niveau du bit , et tout construit dans les fonctions qui peuvent être utilisées en remplacement tels quesum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
,dec()
etc ... (discrétion de l'auteur) - Les chiffres
3
,1
et4
peuvent ne pas apparaître n'importe où dans votre code. - Vous pouvez ne pas utiliser des variables / constantes prédéfinies que votre langue peut avoir pour remplacer
3
,1
et4
. (Discrétion de l'auteur) - Vous pouvez également ne pas utiliser des fonctions trigonométriques telles que
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
, etc ... (la discrétion de l' auteur) - Vous ne pouvez pas utiliser les valeurs prédéfinies ou intégrées de Pi (ou
3.14
). Aucune demande Web . - Votre programme ne peut nécessiter aucune entrée d'aucune sorte (en plus de son exécution).
3.14
est la seule chose que vous puissiez produire, cela ne peut pas faire partie d’une sortie plus longue / plus longue.
Gagnant
La réponse avec le moins d'octets le 18 avril l' emporte. Bonne chance!
Dans l'attente de réponses intelligentes d'esprits intelligents! Malbolge quelqu'un? : P
^
s'agit de l'opérateur d'exponentiation, et non de l'opérateur XOR au niveau du bit.Réponses:
CJam -
86CJam est un nouveau langage que je développe, similaire à GolfScript - http://sf.net/p/cjam .
Voici l'explication:
S
est une variable pré-initialisée dans l’espace ("")`
génère la représentation sous forme de chaîne de la dernière valeur - qui est exactement" "
(3 caractères),
calcule la longueur de chaîne (3) si'.
le caractère de pointE
est une variable pré-initialisée à 14; 3, 1 et 4 ne sont pas autorisés mais cela ne dit rien sur 14 :)Crédits à la poignée de porte pour l'idée de backtick
la source
E
.PHP - 22 octets
Pi Day en 1998 était vraiment cool!
la source
n.j
est le format, et8899e5
est l'horodatage Unix du 14 mars 1998.,8899e5
. Ce sera correct une fois par an.<?=date('w.W',78e5);
le 1 er avril 1970 était un mercredi de la semaine 14.C, 39
Suppose que la machine est little-endian et utilise la norme à virgule flottante IEEE.
Le fait amusant est qu’il
"P@I@"
n’est en réalité pas lié à,PI
mais qu’il est équivalent à0x40494050
la représentation de3.144550323486328
http://ideone.com/uXVEtl
la source
dc ,
119 octetsz
Insérez la profondeur actuelle de la pile (0) dans la pileE
Appuyez sur E 16 (== 14 10 )[.]
Poussez la chaîne "."z
Poussez la profondeur actuelle de la pile (3) sur la pilen
Pop 3 et imprimer en tant que nombreP
Pop "." et imprimer en caractèrep
Pop 14 et impression sous forme de numéro avec une nouvelle ligneSortie:
la source
dc
est une langue et interprète, tout comme toutes les autres langues ici.dc -e
est juste l'invocation de cet interprète. J'aurais pu tout aussi facilement sauvegarder le programme de 9 octets dans un fichier et l'exécuterdc pi.dc
. Si ces octets doivent être comptés, il en ira de même pour toutes les autres langues. par exemple, inclurepython
dans toutes les entrées python ouruby golfscript.rb
dans toutes les entrées golfscript. Je crois que la convention convenue ici n’est pas de les inclure, sauf si des options spéciales doivent être adoptées.JavaScript ( ES5 ) 20 octets
Une variante de la solution JS de m.buettner.
Edit: JavaScript ( ES5 ) 18 octets
Une variante de l'idée de ComFreek d'utiliser la fonction de décodage base64.
Edit: Javascript ( ES5 ) 16 octets
Si l'
+
opérateur unaire est autorisé à convertir une chaîne en un nombre, vous pouvez le réduire à:la source
+
acceptée ici?Haskell, 41 octets
Quand est la journée de pi en Australie?
Modifié pour ajouter: comme l’autre réponse Haskell, une chaîne est générée, ainsi que des guillemets. Vous pouvez marquer 33 et respecter strictement les règles, mais c'est moins amusant:
la source
p=[2.9,2.92..]!!([0,6..]!!2)
... et celle-ci a l’..
air faux. Mais Haskell est fortement typé, et l'augmentation de la réponse que j'ai donné estChar
pasNum
et ne arithmétique la chose qui est en fait interdit. J'aurais besoinfromEnum
de reconvertir les caractères en chiffres pour les utiliser de cette façon. Quoi qu'il en soit, ma conscience est claire :)Code morse, 33 octets
Techniquement, l'information ne prend que 21 octets.
la source
J -
151110 carFait plus court, en utilisant le fantastique
i:
.A expliqué:
6.28j8
- Le numéro complexe 6.28 + 8i.i:
- C'est ici que la magie opère.i:
sur un nombre complexe A + Bi, B ≠ 0 prend B + 1 des points équidistants de l'intervalle [-A, A].6{
- Prenez l'élément à l'index 6, qui se trouve être 3.14.Auparavant, nous avions le non-sens suivant:
Expliqué par explosion:
la source
|.'.'2}":22b8d5
, vous pouvez enregistrer 2 caractères en choisissant un nombre ne nécessitant pas d’inversion:'.'1}":16bbc6
41X3
car je ne suis autorisé à modifier les caractères qu'aux indices 0 et 2.Ligne de commande Linux, 35 octets
Celui-ci est loin d'être gagnant, mais le voici pour le plaisir:
Sortie (après 2 secondes):
la source
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. Ceci règle le TTL sur 1, de sorte que l'écho ICMP sortant est éliminé par votre routeur avant qu'il ne soit jamais proche d'Internetping -w2 67502862
. (Ninja modifier parce qu'avant je conseillais w1, presque enfreint les règles.)GolfScript,
181312Ancienne version:
C'est très artistique, seulement 3 personnages uniques! ;)
Comment ça fonctionne:
Voici une explication de la version à 12 caractères (beaucoup plus intéressante, IMO):
Cela fonctionne car
n`,
est4
, depuisn`
est'"\n"'
. Même logique pour'.'`,
. Il échange également au lieu de créer une nouvelle chaîne pour enregistrer un caractère (merci @algorithmshark).Version alternative:
ou
Ou quoi que ce soit dans ces chaînes, vraiment. : P
la source
'.'.`,\.,n`,
travailler pour sauver char? Réutiliser le'.'
en dupliquant et en permutant.La réponse de l'OP.
Mathematica,
212018Cela se sent pas cher ...
ou
Compris comment le faire 18:
Haskell,
494812(48 comprend le caractère de nouvelle ligne)
Exécutez-le en appelant la
r
fonction.En utilisant la méthode décrite ci-dessus avec Mathematica, vous pouvez taper ceci dans GHCi:
Java,
8786Scala, 27
Traduit de Java comme suggéré par Score_Under . (Je ne sais pas vraiment Scala)
la source
0xe
c'est malin. Est-ce que ça vous dérange si j'améliore ma réponse JS avec ça? ;)[-.86:5][5]
pour 11 ans, mais je me suis dit que ça ne comptait pas, car les fourchettes ne sont que des mathématiques.Bash, 50
Les messages d'aide / d'erreur ne sont pas des ressources externes, ils sont le résultat d'une commande!
Si quelque chose est un abus de règle, c'est ça. Il utilise la coïncidence que le message d'aide donné
STDERR
par la commande exacteest 314 caractères long (au moins sur Ubuntu 13.10 avec
iputils-121221
). EDIT: J'apprécie que c'est beaucoup moins portable que ce à quoi je m'attendais ...La première ligne prend la longueur du caractère du message d’aide et le stocke dans une variable.
Comme dans mes autres réponses, les lignes suivantes obtiennent le nombre 1 en prenant le statut de sortie de
false
(pas très portable mais c'est du code-golf après tout!), Puis utilisez cette valeur pour insérer un point décimal dans la dernière ligneSortie:
3.14
la source
info ping6
j'ai iputils-121221chmod
réponse - abusive à cette question sur codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 octets
Si vous avez installé TeX:
Le numéro de version de TeX approche asymptotiquement pi à mesure que le logiciel s'améliore. Ainsi, avec le temps, vous pouvez utiliser cette implémentation (non conforme) pour imprimer de plus en plus de chiffres!
Cela a imprimé 3.1415926 en 2011; à partir de janvier 2014, il sera imprimé 3.14159265.
la source
tex -v|grep -oP '.\..\d'
pour enregistrer 4 octets. (Regex dérobé à la réponse de DigitalTrauma .) Quoi qu'il en soit, +1 parce que je viens de penser à la même réponse.JavaScript, 20 octets
Utilisez-le dans une console pour que le résultat soit directement imprimé. Sinon,
alert(...)
ajoutera 7 autres caractères.Identique à mon autre réponse, je viens de remarquer que c'est beaucoup plus court dans JS.
L'idée d'utiliser
0xe
14 pour est tirée de la soumission du PO avec la permission de l'OP.la source
(x='.'+0xE).length+x
Date GNU, 17 octets
Celui-ci ne garantit que de fonctionner cette année, mais je ne vois aucune limite dans les règles à ce sujet ;-)
L'
+
est indique simplement le début du spécificateur de format pourdate
et n'est pas une addition arithmétique. Identique à la-
, indiquant la date d'entrée.Sortie:
la source
only guaranteed to work this year
C'est bon .. :)Bash, 17 octets
Tableau de bord, 41 octets
la source
Bash
2322Shell (sans expansion de l'historique) 20
la source
seq 2 .06 5|sed -n 20p
fonctionne également comme indiqué dans la réponse OP Mathematica.sed 58!d
est légèrement plus court.!d
avecdpkg ...
qui a été la dernière commande que j'ai exécutée qui a commencéd
. Fonctionne bien dansksh
maiszsh
ditzsh: event not found: d
alors que c'est définitivement se substituer à quelque chose.pi.sh
et exécutez la même commandebash pi.sh
, cela fonctionnera correctement.Python, 39 ou 28
47 ou 34(Merci Score_Under pour avoir joué autant au golf)
+
Voici l'opérateur de concaténation de chaînes, pas l'addition.En copiant le
0xe
tour de l'OP, voici 28 caractères avec l'aide de @psalAnciennes versions:
la source
print"%s.%s"%(len('aaa'),0xe)
à 29 octets. Vous pouvez également faire de même pour le premier:print"%s.%s%c"%(len('aaa'),len('a'),52)
à 39 octets.%s
nécessite toujoursstr
. Merci pour le tuyau :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 octets
Ce programme contient des caractères ASCII non imprimables, il ne peut donc pas être directement collé ici. Au lieu de cela, les points d'interrogation dans le code ci-dessus doivent être remplacés par les octets
03
et0E
en hexadécimal.Pour plus de commodité, voici un vidage hexadécimal du programme actuel. Les utilisateurs Unix / Linux peuvent exécuter ce vidage hexadécimal
xxd -r
pour reconstruire le programme:Explication:
Les cinq premiers octets du programme forment un littéral à une seule chaîne codant les trois caractères avec les codes ASCII 3, 14 et 46 (= période ASCII).
(
coupe le premier caractère de la chaîne et place son code ASCII (3) sur la pile.\
échange les deux premiers éléments de la pile, en tirant la chaîne vers le haut, et le second(
coupe un autre caractère de la chaîne, poussant à nouveau son code ASCII (14) sur la pile.A la fin du programme, la pile (à l'exclusion de la chaîne d'entrée vide) se présente donc comme suit:
À la fin du programme, le comportement par défaut de l'interpréteur GolfScript consiste à définir une chaîne et à imprimer tout le contenu de la pile, ce qui permet d'obtenir le résultat souhaité.
la source
bash - 39
Nous savons tous que les premiers chiffres de Pi peuvent être calculés à partir de l'instruction suivante:
Nous n'avons besoin que de 2 décimales, non?
la source
Mathematica - 78
la source
Perl,
15 à20 octetsla source
tr + Bash, 17 octets
le
-
caractères ici ne sont pas des opérateurs arithmétiques de soustraction. Ils indiquent la gamme.Sortie:
la source
write()
appel ou similaire. Il y aura forcément un peu d'arithmétique sous les couvertures pour s'assurer que le nombre correct d'octets est écrit, si ce n'est nulle part ailleurs. Je pense le point de la question est de cacher les calculs arithmétiques / bits nécessaires.BASH, 57
C'est plus long que la plupart des réponses, mais il n'y a rien de mal à essayer.
donne
la source
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
C, 36
la source
main(){printf("%d\b.%d",' ',0xe);}
JavaScript - 23 octets
Merci à nderscore (voir ses commentaires)!
la source
4
cependant;)btoa()
marcherait3.14
?atob('Mw')+atob('LjE0')
et version "illégale" de 14 octets:atob("My4xNA")
C #
est le caractère 314, pas une variable ou une constante prédéfinie. le .ToString formate la sortie en un chiffre, une période, puis 2 autres chiffres.
la source
GolfScript,
1310Merci à Ilmari Karonen pour la version améliorée!
x
ety
sont des caractères non imprimables (voir http://www.asciitable.com/ pour plus d’informations), respectivementETX
etSO
qui décodent en 3 et 14.Ce que ce code fait devrait être assez clair.
Remarque: la règle suivante
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
n'est pas cassé, car les caractères ASCII ne sont ni des variables, ni des constantes.
la source
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
et à l'intérieur des crochets, il y a 2 caractères non imprimables, respectivement ( asciitable.com )ETX
etSO
{xy}.*'.'\
(10 caractères). Le mien est encore plus court, cependant. ;-) Mais +1 pour m'apprendre à propos de{ }.*
(et{ }.%
), je vais devoir garder cette astuce à l'esprit.Nouveau sur le site et ne peut pas encore écrire de commentaires, je le posterai ici. Je m'interroge sur cette solution Javascript:
et cette règle:
3.14 est la seule chose que vous puissiez produire, il ne peut pas faire partie d’une sortie plus longue / plus longue.
Si je lance ce code dans la console de mon navigateur, je reçois:
ou en utilisant Node sur la ligne de commande:
mais si je lance ce code:
Je reçois:
En utilisant Node.js pour exécuter un fichier .js, je peux écrire:
et obtenir:
la source
console
chaînes sont entourées de guillemets lors de leur affichage ... Vous avez utilisé,+
mais pas arithmétiquement, il est utilisé comme concaténateur, donc c'est valide ... Aussi vous auriez pu réduire la taille de cette utilisationalert
plutôt queconsole.log
... Mais sinon, de gros efforts. Nous espérons que vous l'aimerez ici ...Mathematica, 56 octets
Pas grand chose à dire. Je génère les chiffres sous forme de longueurs de chaîne et les concatène.
la source