ट्रैक
/
Roc
Roc
/
अभ्यास
/
दो बाल्टियाँ
दो बाल्टियाँ

दो बाल्टियाँ

मध्यम

निर्देश

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

आपके हल को इन नियमों का पालन करना होगा:

  • एक बार में आप केवल एक ही क्रिया कर सकते हैं।
  • केवल 3 क्रियाएँ ही संभव हैं:
    1. एक बाल्टी को दूसरी बाल्टी में तब तक डालना जब तक कि: a) पहली बाल्टी खाली न हो जाए b) दूसरी बाल्टी भर न जाए
    2. एक बाल्टी को खाली करना और दूसरी बाल्टी में कोई बदलाव न करना।
    3. एक बाल्टी को भरना और दूसरी बाल्टी में कोई बदलाव न करना।
  • किसी क्रिया के बाद आप ऐसी स्थिति में नहीं पहुँच सकते जहाँ शुरुआती बाल्टी खाली हो और दूसरी बाल्टी भरी हुई हो।

आपका प्रोग्राम इनपुट के रूप में ये चीज़ें लेगा:

  • पहली बाल्टी का आकार
  • दूसरी बाल्टी का आकार
  • जितने लीटर नापने हैं वह संख्या
  • पहले कौन-सी बाल्टी भरनी है, पहली या दूसरी

आपके प्रोग्राम को यह पता लगाना होगा:

  • जितने लीटर नापने हैं, उन्हें नापने के लिए कुल कितनी क्रियाएँ करनी होंगी, जिनमें शुरुआती बाल्टी को पहली बार भरना भी शामिल है
  • अंत में उतने लीटर किस बाल्टी में होंगे, पहली बाल्टी या दूसरी
  • दूसरी बाल्टी में कितने लीटर बचे रहेंगे

ध्यान दें: जब भी किसी एक या दोनों बाल्टियों में कोई बदलाव किया जाता है, वह एक (1) क्रिया माना जाता है।

उदाहरण: पहली बाल्टी में 7 लीटर तक समा सकते हैं, और दूसरी बाल्टी में 11 लीटर तक। मान लीजिए कि किसी दिए गए चरण में पहली बाल्टी में 7 लीटर हैं और दूसरी बाल्टी में 8 लीटर (7,8)। अगर आप पहली बाल्टी खाली कर दें और दूसरी बाल्टी में कोई बदलाव न करें, जिससे आपके पास क्रमशः 0 लीटर और 8 लीटर रह जाते हैं (0,8), तो यह एक क्रिया मानी जाएगी। इसके बजाय, अगर आप पहली बाल्टी से दूसरी बाल्टी में तब तक डालें जब तक दूसरी बाल्टी भर न जाए, जिससे पहली बाल्टी में 4 लीटर और दूसरी बाल्टी में 11 लीटर हो जाएँ (4,11), तो वह भी केवल एक ही क्रिया मानी जाएगी।

एक और उदाहरण: पहली बाल्टी में 3 लीटर समा सकते हैं, और दूसरी बाल्टी में 5 लीटर तक। आपसे कहा गया है कि शुरुआत पहली बाल्टी से करनी है। इसलिए आपकी पहली क्रिया पहली बाल्टी भरना है। दूसरी क्रिया के लिए आप पहली बाल्टी खाली करना चुनते हैं। तीसरी क्रिया में आप दूसरी बाल्टी नहीं भर सकते, क्योंकि इससे तीसरे नियम का उल्लंघन होता है। किसी भी क्रिया के बाद आप ऐसी स्थिति में नहीं पहुँच सकते जहाँ शुरुआती बाल्टी खाली हो और दूसरी बाल्टी भरी हुई हो।

लिंडसे लेविन ने Fullstack Academy में <3 के साथ लिखा।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Roc Exercism

दो बाल्टियाँ शुरू करने के लिए तैयार हैं?

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