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!