Dans ce défi, vous devrez déterminer s'il s'agit de Pi Day, Pi Minute ou Pi Second.
Parce que Pi est irrationnel, il veut que votre code soit aussi court que possible.
Exemples
Aucune entrée n'est fournie , votre programme doit utiliser l'heure du système. Je viens de l'ajouter pour plus de clarté
March 14, 2016 0:00:00
Pi Day
December 25, 2015 3:14:45
Pi Minute
December 29, 2015 0:03:14
Pi Second
January 1, 2016 0:00:00
<No Output>
Qu'est-ce que Pi Day / Minute / Second
Pi Day
c'est quand le mois est mars, et la date est le 14Pi Minute
c'est quand l'heure est 3, et la minute est 14Pi Second
c'est quand la minute est 3, et la seconde est 14Pi Day
devrait être préféré au lieu dePi Minute
ouPi Second
, etPi Minute
devrait être préféré au lieu dePi Second
.- Pour ce défi, vous devez utiliser le temps de 12 heures (15:14 == 3:14). La date / heure utilisée pour déterminer le
Pi Day/Minute/Second
doit être basée sur l' heure du système .
Score et bonus
Bonus de -15 octets: Si vous imprimez "No Pi Time"
quand ce n'est pas le temps Pi.
Comme toujours, les failles standard sont interdites. C'est le code le plus court de golf en octets gagne!
Réponses:
CJam, 41 octets
Testez-le ici. Vous pouvez également utiliser ce lien pour bloquer le résultat de
et
pour un test plus facile.Explication
la source
Javascript (ES6),
114112 - 15 = 97 octetsNon golfé:
Merci pour -2 octets @ edc65
la source
Date()
au lieu denew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
queunderscore
.Ruby,
125124 caractèresHélas, le plus intelligent
%i[month day hour min sec].map{|x|Time.new.send x}
est plus long.La clé ici est l'utilisation de
each_cons
pour éviter la répétition (voir les dernières lignes de l'explication ci-dessous).la source
'Pi'
comme vous l'avez fait avect
, non?[(p='Pi ')+Day','',p+'Minute',p+'Second']
c'est plus long.Python 2,
219186183 octets (198-15)j'ai essayé
Non golfé:
Golfé:
la source
from datetime import*;n=datetime.now()
est plus court. En outre, il est inutile d'indexer dans un tableau lorsque vous imprimez des chaînes constantes.time.localtime()
; il revient à 148-15 octets (sans le correctif de 12 heures). La chose de 12 heures est regrettable cependant; sans elle, vous pourriez facilement la réduire à 129-15 octets:import time;x=3,14;T=time.localtime();print{1:'Pi Day',3:'Pi Minute',4:'Pi Second'}.get((zip(T,T[1:])+[x]).index(x),'No Pi Time')
(et 118-15 octets sur Python 3, en convertissant en octets et en utilisant find, ce qui simplifie les choses)Japt, 78 - 15 = 63 octets
Assez simple - vérifie simplement la date de chaque cas.
Explication:
D=Ð)g
obtenir la date actuelle (Ð
), la stocker dans la variableD
et obtenir le mois (g
). Pourquoi le stocker dans la variable, si c'est déjà une lettre? Parce que depuis lors, vous pouvez habiller n'importe quelle partie de la date avecDa
, oùa
est la fonction, retourner l'année, le mois, la date, etc. Mais sinon, vous devriez faireÐ a
, voir l'espace.¥3
est de==3
vérifier si le mois est mars.©
est&&
, c'est-à-dire "et".Df
est le jour du mois.E
a 14 ans?...:...
- ensembles typiques d'opérateurs ternairesDd %C
le rappel de diviser l'heure (Dd
) par 12 (C
)Dc
est les minutesDb
sont des secondesEssayez-le en ligne!
Pour émuler Pi Day:
Pour émuler Pi Minute :
Pour émuler Pi Second :
la source
TI-BASIC, 124 octets
Merci à FlagAsSpam d'avoir rasé quelques octets.
la source
i
(unité imaginaire) ete
(constante d'Euler) comme raccourcis? Sinon, cela pourrait également vous faire économiser quelques octets.e
c'est en fait deux octets!Perl, 80 - 15 = 65 octets
Prenez 2, en analysant la représentation sous forme de chaîne de
localtime
. À l'heure actuelle, cela ressemble à ceci:La position de la chaîne correspondante est utilisée pour déterminer le temps Pi correct.
Perl, 100 octets
localtime
renvoie les mois zéro indexés, d'où la nécessité de3-/3/
.la source
Python 3, 137 - 15 = 122 octets
L'exigence de 12 heures était regrettable, car cela aurait été de 118 à 15 = 103 octets sans cela:
la source
AppleScript,
202190187183181 181 octetsHé, ce n'est pas si mal après tout.
J'ai en fait trouvé une utilisation pour l'appel de méthode d'AppleScript. Allez comprendre.Nan. Il s'avère queI'm an idiot
. La définition d'une variable est plus courte.(pour ceux qui se demandent, la commande date actuelle renvoie un type de date avec le contenu
"Saturday, January 2, 2016 at 2:46:01 PM"
ou similaire)la source
PHP, 85 - 15 = 70 octets
La principale astuce utilisée ici est le
Ymdhi_is
format de la date , au moment de la rédaction,date('Ymdhi_is')
retours201501030258_5828
.md
,hi
etis
sont les valeurs qui seront remplacées par0314
si c'est Pi-quelque chose. Notez que toutes ces chaînes seront toujours remplacées par une chaîne longue de 4 caractères.strpos
ils arrêteront la recherche à la première occurrence de l'aiguille, nous les mettons donc dans l'ordre de priorité.hi
etis
est nécessaire car nous ne voulons passtrpos
faire correspondre une valeur qui chevaucherait les deux (grâce à primo pour avoir économisé des octets ici).0314
parce que314
qu'elle correspondrait à tort à 10:31:42 comme Pi-Second.La partie Y est la plus délicate. Nous avons besoin d'un préfixe pour compenser la première occurrence de Pi-quelque chose, nous permettant de distinguer
strpos
les valeurs de retour defalse
(non trouvé, Pi-rien) et0
(trouvé à l'index 0, Pi-jour).Et nous voulons que ce préfixe soit long de 4 ou 5 caractères, car nous prévoyons de diviser
strpos
la valeur de retour par 4.Y est composé de 4 caractères, mais:
Y
cela sera remplacé par 4 chiffres, mais ce n'est pas vrai .Puisque PHP n'existait pas en 314 et n'existera probablement plus en 10314, je suppose que ces bogues peuvent être ignorés en toute sécurité.
Notez que cela
0314
peut se chevaucherYmd
puisque:Ymmd
configuration: il n'y a pas de 31ème mois.YYmm
configuration: il n'y a pas de 14ème mois.YYYm
configuration: il y a moins de 40 mois.En outre, il existe une version sans les bogues liés à l'année, qui est de 86 à 15 = 71 octets :
la source
Ymd_hi_is
. De plus, je ne pense pas qu'un séparateur soit nécessaire entremd
ethi
, comme les 12 heuresh
ne peuvent jamais être 14, et ne commencent jamais par 3 ou 4.Python 3, 179 octets
la source