La façon dont on mesure le temps est un peu chaotique. Il y a 60 secondes dans une minute, et 60 minutes dans une heure. Cela remonte à l'ancienne Babylone, où l'on utilisait 60 comme base de son système de numération. Il y a 24 heures dans une journée, 7 jours dans une semaine, et combien de jours dans un mois ? Eh bien, cela dépend non seulement du mois, mais aussi du type de calendrier utilisé dans le pays où tu vis.
Et si, au lieu de ça, on n'utilisait que des secondes pour exprimer les intervalles de temps ? On pourrait alors utiliser les préfixes du système métrique pour écrire de grands nombres de secondes sous forme de quantités plus faciles à appréhender.
Si un jour on colonise Mars ou une autre planète, mesurer le temps deviendra encore plus compliqué. Si quelqu'un dit « année », parle-t-il d'une année sur Terre ou d'une année sur Mars ?
L'idée de cet exercice vient du roman de science-fiction "A Deepness in the Sky" de l'auteur Vernor Vinge. L'auteur y utilise le système métrique comme base pour mesurer le temps.
Ta tâche consiste à déterminer la date et l'heure une gigaseconde après une date donnée.
Une gigaseconde correspond à un milliard de secondes. C'est un 1 suivi de neuf zéros.
Si tu étais né le 24 janvier 2015 à 22 h 00, tu atteindrais l'âge d'une gigaseconde le 2 octobre 2046 à 23 h 46 min 40 s.
La prise en charge des dates intégrée à Prolog est assez rudimentaire. Tu peux certes résoudre cet exercice avec ce que Prolog propose de base, mais il est bien plus agréable de manipuler les dates grâce au paquet date_time.
Si la version de Swipl que tu as installée est suffisamment à jour, tu peux installer le paquet en lançant :
swipl pack install date_time
Si ça ne fonctionne pas, tu peux lancer :
swipl -g 'pack_install(date_time)'
Si tu utilises l'éditeur en ligne, tu n'as rien besoin d'installer manuellement.
Ajoute le code suivant en haut de ton fichier de solution pour utiliser le paquet date_time :
:- use_module(library(date_time)).
Astuce : la source du paquet date_time est bien documentée et pourra t'être d'une grande aide !
Inscris-toi sur Exercism pour apprendre et maîtriser Prolog avec 109 exercices, et un vrai mentorat humain, le tout gratuitement.