Aww, यार, यह एक्सपायरी डेट अक्षरों के साथ महीने नहीं लिखता है! मैं यह नहीं बता सकता कि यह 10 मार्च या 3 अक्टूबर को समाप्त हो रहा है ... रुको, नहीं, कोई बात नहीं, वर्ष 2012 कहता है। (गली-कूचों में पनीर की आधी-आधी ईंट का इस्तेमाल प्रो जैसे कर सकते हैं)
तो चलिए एक पल के लिए मान लेते हैं कि आप बहुत व्यस्त रहने की कोशिश कर रहे हैं जब मारिनारा का यह जार समाप्त होने वाला है। आप बस क्लिफ नोट्स संस्करण चाहते हैं: यह संभावना है कि यह पिछले कारण है? कुछ कोड लिखते हैं!
आप जानते हैं कि निर्माता पूर्णांकों के एक तीन गुना के क्रम में तारीख को प्रिंट करते हैं:
YEAR MONTH DAY
MONTH DAY YEAR
DAY MONTH YEAR
और आप जानते हैं कि कुछ तिथियों की व्याख्या केवल एक या दो तरीकों से की जा सकती है, तीनों में नहीं: 55 में 55-11-5
एक वर्ष होना है, जिसका अर्थ है कि ट्विंकीज़ का यह विशेष बॉक्स 5 नवंबर, 1955 को समाप्त हो गया है। वर्ष कभी-कभी चार अंकों में दिया जाता है और दो नहीं, जो कुछ विकल्पों को खारिज कर सकते हैं। जब यह दो अंक है, हालांकि, 50..99 का मतलब 1950..1999 और 0..49 का मतलब 2000..2049 है।
आपका काम एक प्रोग्राम या फ़ंक्शन लिखना है जो पूर्णांकों की एक सरणी लेता है जो ऊपर दिए गए व्याख्याओं में से कम से कम एक मान्य तिथि है, और एक प्रतिशत संभावना को आउटपुट करता है यह अभी भी अच्छा है। प्रतिशत मौका बस उस तारीख की वैध व्याख्याओं का प्रतिशत है जो आज की तारीख से या बाद में है।
पूर्णांक की सरणी आपकी भाषा की [Int]
लंबाई तीन होगी यदि यह एक फ़ंक्शन का तर्क है, और इसे डैश के रूप में दिया गया है-, स्लैश- या स्थान-अलग (आपको लेने के लिए) पूर्णांक यदि किसी इनपुट पर STDIN के रूप में उपयोग किया जाता है पूरा कार्यक्रम। *
"आज की तारीख" आज की वास्तविक तारीख हो सकती है, जैसा कि एक तिथि समारोह, या एसटीडीआईएन में कार्य करने के लिए एक अतिरिक्त तर्क या अतिरिक्त पैरामाटर में दी गई तारीख। यह यूनिक्स युगों के सेकंड में हो सकता है, एक और साल-महीने का दिन ऊपर तीन तरीकों में से एक में प्रवेश किया, या एक और अधिक सुविधाजनक फैशन।
चलो कुछ उदाहरण हैं! समाप्ति तिथि इनपुट डैश-अलग शैली में होगी, और नीचे दिए गए उदाहरणों के लिए मान लें कि आज की तारीख 5 जुलाई, 2006 है।
14-12-14
- इस (DMY और YMD) के लिए दोनों मान्य व्याख्याएं 14 दिसंबर 2014 के बराबर हैं। आउटपुट 100 है क्योंकि यह उत्पाद निश्चित रूप से अच्छा है।8-2-2006
- अंतिम संख्या एक वर्ष है, निश्चित रूप से, क्योंकि इसके चार अंक हैं। यह या तो 8 फरवरी (समाप्त हो गया) या 2 अगस्त (अभी भी अच्छा) हो सकता है। आउटपुट 50 है ।6-7-5
- यह कुछ भी हो सकता है! "5 जुलाई, 2006" की व्याख्या अभी भी अच्छी है (केवल एक दिन के लिए), लेकिन शेष दो 2005 में दोनों हैं और जितनी जल्दी हो सके फेंक दिया जाना चाहिए। आउटपुट 33 है ।6-5-7
- यहाँ, तीन व्याख्याओं में से दो सुरक्षित हैं। आप अपने दशमलव को ऊपर या नीचे गोल कर सकते हैं, इसलिए 66 या 67 दोनों ठीक हैं।12-31-99
- ठीक है, यह एक शताब्दी के मोड़ से असंदिग्ध रूप से है (50 से 99 तक वर्ष 19XX हैं, और 31 संभवतः एक महीना नहीं हो सकता है)। एक बड़ा वसा 0 , और आपको वास्तव में अपने फ्रिज को अधिक बार साफ करना चाहिए।
आप सुरक्षित रूप से मान सकते हैं कि कोई भी इनपुट जो उपरोक्त मानकों को पूरा नहीं करता है, ऊपर दिए गए आउटपुट नियमों के लिए निजी नहीं है।
कोई वेब अनुरोध या मानक कमियां नहीं। दिनांक हैंडलिंग पुस्तकालयों की अनुमति है। यह कोड गोल्फ है: सबसे कम कार्यक्रम की जीत हो सकती है।
* यदि आप ब्रेनफक या कुछ इसी तरह के डेटाटाइप-हैंडीकैप्ड भाषा का उपयोग कर रहे हैं, तो आप मान सकते हैं कि इनपुट में पहले तीन अक्षरों के एएससीआईआई मान तारीख के लिए पूर्णांक हैं। यह चार अंकों के वर्ष के तर्क को बाहर करता है, निश्चित रूप से, लेकिन मुझे लगता है कि हम आपको इसके लिए थोड़ा सा ब्रेनफक में इसका हल देखकर बहुत चकित होंगे।