La manera en que medimos el tiempo es un poco enredada. Tenemos 60 segundos en un minuto y 60 minutos en una hora. Esto viene de la antigua Babilonia, donde usaban el 60 como base de su sistema numérico. Tenemos 24 horas en un día, 7 días en una semana, ¿y cuántos días en un mes? Bueno, los días de un mes dependen no solo de qué mes sea, sino también del tipo de calendario que se use en el país donde vives.
¿Y si, en cambio, solo usáramos segundos para expresar intervalos de tiempo? Entonces podríamos usar los prefijos del sistema métrico para escribir grandes cantidades de segundos en cantidades más fáciles de comprender.
Si algún día colonizamos Marte o algún otro planeta, medir el tiempo va a ser aún más enredado. Si alguien dice «año», ¿se refiere a un año en la Tierra o a un año en Marte?
La idea de este ejercicio surgió de la novela de ciencia ficción «A Deepness in the Sky», del autor Vernor Vinge. En ella, el autor usa el sistema métrico como base para medir el tiempo.
Tu tarea es determinar la fecha y la hora un gigasegundo después de una fecha determinada.
Un gigasegundo equivale a mil millones de segundos. Es decir, un uno seguido de nueve ceros.
Si nacieras el 24 de enero de 2015 a las 22:00 (10:00:00 p. m.), entonces cumplirías un gigasegundo el 2 de octubre de 2046 a las 23:46:40 (11:46:40 p. m.).
El soporte de fechas que Prolog trae integrado es bastante rudimentario. Aunque puedes resolver este ejercicio solo con lo que Prolog trae de fábrica, una forma mucho más cómoda de trabajar con fechas es el paquete date_time.
Si tu versión instalada de Swipl es bastante reciente, puedes instalar el paquete ejecutando:
swipl pack install date_time
Si eso no funciona, puedes ejecutar:
swipl -g 'pack_install(date_time)'
Si usas el editor en línea, no necesitas instalar nada de forma manual.
Agrega el siguiente código al inicio de tu archivo de solución para usar el paquete date_time:
:- use_module(library(date_time)).
Consejo: la fuente del paquete date_time está bien documentada y puede ser de gran ayuda.
Regístrate en Exercism para aprender y dominar Prolog con 109 ejercicios y mentoría humana real, todo gratis.