बेथ रेगिस्तान से बचने में मदद करें


11

जबकि अन्य पानी ले जाने वाली पहेली के समान , इस चुनौती के अनूठे पहलू इसे पूरी तरह से अलग बनाते हैं।

बेथ

बेथ एक रेगिस्तान के बीच में एक नखलिस्तान में स्थित है। झील में बहुत पानी है, लेकिन दुर्भाग्य से केवल एक्स बाल्टी हैं, जिनमें से प्रत्येक में वाई लीटर पानी की क्षमता है।

बेथ अपने हाथों में 2 बाल्टी ले जा सकती हैं, लेकिन जीवित रहने के लिए, प्रत्येक किलोमीटर की यात्रा के बाद उसे ठीक 1 लीटर पीना चाहिए। वह कुछ बाल्टी को आधे रास्ते में छोड़ सकती है (पानी वाष्पित नहीं होता)।

चुनौती

सूत्र का पता लगाएं और सबसे छोटा समाधान लिखें जो एक्स और वाई के सकारात्मक पूर्णांक मानों के लिए काम करेगा और अधिकतम दूरी की गणना करेगा कि बेथ ओएसिस से यात्रा कर सकता है। बाल्टी के बीच पानी ले जाने की अनुमति है।

उदाहरण

एक्स = 3, वाई = 5

  1. बेथ ओएसिस से 1 बाल्टी 3KM दूर छोड़ देता है, वापस लौटता है (ओएसिस से अंतिम पेय)
  2. बेथ 3KM पॉइंट पर एक और फुल बकेट लेकर आता है, जिसमें अब 12L है।
  3. बेथ 6KM बिंदु तक आगे बढ़ सकता है और इसमें 4L पानी के साथ बाल्टी छोड़ सकता है।
  4. 3KM बिंदु पर वापस आएं। वह अब ओएसिस में वापस आने के लिए ठीक 2 एल है।
  5. बाल्टी भरें और 6KM बिंदु तक यात्रा करें। उसके पास अब 8L पानी है।
  6. 15KM बिंदु के लिए सभी तरह से जारी रखें।

उत्तर है: १५

इनपुट आउटपुट

आप X / Y को सीधे कोड में परिभाषित कर सकते हैं या इनपुट से पढ़ सकते हैं। परिणाम को चर या आउटपुट में रखा जा सकता है, जो भी सबसे छोटा हो।


2
क्या यह कोड गोल्फ होना चाहिए? इसे एक कोड चुनौती के रूप में टैग किया गया है।
डेनिस

हां, यह कोड-गोल्फ है, मैंने टैग जोड़ा है। एक सही सूत्र के साथ आओ और इसे कोड के माध्यम से व्यक्त करें।
रोमनिंश

1
मुझे लगता है कि यह चरण 1 पर विस्तार करने लायक है। मेरे लिए यह पहली बार में स्पष्ट नहीं था कि बेथ केवल 5 लीटर पानी के साथ 6 किमी की यात्रा कैसे कर सकता है: वह प्रत्येक किमी की यात्रा के बाद ही पीता है, और आखिरी में वह ओएसिस पर है।
xnor

1
क्या आप एक टेस्ट-केस दे सकते हैं, जिस तरह से एक प्रोग्राम इसे आउटपुट करेगा?
पावेल

दोनों बिंदुओं को संबोधित करने के लिए प्रश्न संपादित किया।
रोमिंश

जवाबों:


2

जावास्क्रिप्ट (ईएस 6), 25 बाइट्स

x=>y=>((x<3?x:3)+x)*y/2+1
x=>y=>(x<3?x+x:x+3)*y/2+1
x=>y=>(x<3?x:(x+3)/2)*y+1
x=>y=>(x<3?x:x/2+1.5)*y+1

ये सभी समान मूल्य की गणना करते हैं; मैं एक छोटे सूत्रीकरण के साथ नहीं आ सकता।

जब xसे भी कम है 3, तो आप ज्यादा पानी आप और जहाँ तक हो सके जो केवल है चल सकता है के रूप में, के रूप में ले x*y+1

जब xकम से कम 3 हो, तो आपको कैश का निर्माण शुरू करना होगा।

ओएसिस से, आप कुछ ही दूरी पर एक पूरी बाल्टी छोड़ सकते हैं y/2और ओएसिस पर लौट सकते हैं। ऐसा करने के लिए आपको 2 बाल्टी चाहिए, लेकिन यह उपयोगी नहीं है यदि आपके पास केवल 2 बाल्टी हैं क्योंकि आप ओएसिस में लौटने पर 2 बाल्टी भरने में सक्षम होना चाहते हैं।

ओएसिस से, कुछ ही दूरी पर एक बाल्टी के साथ y/2, आप कुछ ही दूरी पर एक पूरी बाल्टी छोड़ सकते हैं yऔर ओएसिस पर लौट सकते हैं। ऐसा करने के लिए आपको 3 बाल्टी चाहिए।

ओएसिस से, दोनों पर पूरी बाल्टी के साथ yऔर y/2, आप कुछ ही दूरी पर एक पूरी बाल्टी छोड़ सकते हैं 3y/2और ओएसिस में वापस आ सकते हैं। ऐसा करने के लिए आपको 4 बाल्टी चाहिए। फिर आपको कुछ ही दूरी पर एक पूरी बाल्टी छोड़नी y/2होगी और ओएसिस में वापस आना होगा।

आखिरकार आप एक पूरी बाल्टी के साथ समाप्त कर सकते हैं (x-1)y/2। (आप पूरी बाल्टी नहीं छोड़ सकते xy/2क्योंकि आप ओएसिस पर वापस नहीं जा पाएंगे, क्योंकि गोल यात्रा है xy, बाल्टी की कुल क्षमता।)

अपनी बची हुई बाल्टियों का उपयोग करके, आप (x-3)y/2... yया पर पूरी बाल्टियाँ छोड़ सकते हैं y/2। इस बिंदु पर आप बस जहाँ तक आप जा सकते हैं, अपनी पूरी बाल्टी उठाते हुए चलते हैं। जब आप पहुंचते (x-1)y/2हैं तब भी आपके पास दो पूर्ण बाल्टी बची होती हैं, जिससे आप पहुंच सकते हैं (x+3)y/2

1नियमों में क्वर्क से अतिरिक्त आता है जो आपको बिना पानी के अपने अंतिम मील तक चलने की अनुमति देता है। हालांकि उदाहरण से पता चलता है कि आप ऊपर वर्णित की तुलना में बाल्टी को थोड़ा और दूर छोड़ सकते हैं, यह वास्तव में आपको आगे चलने में मदद नहीं करता है, क्योंकि आपको या तो कम पानी छोड़ना है या बाल्टी से पानी पीना है जैसे कि आप इसे ले जा सकते हैं पर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.