Aby wygrać to wyzwanie, należy napisać najkrótszy skrypt „timeago”, który wyświetla liczbę dekad, lat, tygodni, dni, godzin, minut i sekund między danym znacznikiem czasu Unix a czasem uruchomienia skryptu.
Musisz podać różnicę czasu w „najniższych kategoriach”, np. 1 week
Nie 7 days
, 9 years
nie 0 decades 9 years
. Musisz także poprawnie używać liczby mnogiej, np . 1 day
Nie 1 days
.
Skrypt musi być dokładny w zakresie plus lub minus 1 sekunda (więc dokładna metoda drugiego zaokrąglania nie jest ważna).
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
Dane wyjściowe powinny mieć postać
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
gdzie A...G
wszystkie są nieujemnymi liczbami całkowitymi i s
jest tam tylko dla liczby mnogiej.
Notatki
- Znacznik czasu zawsze będzie czasem z przeszłości. To może być negatywne.
- Wejście i wyjście może być cokolwiek sensownego: standardowe wejście / standardowe wyjście, wejście funkcji i wartość zwracana itp.
- Nie możesz używać narzędzi, które już to robią. tzn. jeśli twój język ma
timesince(timestamp)
wbudowaną funkcję, nie możesz jej użyć.
Ogromnie zredagowałem to, aby wyjaśnić, w nadziei, że uda się wygasić nieco głupią bitwę między nowymi użytkownikami z niejasnymi pytaniami a starymi użytkownikami, którzy wymagają perfekcji. To nie było straszne pytanie (choć teraz może być zbyt podobne do tego ).
Biorąc pod uwagę, że od ostatniej odpowiedzi minęło wystarczająco dużo czasu, ogłaszam, że Three If By Whisky z 177 bajtową implementacją Ruby jest zwycięzcą tego kontekstu!