Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन का उपयोग करके बाल्टी में गेंदों के बीच न्यूनतम बल को अधिकतम करने का कार्यक्रम

मान लीजिए हमें कई बाल्टियाँ और x संख्या में गेंदें दी गई हैं। यदि गेंदों को बाल्टी में डाल दिया जाता है, तो उनके भीतर एक विशेष बल कार्य करता है और हमें दो गेंदों के बीच न्यूनतम बल को अधिकतम करने का एक तरीका खोजना होगा। स्थिति p और q की बाल्टी में दो गेंदों के बीच का बल |p - q| है। हमें दिया गया इनपुट वह सरणी है जिसमें बकेट पोजीशन और गेंदों की संख्या x होती है। हमें उनके बीच न्यूनतम बल का पता लगाना होगा।

इसलिए, यदि इनपुट pos =[2, 4, 6, 8, 10, 12], x =3 जैसा है, तो आउटपुट 4 होगा।

पायथन का उपयोग करके बाल्टी में गेंदों के बीच न्यूनतम बल को अधिकतम करने का कार्यक्रम

गेंदों को 12 बाल्टी की एक सरणी में दी गई स्थिति में रखा जा सकता है। तीन गेंदों को 4, 8 और 12 की स्थिति में रखा जा सकता है और उनके बीच की शक्ति 4 होगी। इस मान को और नहीं बढ़ाया जा सकता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक फ़ंक्शन को परिभाषित करें ball_count() । इसमें घ लगेगा

    • और :=1

    • वर्तमान:=स्थिति [0]

    • 1 से n की सीमा में i के लिए, करें

      • अगर pos[i] - curr>=d, तो

        • उत्तर:=उत्तर + 1

        • वर्तमान:=स्थिति [i]

    • वापसी उत्तर

  • n :=स्थिति का आकार

  • सूची स्थिति को क्रमबद्ध करें

  • बायां :=0

  • दाएं:=स्थिति[-1] - स्थिति[0]

  • जबकि बाएं <दाएं, करें

    • मध्य :=दाएँ - तल का मान ((दाएँ - बाएँ) / 2)

    • अगर बॉल_काउंट (मध्य)>=x, तो

      • बाएं :=मध्य

    • अन्यथा,

      • दाएं:=मध्य - 1

  • बाएं लौटें

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def solve(pos, x):
   n = len(pos)
   pos.sort()

   def ball_count(d):
      ans, curr = 1, pos[0]
      for i in range(1, n):
         if pos[i] - curr >= d:
            ans += 1
            curr = pos[i]
      return ans

   left, right = 0, pos[-1] - pos[0]
   while left < right:
      mid = right - (right - left) // 2
      if ball_count(mid) >= x:
         left = mid
      else:
        right = mid - 1
   return left

print(solve([2, 4, 6, 8, 10, 12], 3))

इनपुट

[2, 4, 6, 8, 10, 12], 3

आउटपुट

4

  1. पायथन का उपयोग करके बाइनरी ट्री की जड़ को बदलने का कार्यक्रम

    मान लीजिए, हमें एक बाइनरी ट्री और एक नोड दिया गया है जो बाइनरी ट्री के पत्ते पर स्थित है। हमें लीफ नोड को बाइनरी ट्री का रूट नोड बनाना है। हम इसे निम्नलिखित तरीके से कर सकते हैं - यदि नोड में एक बायाँ बच्चा है, तो वह दायाँ बच्चा बन जाता है। एक नोड का माता-पिता उसका बायां बच्चा बन जाता है। इस प

  1. पायथन का उपयोग करके बाइनरी ग्रिड की व्यवस्था करने के लिए न्यूनतम स्वैप खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक n x n बाइनरी मैट्रिक्स है। हम इस पर एक ऑपरेशन कर सकते हैं जैसे, एक चरण में हम दो आसन्न पंक्तियों का चयन करते हैं और उन्हें स्वैप करते हैं। हमें आवश्यक न्यूनतम स्वैप की संख्या गिननी होगी, ताकि मैट्रिक्स के प्रमुख विकर्ण के ऊपर सभी नोड्स 0 हों। यदि ऐसा कोई समाधान नहीं है, तो

  1. OpenCV का उपयोग करके छवि के किनारों का पता लगाने के लिए पायथन प्रोग्राम

    इस समस्या में, हम देखेंगे कि पायथन किसी छवि या वीडियो फ़ाइल के किनारों का पता कैसे लगा सकता है। इसे प्राप्त करने के लिए, हमें OpenCV लाइब्रेरी की आवश्यकता है। OpenCV लाइब्रेरी मुख्य रूप से कंप्यूटर विज़न के लिए डिज़ाइन की गई है। यह खुला स्रोत है। मूल रूप से इसे इंटेल द्वारा डिजाइन किया गया था। यह ओप