Bei dieser Herausforderung müssen Sie feststellen, ob es sich um Pi-Tag, Pi-Minute oder Pi-Sekunde handelt.
Da Pi irrational ist, soll Ihr Code so kurz wie möglich sein.
Beispiele
Es wird keine Eingabe gemacht , Ihr Programm sollte die Systemzeit verwenden. Ich habe es nur zur Klarheit hinzugefügt
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>
Was ist Pi Tag / Minute / Sekunde?
Pi Day
ist, wenn der Monat März ist und das Datum der 14. istPi Minute
ist, wenn die Stunde 3 und die Minute 14 istPi Second
ist, wenn die Minute 3 ist und die Sekunde 14 istPi Day
sollte anstelle vonPi Minute
oder bevorzugt werdenPi Second
, undPi Minute
sollte anstelle von bevorzugt werdenPi Second
.- Für diese Herausforderung sollten Sie 12 Stunden verwenden (15:14 == 3:14). Das Datum und die Uhrzeit für die Ermittlung der Uhrzeit
Pi Day/Minute/Second
sollten auf der Systemzeit basieren .
Wertung & Bonus
-15 Byte Bonus: Wenn Sie drucken, "No Pi Time"
wenn es keine Pi-Zeit ist.
Standardlücken sind wie immer verboten. Dies ist Code-Golf kürzester Code in Bytes gewinnt!
Antworten:
CJam, 41 Bytes
Teste es hier. Alternativ können Sie diesen Link verwenden, um das Ergebnis
et
für einfachere Tests zu speichern.Erläuterung
quelle
Javascript (ES6),
114112 - 15 = 97 ByteUngolfed:
Danke für -2 Bytes @ edc65
quelle
Date()
stattnew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
alsunderscore
.Ruby,
125124 ZeichenAch, desto klüger
%i[month day hour min sec].map{|x|Time.new.send x}
länger.Der Schlüssel hier ist die Verwendung von
each_cons
, um Wiederholungen zu vermeiden (siehe die letzten Zeilen der folgenden Erklärung).quelle
'Pi'
Sie wie bisher herausziehent
, nein?[(p='Pi ')+Day','',p+'Minute',p+'Second']
ist länger.Python 2,
219186183 Bytes (198-15)Ich habe es versucht
Ungolfed:
Golf gespielt:
quelle
from datetime import*;n=datetime.now()
ist kürzer. Außerdem macht es keinen Sinn, in ein Array zu indizieren, wenn Sie konstante Zeichenfolgen drucken.time.localtime()
indexieren. Es kommt auf 148-15 Bytes (ohne die 12-Stunden-Korrektur). Die 12-Stunden-Sache ist jedoch unglücklich; ohne könnte man es leicht auf 129-15 Bytes bringen: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')
(und 118-15 Bytes auf Python 3, indem man in Bytes konvertiert und find verwendet, was die Sache einfacher macht)Japt, 78-15 = 63 Bytes
Ziemlich einfach - prüft nur das Datum für jeden Fall.
Erläuterung:
D=Ð)g
Holen Sie sich das aktuelle Datum (Ð
), speichern Sie es in der VariablenD
und erhalten Sie den Monat (g
). Warum in der Variablen speichern, wenn es sich bereits um einen Buchstaben handelt? Denn seitdem können Sie jeden Teil des Datums mitDa
, woa
ist die Funktion, Rückkehr Jahr, Monat, Datum, etc. Aber sonst müssten Sie tunÐ a
, um das Leerzeichen zu sehen.¥3
ist==3
, wenn der Monat, die Überprüfung März.©
ist&&
, dh "und".Df
ist der Tag des Monats.E
ist 14?...:...
- Typische Mengen von ternären OperatorenDd %C
die Erinnerung daran, die Stunde (Dd
) durch 12 zu teilen (C
) zuDc
ist die MinutenDb
sind SekundenProbieren Sie es online!
So emulieren Sie Pi Day:
Pi Minute emulieren :
So emulieren Sie Pi Second :
quelle
TI-BASIC, 124 Bytes
Vielen Dank an FlagAsSpam für das Rasieren einiger Bytes.
quelle
i
(imaginäre Einheit) unde
(Eulers Konstante) als Abkürzungen? Wenn nicht, können Sie dadurch auch einige Bytes einsparen.e
ist eigentlich zwei Bytes!Perl, 80-15 = 65 Bytes
Nehmen Sie 2 und analysieren Sie die Zeichenfolgendarstellung von
localtime
. Gegenwärtig sieht das ungefähr so aus:Die Position der übereinstimmenden Zeichenfolge wird verwendet, um die richtige Pi-Zeit zu bestimmen.
Perl, 100 Bytes
localtime
Gibt die mit Null indizierten Monate zurück, daher die Notwendigkeit für3-/3/
.quelle
Python 3, 137-15 = 122 Bytes
Die 12-Stunden-Anforderung war unglücklich, da dies ohne 118-15 = 103 Bytes gewesen wäre:
quelle
AppleScript,
202190187183181 BytesHey, das ist doch nicht so schlimm.
Ich habe tatsächlich eine Verwendung für den Methodenaufruf von AppleScript gefunden. Stelle dir das vor.Nee. Stellt sich nur heraus, dassI'm an idiot
. Das Setzen einer Variablen ist kürzer.(Für diejenigen, die sich fragen, gibt der Befehl current date einen Datumstyp mit dem Inhalt
"Saturday, January 2, 2016 at 2:46:01 PM"
oder dergleichen zurück.)quelle
PHP, 85-15 = 70 Bytes
Der wichtigste Trick Einsatz ist hier das
Ymdhi_is
Datumsformat , die zum Zeitpunkt des Schreibens,date('Ymdhi_is')
kehrt201501030258_5828
.md
,hi
Undis
sind die Werte , die durch ersetzt werden0314
wenn es Pi-etwas ist. Beachten Sie, dass alle diese Zeichenfolgen immer durch eine 4-stellige Zeichenfolge ersetzt werden.strpos
die Suche beim ersten Auftreten der Nadel beendet wird. Daher werden sie in der Prioritätsreihenfolge abgelegt.hi
undis
ist erforderlich, da wir keinenstrpos
Wert angeben möchten, der beide überlappt (danke an primo für das Speichern von Bytes hier).0314
da314
fälschlicherweise mit 10:31:42 als Pi-Sekunde abgeglichen.Der Y-Teil ist der schwierigste. Wir benötigen ein Präfix, um das erste Vorkommen von Pi-etwas auszugleichen und zu unterscheiden
strpos
Rückgabewerte vonfalse
(nicht gefunden, Pi-nichts) und0
(gefunden bei Index 0, Pi-Tag) zu unterscheiden.Und wir möchten, dass dieses Präfix 4 oder 5 Zeichen lang ist, da wir eine Teilung planen
strpos
den Rückgabewert durch 4 .Y ist 4 Zeichen lang, aber:
Y
dies durch 4 Ziffern ersetzt wird, aber es ist nicht wahr .Da PHP im Jahr 314 nicht existierte und im Jahr 10314 wahrscheinlich nicht mehr existieren wird, kann man diese Bugs sicher ignorieren.
Beachten Sie, dass
0314
sich Folgendes überschneiden kannYmd
:Ymmd
Konfiguration: Es gibt keinen 31. Monat.YYmm
Konfiguration: Es gibt keinen 14. Monat.YYYm
Konfiguration: Es gibt weniger als 40 Monate.Es gibt auch eine Version ohne die auf das Jahr bezogenen Fehler, die 86 - 15 = 71 Bytes beträgt :
quelle
Ymd_hi_is
. Auch ich glaube nicht , ein Separator ist zwischenmd
undhi
, wie die 12-Stundenh
nie 14 sein können, und nie mit 3 oder 4 beginnenPython 3, 179 Bytes
quelle