हम समय को जिस तरह मापते हैं, वह थोड़ा उलझा हुआ है। एक मिनट में 60 सेकंड होते हैं, और एक घंटे में 60 मिनट। यह प्राचीन बैबिलोन से आया है, जहाँ लोग अपनी संख्या प्रणाली का आधार 60 रखते थे। एक दिन में 24 घंटे होते हैं, एक सप्ताह में 7 दिन, और एक महीने में कितने दिन होते हैं? और महीने के दिनों की बात करें, तो वे इस पर निर्भर करते हैं कि कौन-सा महीना है, और यह भी कि आपके देश में किस तरह का कैलेंडर इस्तेमाल होता है।
क्या हो अगर हम समय के अंतराल बताने के लिए सिर्फ सेकंड इस्तेमाल करें? तब हम बड़ी संख्या में सेकंड को आसानी से समझ आने वाली मात्राओं में लिखने के लिए मीट्रिक प्रणाली के उपसर्ग लगा सकते हैं।
अगर हम कभी मंगल या किसी और ग्रह पर बस जाएँ, तो समय मापना और भी उलझा हुआ हो जाएगा। कोई "साल" कहे, तो उसका मतलब धरती का साल होगा या मंगल का?
इस अभ्यास का विचार लेखक Vernor Vinge के विज्ञान कथा उपन्यास "A Deepness in the Sky" से आया है। इसमें लेखक समय मापने के लिए मीट्रिक प्रणाली को आधार बनाते हैं।
आपका काम है किसी दी गई तारीख से एक गीगासेकंड बाद की तारीख और समय पता करना।
एक गीगासेकंड एक अरब सेकंड होता है। यानी एक के बाद नौ शून्य।
अगर आपका जन्म 24 जनवरी, 2015 को 22:00 बजे (रात 10:00:00) हुआ हो, तो 2 अक्टूबर, 2046 को 23:46:40 बजे (रात 11:46:40) आपकी उम्र एक गीगासेकंड की हो जाएगी।
तारीखों के लिए Prolog की बिल्ट-इन सुविधा काफी बुनियादी है। हालाँकि आप यह अभ्यास उसी से हल कर सकते हैं जो Prolog में पहले से मौजूद है, लेकिन तारीखों के साथ काम करने का इससे कहीं बेहतर तरीका date_time पैकेज है।
अगर आपका इंस्टॉल किया हुआ Swipl वर्शन काफी नया है, तो आप यह पैकेज इस तरह इंस्टॉल कर सकते हैं:
swipl pack install date_time
अगर इससे काम न चले, तो आप यह चला सकते हैं:
swipl -g 'pack_install(date_time)'
अगर आप ऑनलाइन एडिटर इस्तेमाल कर रहे हैं, तो आपको कुछ भी खुद इंस्टॉल करने की ज़रूरत नहीं है।
date_time पैकेज इस्तेमाल करने के लिए अपने हल की फाइल में सबसे ऊपर यह कोड जोड़िए:
:- use_module(library(date_time)).
सुझाव: date_time पैकेज का सोर्स अच्छी तरह डॉक्युमेंट किया गया है और इससे आपको बहुत मदद मिलेगी!
Exercism पर साइन अप कीजिए और Prolog को 109 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।