ट्रैक
/
Bash
Bash
/
अभ्यास
/
गीगासेकंड
गीगासेकंड

गीगासेकंड

मध्यम

परिचय

हम समय को जिस तरह मापते हैं, वह थोड़ा उलझा हुआ है। एक मिनट में 60 सेकंड होते हैं, और एक घंटे में 60 मिनट। यह प्राचीन बैबिलोन से आया है, जहाँ लोग अपनी संख्या प्रणाली का आधार 60 रखते थे। एक दिन में 24 घंटे होते हैं, एक सप्ताह में 7 दिन, और एक महीने में कितने दिन होते हैं? और महीने के दिनों की बात करें, तो वे इस पर निर्भर करते हैं कि कौन-सा महीना है, और यह भी कि आपके देश में किस तरह का कैलेंडर इस्तेमाल होता है।

क्या हो अगर हम समय के अंतराल बताने के लिए सिर्फ सेकंड इस्तेमाल करें? तब हम बड़ी संख्या में सेकंड को आसानी से समझ आने वाली मात्राओं में लिखने के लिए मीट्रिक प्रणाली के उपसर्ग लगा सकते हैं।

  • किसी खाने की विधि में लिखा हो सकता है कि ब्राउनी को ओवन में दो किलोसेकंड (यानी दो हज़ार सेकंड) तक पकने दीजिए।
  • शायद आप और आपका परिवार दो मेगासेकंड (यानी बीस लाख सेकंड) के लिए किसी अनोखी जगह घूमने जाएँ।
  • और अगर आपकी और आपके जीवनसाथी की शादी को सौ करोड़ सेकंड हो चुके हों, तो आप अपनी एक गीगासेकंड सालगिरह मनाएँगे।
Note

अगर हम कभी मंगल या किसी और ग्रह पर बस जाएँ, तो समय मापना और भी उलझा हुआ हो जाएगा। कोई "साल" कहे, तो उसका मतलब धरती का साल होगा या मंगल का?

इस अभ्यास का विचार लेखक Vernor Vinge के विज्ञान कथा उपन्यास "A Deepness in the Sky" से आया है। इसमें लेखक समय मापने के लिए मीट्रिक प्रणाली को आधार बनाते हैं।

निर्देश

आपका काम है किसी दी गई तारीख से एक गीगासेकंड बाद की तारीख और समय पता करना।

एक गीगासेकंड एक अरब सेकंड होता है। यानी एक के बाद नौ शून्य।

अगर आपका जन्म 24 जनवरी, 2015 को 22:00 बजे (रात 10:00:00) हुआ हो, तो 2 अक्टूबर, 2046 को 23:46:40 बजे (रात 11:46:40) आपकी उम्र एक गीगासेकंड की हो जाएगी।

bash के साथ हल कैसे करें

bash में डेटटाइम स्ट्रिंग पार्स करने का कोई बिल्ट-इन तरीका नहीं है। इस अभ्यास में आपको बाहरी यूटिलिटी को कॉल करना होगा।

  • GNU date कमांड के -d ऑप्शन की मदद से कई तरह के फॉर्मैट पार्स किए जा सकते हैं।
  • Mac उपयोगकर्ताओं के लिए BSD date कमांड और उसका -f ऑप्शन देखिए।
  • Perl लगभग हर जगह उपलब्ध है, और इसके Time::Piece मॉड्यूल की मदद से टाइमस्टैंप पार्स किए जा सकते हैं।

bash किसी बाहरी टूल के बिना भी तारीखों को फॉर्मैट कर सकता है। अगर आपके पास समय की वैल्यू पूर्णांक के रूप में है (एपॉक के बाद के सेकंड), तो printf %()T फॉर्मैटर की मदद से "strftime" शैली की फॉर्मैटिंग लगाई जा सकती है।

epoch=1234567890

printf '%(%Y-%m-%d %H:%M:%S)T\n' "$epoch"
# ==> 2009-02-13 18:31:30

# bash uses the `TZ` environment variable for the timezone.

TZ=Asia/Kolkata printf '%(%Y-%m-%d %H:%M:%S)T\n' "$epoch"
# ==> 2009-02-14 05:01:30
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Bash Exercism

गीगासेकंड शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Bash को 97 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।