Pour célébrer le Rounded Pi Day, vous devez profiter de la date d'aujourd'hui pour créer un programme qui prend le diamètre d'un cercle et génère sa circonférence en multipliant le diamètre par 3,1416, où 3,1416 doit être obtenu en utilisant la date d'aujourd'hui.
Input 3
Output 9.4248
etc.
Ne prend pas la date en entrée. Vous n'êtes pas obligé d'utiliser tous les composants de la date, mais les chiffres de pi doivent provenir du formatage d'un objet Date ou de l'utilisation d'un objet date pour l'obtenir. Jusqu'à présent, les réponses semblent bonnes.
Je ne sais pas quoi d'autre à spécifier. Jusqu'à présent, toutes les réponses correspondent à ce que j'attendais.
Ma contrainte était que vous devez utiliser des composants de la date pour arriver à Pi. Vous pouvez bien sûr utiliser les composants, multiplier par 0 puis ajouter 3,1416, mais c'est ennuyeux et gaspille de précieux caractères!
Le code le plus court gagne!
la source
pi
Réponses:
05AB1E,
1613 octetsEssayez-le en ligne.
Malheureusement, un bogue avec des flottants rend cet octet plus long: /
Merci à Adnan d'avoir joué au golf sur 3 octets.
Explication
la source
¦¦
au lieu de2000-
trois octets plus court;)žfžežg
sonne comme un joli mot tchèque :)C, 32 octets
Si perdre un peu plus de précision est bien, je peux le ramener à environ 29 octets en étant toujours précis à 4 chiffres après la décimale (au moment de cette publication):
la source
#include<time.h>
?#include
-têtes de bibliothèque standard. Les inclure manuellement est presque toujours une bonne idée, mais les omettre rend le golf de code en C beaucoup plus facile.main
fonction pour montrer comment appeler cette macro à argument unique.AppleScript,
122120 octetsVariable a
La variable a est un objet date. J'appelle toutes mes informations de date hors d'elle.
Mois, jour et année
Les appels de mois, jour et année renvoient en fait un objet qui renvoie normalement une chaîne. Pour l'utiliser correctement comme un nombre, je l'ai entouré des deux côtés d'opérations mathématiques pour le convertir automatiquement en un nombre.
1e-4
1e-4
est un octet plus court que.0001
.mod.01
.
agit comme un séparateur de la correction automatique AppleScript. En utilisant cela, je peux utiliser modulo et toujours garder un octet pour moi - même.Aucune déclaration / journal de retour
La dernière valeur calculée automatiquement est retournée par le programme. Je fournis le nombre calculé via la boîte de retour.
Et voici un gif en cours d'exécution!
la source
Mathematica + coreutils, 20 octets
Heureusement, Mathematica interprète la sortie d'une commande externe comme une expression. Dans ce cas, la sortie est un flottant valide, de sorte que la multiplication avec l'argument de fonction
#
est implicite.la source
Lua,
3027 octetsMultipliez le premier argument de ligne de commande par la date actuelle au format
mm.ddyy
, qui est en fait03.1416
.la source
Bash + bc,
2520 octetsMerci à manatwork pour avoir économisé cinq octets.
Usage:
la source
date +%m.%d%y\*$1|bc
PowerShell v2 +,
462825 octetsAssez simple. Prend l'entrée
$args[0]
et la multiplie par la date formatée commeM.dy
(leGet-
est implicite). Notez que cela peut prendre beaucoup de temps pour s'exécuter sur v2 car il itère les substitutions possiblesDate
(par exemple, vérifier votre%PATH%
variable d'environnement, etc.) avant de s'installerGet-Date
.la source
-f
?-Format
. Avec des indicateurs comme celui-ci, il vous suffit d'être sans ambiguïté (par exemple, si vous en aviez-Debug
et-Delimiter
comme options potentielles, vous auriez besoin d'au moins trois lettres pour les différencier). La suppression de l'espace signifie que PowerShell essaie d'analyser l'indicateur-F"M.dy"
mais ne peut pas trouver d'argument correspondant et génère donc une erreur.-f
opérateur. Est tout à fait logique maintenant.R 3.2.4,
555147 octetsedit J'ai réalisé que je pouvais utiliser
scan
merci @FryAmTheEggMan. Réduction de 4 octets grâce à @MickyT.Première tentative de golf. Bonne journée pi!
la source
f=
.scan()*as.numeric(format(Sys.Date(),'%m.%d%y'))
as.double
au lieu d'as.numeric
enregistrer un octet supplémentaireGNU Awk, 23 caractères
Exemple d'exécution:
la source
Pyth, 19 octets
Essayez-le ici!
Fonctionne uniquement au 14/03/2016 bien sûr.
Explication
la source
PHP,
45262524 octetsUtilise l'encodage Windows-1252
Courez comme ceci:
date()
au lieu deDateTime::format
la source
$n
via/?n=3
dans l'url.php.ini
fichier. Aross a dit auparavant qu'il voulait s'éloigner d'une telle méthode.Python 2, 58 caractères
Essayez!
Explication:
la source
JavaScript,
4139 caractèresCela utilise une méthode exclusive de Firefox .
Grâce à:
Exemple d'exécution (Firefox Web Console):
Remarque: cela échouera dans la console Firebug. Il semble que Firebug effectue une expansion sur la chaîne de modèle, en la transformant
`%m.%d%y`
en`%__fb_scopedVars(m).d%y`
avant de la transmettre au code.la source
d=>new Date().toLocaleFormat`%m.%d%y`*d
new
de là.('...')
with 2 backticks, that's 2 bytes.Ruby, 40 bytes
la source
Mathematica, 54
la source
Vitsy + coreutils, 19 bytes
Explanation:
Cannot be run in safe mode, as this uses the Runtime's exec method.
la source
SpecBAS, 39 bytes
Nothing out of the ordinary. Formats date as a string then multiplies the input by the
VAL
(value) of that string.la source
Oracle 11g,
5049 bytesone less byte, thanks to @MickyT
la source
FROM
Python 3,
7454 bytesusing the time module instead of datetime like Loovjo's Answer
previous solution
la source
Google Sheets, 13 bytes
Bytes are calculated with one byte per character, zero bytes per cell except for the designated input cell, two bytes. The equals sign to start a formula is not counted. (I don't know if this is standard, please correct me if I am wrong.)
Run snippet to see the code.
This works because you can define your own date formats in Google Sheets. I made it so that it is
<month>.<day><year>
.la source
Pyke,
1615 bytes, ASCII encodingExplanation:
or 11 bytes (non-competitive), (adds string singles, 2 digit year, string sumables)
Explanation:
la source
JavaScript ES6,
6866 bytesSaved 2 bytes thanks to dev-null!
Anonymous function. Some uses:
la source
with
Tcl/Tk, 58 bytes
(That's a complete program. If you want to cheat and remove the explicit
puts
statement then it's only 51 bytes -- you'd have to start tclsh and type/paste the following in directly, though:)la source
Java 114 bytes
la source
float p(float d){return d*Float.parseFloat(new SimpleDateFormat("MM.ddyy").format(new Date()));}
Racket, 112 characters
Reads the number from input in standard reader syntax.
la source
TI-84 Basic, 30 bytes
Works on TI-83/84 calculators; E is the scientific notation token and ~ is the negative token.
Test Case
la source
R 48 bytes
la source
MATL, 17 bytes
Try it online!
la source
TI-BASIC,
16139 bytesWe round
π
to a number of decimal places equal to the minimum of{month,day,year}
, and then multiply it by the input.This is a function that takes input through X. Store it to one of the Y-variables, for example
Y1
, and then call likeY1([number])
on the homescreen.la source
Ans
is allowed.APL, 19 bytes
⎕TS
is2016 3 14 12 34 56 789
i.e. March 14rd, 2016 right before 12:35 pm⍕
make into string, i.e.'2016 3 14 12 34 56 789'
8↑2↓
drop first two ('20'
) then take next eight ('16 3 14 '
)2⌽
rotate two characters, giving' 3 14 16'
⍎
make into numbers (3 14 16
)⌽
reverse the list, giving16 14 3
0.01⊥
evaluate in base ¹⁄₁₀₀, = 16 × 0.01² + 15 × 0.01¹ + 3 × 0.01⁰ = 0.0016 + 0.15 + 3 = 3.1416⎕×
multiply with inputor
⎕TS
is2016 3 14 12 34 56 789
, i.e. March 14rd, 2016 right before 12:35 pm⍕
make into string, i.e.'2016 3 14 12 34 56 789'
7↑2↓
drop first two ('20'
) then take next seven ('16 3 14'
)2⌽
rotate two characters, giving' 3 1416'
⍎
make into numbers (3 1416
)⌽
reverse the list, giving1416 3
1E¯4⊥
evaluate in base ¹⁄₁₀₀₀₀, = 1416 × 0.01¹ + 3 × 0.01⁰ = 0.1416 + 3 = 3.1416⎕×
multiply with inputla source