O que você precisa fazer para vencer esse desafio é escrever o script "timeago" mais curto que produza o número de décadas, anos, semanas, dias, horas, minutos e segundos entre um determinado carimbo de data e hora do Unix e a hora em que o script é executado.
Você deve dar a diferença de tempo em "termos mais baixo", por exemplo, 1 week
não 7 days
, 9 years
não 0 decades 9 years
. Você também deve usar formas plurais corretamente, por exemplo, 1 day
não 1 days
.
Seu script deve ter uma precisão de mais ou menos 1 segundo (portanto, o método exato de segundo arredondamento não é 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
A saída deve ter a forma
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
onde A...G
estão todos os números inteiros não negativos e s
só existe para os plurais.
Notas
- O registro de data e hora sempre será um tempo do passado. Pode ser negativo.
- Entrada e saída podem ser razoáveis: stdin / stdout, entrada de função e valor de retorno, etc.
- Você não pode usar nenhuma ferramenta que já faça isso. ou seja, se o seu idioma tiver uma
timesince(timestamp)
função incorporada, você não poderá usá-la.
Eu editei isso amplamente para tornar mais claro as esperanças de amenizar a batalha meio tola entre novos usuários com perguntas pouco claras e usuários antigos que exigem perfeição. Não era uma pergunta terrível (embora agora possa ser muito parecida com isso ).
Dado que se passou um tempo suficiente desde a última resposta, declaro Three If By Whiskey com sua implementação Ruby de 177 bytes o vencedor desse contexto!