Quello che devi fare per vincere questa sfida è scrivere lo script "timeago" più breve che fornisca il numero di decenni, anni, settimane, giorni, ore, minuti e secondi tra un dato timestamp Unix e il tempo in cui lo script viene eseguito.
È necessario indicare la differenza oraria in "termini più bassi", ad esempio 1 weekno 7 days, 9 yearsno 0 decades 9 years. È inoltre necessario utilizzare correttamente le forme plurali, ad esempio 1 dayno 1 days.
Lo script deve essere accurato entro più o meno 1 secondo (quindi il secondo metodo di arrotondamento esatto non è importante).
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
L'output dovrebbe essere nella forma
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
dove A...Gsono tutti numeri interi non negativi e sc'è solo per i plurali.
Appunti
- Il timestamp sarà sempre un tempo dal passato. Potrebbe essere negativo.
- L'input e l'output possono essere ragionevoli: stdin / stdout, input e valore della funzione ecc.
- Non è possibile utilizzare strumenti che lo fanno già. cioè se la tua lingua ha una
timesince(timestamp)funzione integrata non puoi usare quella funzione.
Ho ampiamente modificato questo per renderlo più chiaro nella speranza di alleviare la battaglia un po 'sciocca tra nuovi utenti con domande poco chiare e vecchi utenti che richiedono la perfezione. Non era una domanda terribile (anche se ora potrebbe essere troppo simile a questa ).
Dato che è trascorso abbastanza tempo dall'ultima risposta, dichiaro Three If By Whiskey con la sua implementazione Ruby da 177 byte il vincitore di questo contesto!