Il modo in cui misuriamo il tempo è piuttosto caotico. In un minuto ci sono 60 secondi e in un'ora 60 minuti. Questo viene dall'antica Babilonia, dove il 60 era la base del loro sistema di numerazione. In un giorno ci sono 24 ore, in una settimana 7 giorni, e quanti giorni ci sono in un mese? Beh, il numero di giorni di un mese dipende non solo da quale mese è, ma anche dal tipo di calendario che si usa nel paese in cui vivi.
E se invece usassimo solo i secondi per esprimere gli intervalli di tempo? Allora potremmo usare i prefissi del sistema metrico per scrivere grandi numeri di secondi in quantità più facilmente comprensibili.
Se un giorno colonizzeremo Marte o qualche altro pianeta, misurare il tempo diventerà ancora più complicato. Se qualcuno dice «anno», intende un anno sulla Terra o un anno su Marte?
L'idea per questo esercizio viene dal romanzo di fantascienza "A Deepness in the Sky" dell'autore Vernor Vinge. Al suo interno, l'autore usa il sistema metrico come base per misurare il tempo.
Il tuo compito sarà determinare la data e l'ora di un gigasecondo dopo una certa data.
Un gigasecondo è mille milioni di secondi. Cioè un uno seguito da nove zeri.
Se sei nato il 24 gennaio 2015 alle 22:00 (le 10:00:00 di sera), allora il 2 ottobre 2046 alle 23:46:40 (le 11:46:40 di sera) avresti un gigasecondo di vita.
Il supporto integrato di Prolog per le date è piuttosto rudimentale. Anche se puoi risolvere questo esercizio con ciò che Prolog offre di integrato, un modo molto più comodo per lavorare con le date è tramite il pacchetto date_time.
Se la versione di Swipl che hai installato è abbastanza aggiornata, puoi installare il pacchetto eseguendo:
swipl pack install date_time
Se non funziona, puoi eseguire:
swipl -g 'pack_install(date_time)'
Se stai usando l'editor online, non devi installare nulla manualmente.
Aggiungi il seguente codice all'inizio del file della soluzione per usare il pacchetto date_time:
:- use_module(library(date_time)).
Suggerimento: il codice sorgente del pacchetto date_time è ben documentato e può essere di grande aiuto!
Iscriviti a Exercism per imparare e padroneggiare Prolog con 109 esercizi e il mentoring di persone reali, tutto gratis.