Lo que debe hacer para ganar este desafío es escribir el script "timeago" más corto que genere la cantidad de décadas, años, semanas, días, horas, minutos y segundos entre una marca de tiempo Unix determinada y el tiempo en que se ejecuta el script.
Debe dar la diferencia de tiempo en "los términos más bajos", por ejemplo, 1 week
no 7 days
, 9 years
no 0 decades 9 years
. También debe usar formas plurales correctamente, por ejemplo, 1 day
no 1 days
.
Su secuencia de comandos debe tener una precisión de más o menos 1 segundo (por lo que el segundo método de redondeo exacto no es 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
El resultado debe ser de la forma
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
donde A...G
están todos los enteros no negativos y s
solo está ahí para los plurales.
Notas
- La marca de tiempo siempre será un tiempo del pasado. Puede ser negativo
- La entrada y la salida pueden ser razonables: stdin / stdout, entrada de función y valor de retorno, etc.
- No puede usar ninguna herramienta que ya lo haga. es decir, si su idioma tiene una
timesince(timestamp)
función incorporada, no puede usar esa función.
Lo he editado ampliamente para aclararlo con la esperanza de calmar la batalla un tanto tonta entre los nuevos usuarios con preguntas poco claras y los viejos usuarios que requieren perfección. No era una pregunta terrible (aunque ahora puede ser demasiado similar a esto ).
Dado que ha pasado suficiente tiempo desde la última respuesta, ¡declaro Three If By Whisky con su implementación Ruby de 177 bytes como el ganador de este contexto!