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!
Respuestas:
Rubí,
184177No hay nada particularmente inteligente aquí, pero sospecho que todavía está muy cerca de lo óptimo.
Ejecución de ejemplo
fuente
J 165
Probablemente se pueda jugar más al golf. Utiliza una llamada de shell hasta la fecha para obtener el tiempo actual de Unix epoch, ya que Unix epoch no está disponible en J.
Ejemplo de ejecución:
fuente
Python - 183
Salida para una marca de tiempo 999996400 segundos en el pasado:
fuente
JavaScript, 392
También el código nominificado para los curiosos.
Se actualiza cada 30 segundos y calcula tanto en singular como en plural.
Para ejecutarlo use
t(unix_timestamp)
fuente
Javascript, 287
para ejecutar el uso
t(secondsInFuture)
;fuente
t(10)
me sale un vacíoalert
.t(new Date()/1000 + 10);
eval(i)
es 2 bytes más corta quewindow[i]
.Javascript, 263
para ejecutar desde la consola Javascript, llame
fuente