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

पायथन में चलने से कितने ब्लॉकों को k बार कवर किया जाता है, यह गिनने का कार्यक्रम

मान लीजिए कि हमारे पास दो सूचियाँ हैं जिन्हें वॉक और टारगेट कहा जाता है। शुरुआत में हम एक-आयामी रेखा में स्थिति 0 पर हैं। अब |चलता है[i]| कदमों की संख्या का प्रतिनिधित्व करता है। और जब चलना [i] सकारात्मक होता है तो इंगित करता है कि चला गया दाएं, और बाएं के लिए नकारात्मक। जब हम चलते हैं, तो हम एक ब्लॉक को आगे बढ़ाते हैं, जो कि अगली या पिछली पूर्णांक स्थिति है। हमें उन ब्लॉकों की संख्या ज्ञात करनी है, जिन पर कम से कम लक्ष्य संख्या कितनी बार चली है।

इसलिए, यदि इनपुट वॉक =[3, -7, 2] लक्ष्य =2 की तरह है, तो आउटपुट 5 होगा, निम्नलिखित आकृति से, हम देख सकते हैं [0, 1], [1, 2], [2 , 3], [-4, -3], [-3, -2] k =2 बार ढके हुए हैं।

पायथन में चलने से कितने ब्लॉकों को k बार कवर किया जाता है, यह गिनने का कार्यक्रम

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

  • स्थिति:=0
  • कूदता है:=एक हैश मैप, जहां कुंजी मौजूद न होने पर डिफ़ॉल्ट मान 0 होता है
  • प्रत्येक जिले के पैदल चलने के लिए, करें
    • कूदता है [स्थिति] :=कूदता है [स्थिति] + 1 अगर जिला> 0 अन्यथा -1
    • कूदता है [स्थिति + जिला] :=कूदता है [स्थिति + जिला] - 1 अगर जिला> 0 अन्यथा -1
    • स्थिति:=स्थिति + जिला
  • अंतिम स्थिति :=0
  • स्तर:=0
  • कुल :=0
  • प्रत्येक स्थिति स्थिति के लिए, और छलांग के क्रमबद्ध कुंजी-मूल्य जोड़े में मूल्य वैल, करते हैं
    • यदि स्तर>=लक्ष्य, तो
      • कुल :=कुल + स्थिति - अंतिम स्थिति
    • स्तर :=स्तर + वैल
    • अंतिम स्थिति :=स्थिति
  • कुल वापसी

उदाहरण

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

from collections import defaultdict
def solve(walks, target):
   pos = 0
   jumps = defaultdict(int)
   for dist in walks:
      jumps[pos] += 1 if dist > 0 else -1
      jumps[pos + dist] -= 1 if dist > 0 else -1
      pos += dist
   lastpos = level = total = 0
   for pos, val in sorted(jumps.items()):
      if level >= target:
         total += pos - lastpos
      level += val
      lastpos = pos
   return total

walks = [3, -7, 2]
target = 2
print(solve(walks, target))

इनपुट

[3, -7, 2], 2

आउटपुट

5

  1. कितने क्यूब्स काटे गए यह पता लगाने के लिए पायथन प्रोग्राम

    मान लीजिए, a, b, और c आयामों के कई घन हैं, और उनका उपयोग करके आयाम axbxc का एक नया बॉक्स बनाया जाता है। ए, बी, और सी जोड़ीदार सह-अभाज्य हैं; gcd(a, b) =gcd(b,c) =gcd(c, d) =1. हमें बॉक्स को एक ही स्लाइस से दो टुकड़ों में काटना है जैसा कि चित्र में दिखाया गया है। हमें यह पता लगाना है कि क्या डिब्बे क

  1. पायथन प्रोग्राम कैसे चलाएं?

    कोड लिखने के बाद, हमें आउटपुट को निष्पादित करने और प्राप्त करने के लिए कोड को चलाने की आवश्यकता होती है। प्रोग्राम चलाने पर, हम जांच सकते हैं कि कोड सही लिखा है या नहीं और वांछित आउटपुट देता है। पायथन प्रोग्राम चलाना काफी आसान काम है। आईडीएलई पर चलाएं IDLE पर पायथन प्रोग्राम चलाने के लिए, दिए गए च

  1. पायथन में हम पेड़ को दो पेड़ों में कितने तरीकों से विभाजित कर सकते हैं, यह गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास 0, 1 और 2 मान वाले बाइनरी ट्री हैं। रूट में कम से कम एक 0 नोड और एक 1 नोड है। अब मान लीजिए कि एक ऑपरेशन है जहां हम पेड़ में एक किनारे को हटाते हैं और पेड़ दो अलग-अलग पेड़ बन जाते हैं। हमें एक किनारे को हटाने के कई तरीके खोजने होंगे जैसे कि दो पेड़ों में से किसी में भी 0 नोड और