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!
Respostas:
Ruby,
184177Não há nada particularmente inteligente aqui, mas suspeito que ainda esteja muito próximo do ideal.
Exemplo de execução
fonte
J, 165
Provavelmente pode ser jogado mais. Usa uma chamada de shell até a data para obter a hora atual da época unix, pois a época Unix não está disponível em J.
Exemplo de execução:
fonte
Python - 183
Saída para um carimbo de data / hora 999996400 segundos no passado:
fonte
JavaScript, 392
Também o código não minificado para os curiosos
Ele é atualizado a cada 30 segundos e calcula o singular e o plural.
Para executá-lo, use
t(unix_timestamp)
fonte
Javascript, 287
executar o uso
t(secondsInFuture)
;fonte
t(10)
, apenas fico vazioalert
.t(new Date()/1000 + 10);
eval(i)
é 2 bytes menor quewindow[i]
.Javascript, 263
para executar no console Javascript, chame
fonte