MATLAB - 89 बाइट्स
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
सुंदर आत्म-व्याख्यात्मक। सबसे पहले, सिस्टम क्लॉक के वर्तमान घंटे को हथियाने के लिए एक फंक्शन हैंडल बनाएं। फिर, Legen... wait for it...एक गाड़ी वापसी के साथ प्रदर्शित करें, और फिर हम एक whileलूप में जाते हैं, जहां हम यह देखने के लिए चेक करते रहते हैं कि क्या 1 के साथ जोड़ा गया घंटा वर्तमान घंटे के बराबर नहीं है । यदि यह है, तो लूपिंग रखें। केवल जब तक कि जब अगले घंटे न हो जाए, हम प्रदर्शित करते हैं dary!और एक गाड़ी वापसी के बाद होती है।
MATLAB का घंटा 24-घंटे के अनुक्रमण पर आधारित है, इसलिए modआधार 24 के साथ संचालन को रात 11 बजे (23:00) से लेकर मध्यरात्रि (00:00) तक फैलाने की आवश्यकता होती है।
लघु नोट
hourसमारोह वित्तीय समय श्रृंखला टूलबॉक्स की आवश्यकता है। nowसमारोह इस प्रतिबंध के अधीन नहीं है, लेकिन यह एक सीरियल नंबर के रूप में वर्तमान दिनांक और समय को पुन: प्राप्त hourइस प्रकार वर्तमान घंटे की गणना करने का उपयोग करता है।
ऑक्टेव में इसे चलाना चाहते हैं?
ज़रूर! क्योंकि ऑक्टेव में यह टूलबॉक्स नहीं है, हमें बस hourफ़ंक्शन को संशोधित करना होगा ताकि यह कॉल करे datevecजो 6 तत्वों के वेक्टर को लौटाता है - वर्ष, महीने, दिन, घंटे, मिनट और सेकंड में से प्रत्येक के लिए। आपको आउटपुट का चौथा तत्व निकालना होगा:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
अतिरिक्त वर्ण 98 बाइट तक समाधान बनाते हैं, लेकिन आप इसे ऑक्टेव में चला पाएंगे। फ़ंक्शन हैंडल में एक अस्थायी चर के बिना इन-प्लेस इंडेक्सिंग पर ध्यान दें।
कोई वित्तीय समय श्रृंखला टूलबॉक्स नहीं?
यदि आप वित्तीय समय श्रृंखला टूलबॉक्स के बिना MATLAB में इसे चलाना चाहते हैं , क्योंकि आप अस्थायी एक के बिना तुरंत चर में अनुक्रमित नहीं कर सकते हैं, यह लिखने के लिए थोड़ा और बाइट्स ले जाएगा:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
यह पहली बार वर्तमान समय और तारीख को प्राप्त करता है और इसे चर में संग्रहीत करता है और hसाथ ही इसे स्वचालित चर में संग्रहीत करता है ans। यदि वर्तमान घंटे अगले घंटे के बराबर नहीं है, तो हम लूपिंग और जांच करते रहते हैं। प्रत्येक पुनरावृत्ति पर, हम वर्तमान समय और तिथि के साथ स्वचालित चर को अद्यतन करते रहते हैं। जैसे ही अगले घंटे वर्तमान समय और तिथि के साथ मेल खाता है, हम स्ट्रिंग का अंतिम भाग प्रदर्शित करते हैं और छोड़ देते हैं। यह बाइट काउंट को 114 तक पहुंचाता है।
यह भी ध्यान रखें कि आप इसे ऑनलाइन नहीं आज़मा सकते। ऑक्टेव दुभाषियों को ऑनलाइन जब कोड निष्पादित होता है पर एक समय सीमा होगी, और क्योंकि यह एक whileलूप है जो अगले घंटे होने की प्रतीक्षा कर रहा है, आपको कोड चलाने के लिए प्रतीक्षा करते समय एक टाइमआउट मिलेगा। सबसे अच्छी चीज जो आप कर सकते हैं वह है इसे अपनी मशीन पर चलाएं और जांचें कि यह काम करता है।