अलग-अलग आकार की दो बाल्टियाँ दी गई हैं, और यह भी बताया गया है कि पहले कौन-सी बाल्टी भरनी है। बाल्टियों के बीच तरल को समझदारी से इधर-उधर डालते हुए एक ठीक-ठीक संख्या में लीटर नापने के लिए कितनी क्रियाएँ आवश्यक हैं, यह पता कीजिए।
आपके हल को इन नियमों का पालन करना होगा:
आपका प्रोग्राम इनपुट के रूप में ये चीज़ें लेगा:
आपके प्रोग्राम को यह पता लगाना होगा:
ध्यान दें: जब भी किसी एक या दोनों बाल्टियों में कोई बदलाव किया जाता है, वह एक (1) क्रिया माना जाता है।
उदाहरण: पहली बाल्टी में 7 लीटर तक समा सकते हैं, और दूसरी बाल्टी में 11 लीटर तक। मान लीजिए कि किसी दिए गए चरण में पहली बाल्टी में 7 लीटर हैं और दूसरी बाल्टी में 8 लीटर (7,8)। अगर आप पहली बाल्टी खाली कर दें और दूसरी बाल्टी में कोई बदलाव न करें, जिससे आपके पास क्रमशः 0 लीटर और 8 लीटर रह जाते हैं (0,8), तो यह एक क्रिया मानी जाएगी। इसके बजाय, अगर आप पहली बाल्टी से दूसरी बाल्टी में तब तक डालें जब तक दूसरी बाल्टी भर न जाए, जिससे पहली बाल्टी में 4 लीटर और दूसरी बाल्टी में 11 लीटर हो जाएँ (4,11), तो वह भी केवल एक ही क्रिया मानी जाएगी।
एक और उदाहरण: पहली बाल्टी में 3 लीटर समा सकते हैं, और दूसरी बाल्टी में 5 लीटर तक। आपसे कहा गया है कि शुरुआत पहली बाल्टी से करनी है। इसलिए आपकी पहली क्रिया पहली बाल्टी भरना है। दूसरी क्रिया के लिए आप पहली बाल्टी खाली करना चुनते हैं। तीसरी क्रिया में आप दूसरी बाल्टी नहीं भर सकते, क्योंकि इससे तीसरे नियम का उल्लंघन होता है। किसी भी क्रिया के बाद आप ऐसी स्थिति में नहीं पहुँच सकते जहाँ शुरुआती बाल्टी खाली हो और दूसरी बाल्टी भरी हुई हो।
लिंडसे लेविन ने Fullstack Academy में <3 के साथ लिखा।
कभी-कभी एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश देना चाहिए, जिससे पता चले कि एरर कहाँ से आ रही है। इससे आपका कोड पढ़ने में आसान हो जाता है और डीबग करने में काफी मदद मिलती है। जिन जगहों पर आपको पता हो कि एरर एक खास टाइप की ही होगी, वहाँ आप पहले से मौजूद एरर टाइप में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी एक अर्थपूर्ण संदेश ज़रूर देना चाहिए।
इस खास अभ्यास में ValueError को "फेंकने" के लिए आपको raise स्टेटमेंट का इस्तेमाल करना होता है। टेस्ट तभी पास होंगे जब आप exception को raise करें और उसके साथ एक संदेश भी शामिल करें।
किसी संदेश के साथ ValueError उठाने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
raise ValueError("A meaningful error message here.")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।