Ce que vous devez faire pour gagner ce défi est d'écrire le script "timeago" le plus court qui génère le nombre de décennies, années, semaines, jours, heures, minutes et secondes entre un horodatage Unix donné et l'heure à laquelle le script est exécuté.
Vous devez donner la différence de temps en «termes les plus bas», par exemple 1 week
non 7 days
, 9 years
non 0 decades 9 years
. Vous devez également utiliser correctement les formes plurielles, par exemple 1 day
non 1 days
.
Votre script doit être précis à plus ou moins 1 seconde près (de sorte que la deuxième méthode d'arrondi exacte n'a pas d'importance).
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
La sortie doit être de la forme
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
où A...G
sont tous les entiers non négatifs et le s
est uniquement là pour les pluriels.
Remarques
- L'horodatage sera toujours un temps du passé. Cela peut être négatif.
- L'entrée et la sortie peuvent être raisonnables: stdin / stdout, entrée de fonction et valeur de retour, etc.
- Vous ne pouvez pas utiliser d'outils qui le font déjà. c'est-à-dire que si votre langue a une
timesince(timestamp)
fonction intégrée, vous ne pouvez pas utiliser cette fonction.
J'ai énormément modifié cela pour le rendre plus clair dans l'espoir d'apaiser la bataille quelque peu idiote entre les nouveaux utilisateurs avec des questions peu claires et les anciens utilisateurs qui nécessitent la perfection. Ce n'était pas une question terrible (bien que maintenant elle puisse être trop similaire à cela ).
Étant donné que suffisamment de temps s'est écoulé depuis la dernière réponse, je déclare Three If By Whisky avec son implémentation Ruby de 177 octets le gagnant de ce contexte!
Réponses:
Rubis,
184177Il n'y a rien de particulièrement intelligent ici, mais je soupçonne que c'est toujours très proche de l'optimal.
Exemple d'exécution
la source
J, 165
Peut probablement être joué au golf plus. Utilise un appel shell à ce jour pour obtenir l'heure actuelle d'Unix, car l'époque d'Unix n'est pas disponible dans J.
Exemple d'exécution:
la source
Python - 183
Sortie pour un horodatage de 999996400 secondes dans le passé:
la source
JavaScript, 392
Aussi le code non minimisé pour les curieux
Il se met à jour toutes les 30 secondes et calcule à la fois le singulier et le pluriel.
Pour l'exécuter, utilisez
t(unix_timestamp)
la source
Javascript, 287
pour exécuter l'utilisation
t(secondsInFuture)
;la source
t(10)
je reçois juste un videalert
.t(new Date()/1000 + 10);
eval(i)
inférieure de 2 octetswindow[i]
.Javascript, 263
pour exécuter à partir de la console Javascript, appelez
la source