Um diese Herausforderung zu gewinnen, müssen Sie das kürzeste "timeago" -Skript schreiben, das die Anzahl der Jahrzehnte, Jahre, Wochen, Tage, Stunden, Minuten und Sekunden zwischen einem bestimmten Unix-Zeitstempel und der Zeit, zu der das Skript ausgeführt wird , ausgibt .
Sie müssen den Zeitunterschied in "niedrigsten Begriffen" angeben, zB 1 week
nicht 7 days
, 9 years
nicht 0 decades 9 years
. Sie müssen auch Pluralformen korrekt verwenden, z . B. 1 day
nicht 1 days
.
Ihr Skript muss auf plus oder minus 1 Sekunde genau sein (daher ist die genaue zweite Rundungsmethode unwichtig).
Time Equivalency Table
1 decade = 10 years
1 year = 31536000 seconds (not technically correct but close enough)
1 week = 7 days
1 day = 24 hours
1 hour = 60 minutes
1 minute = 60 seconds
Die Ausgabe sollte die Form haben
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
wo A...G
sind alle nicht negativen ganzen Zahlen und das s
ist nur für Pluralformen da.
Anmerkungen
- Der Zeitstempel ist immer eine Zeit aus der Vergangenheit. Es kann negativ sein.
- Eingabe und Ausgabe können alles Vernünftige sein: stdin / stdout, Funktionseingabe und Rückgabewert usw.
- Sie dürfen keine Tools verwenden, die dies bereits tun. Wenn in Ihrer Sprache eine
timesince(timestamp)
Funktion integriert ist, können Sie diese Funktion möglicherweise nicht verwenden.
Ich habe dies umfassend bearbeitet, um es klarer zu machen, in der Hoffnung, den etwas albernen Kampf zwischen neuen Benutzern mit unklaren Fragen und alten Benutzern, die Perfektion benötigen, zu lindern. Es war nicht eine schreckliche Frage (obwohl jetzt es zu ähnlich sein kann , dies ).
Angesichts der Tatsache, dass seit der letzten Antwort genügend Zeit vergangen ist, erkläre ich Three If By Whiskey mit seiner 177-Byte- Ruby-Implementierung zum Gewinner dieses Kontexts!
Antworten:
Ruby,
184177Hier gibt es nichts besonders Kluges, aber ich vermute, es ist immer noch sehr nahe am Optimum.
Beispiellauf
quelle
J, 165
Kann wahrscheinlich mehr Golf gespielt werden. Verwendet einen Shell-Aufruf bis heute, um die aktuelle Unix-Epochenzeit abzurufen, da die Unix-Epoche in J nicht verfügbar ist.
Beispiellauf:
quelle
Python - 183
Ausgabe für einen Zeitstempel 999996400 Sekunden in der Vergangenheit:
quelle
JavaScript, 392
Auch der unminimierte Code für die Neugierigen
Es wird alle 30 Sekunden aktualisiert und berechnet sowohl Singular als auch Plural.
Um es auszuführen, verwenden Sie
t(unix_timestamp)
quelle
Javascript, 287
verwenden
t(secondsInFuture)
;quelle
t(10)
bekomme ich nur eine leerealert
.t(new Date()/1000 + 10);
eval(i)
2 Byte kürzer ist alswindow[i]
.Javascript, 263
Rufen Sie auf, um von der Javascript-Konsole aus zu starten
quelle