(Remarque: bien que lié, ce défi n'est pas un doublon de celui-ci car il nécessite de déterminer automatiquement les secondes intercalaires plutôt que de coder en dur leur temps, et n'est pas un doublon de celui-ci car la plupart de la difficulté vient de la détermination du temps sans biais de seconde intercalaire , ce que la plupart des API ne font pas par défaut. En tant que tel, une solution sera probablement différente d'une solution pour l'un ou l'autre de ces défis.)
Nous arrivons à la fin de 2016, mais cela va prendre un peu plus de temps que ce que la plupart des gens attendent. Voici donc un défi pour célébrer notre deuxième seconde cette année.
Affiche l'heure actuelle en UTC, en heures, minutes, secondes. (Par exemple, les formats de sortie légitimes pour midi incluraient 12:00:00
et [12,0,0]
; le formatage n'est pas massivement important ici.)
Cependant, il y a une torsion: votre programme doit gérer les secondes intercalaires de manière appropriée, passées et futures. Cela signifie que votre programme devra obtenir une liste de secondes intercalaires auprès d'une source en ligne ou automatiquement mise à jour / pouvant être mise à jour. Vous pouvez vous connecter à Internet pour l'obtenir si vous le souhaitez. Cependant, vous ne pouvez vous connecter qu'à une URL antérieure à ce défi (c.-à-d. Pas de téléchargement de parties de votre programme ailleurs), et vous ne pouvez pas utiliser la connexion pour déterminer l'heure actuelle (en particulier: votre programme doit fonctionner même si une tentative d'accès Internet renvoie une page qui est périmée jusqu'à 24 heures).
La plupart des API par défaut des systèmes d'exploitation pour l'heure actuelle inclineront le temps autour des secondes intercalaires afin de les cacher des programmes qui pourraient autrement être confondus. En tant que tel, la principale difficulté de ce défi est de trouver une méthode ou une API pour annuler cela et déterminer l'heure réelle non modifiée en UTC.
En théorie, votre programme doit être parfaitement précis s'il s'exécute sur un ordinateur infiniment rapide et ne doit pas prendre intentionnellement plus de temps pour s'exécuter. (Bien sûr, dans la pratique, votre programme s'exécutera sur un ordinateur imparfait et ne s'exécutera donc probablement pas instantanément. Vous n'avez pas à vous soucier de l'invalidation des résultats, mais ne devez pas en dépendre pour l'exactitude de votre programme. )
Votre programme doit fonctionner quel que soit le fuseau horaire sur lequel l'horloge système est réglée. (Cependant, il peut demander au système d'exploitation ou à l'environnement des informations sur le fuseau horaire utilisé et peut supposer que la réponse est exacte.)
En tant que golf de code , le programme le plus court gagne. Bonne chance!