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

चलने वाले जानवरों की अंतिम स्थिति प्राप्त करने का कार्यक्रम जब वे पायथन में रुकते हैं

मान लीजिए हमारे पास एक स्ट्रिंग है जो कुछ जानवरों की प्रारंभिक स्थितियों का प्रतिनिधित्व कर रही है। प्रत्येक जानवर तीन में से एक मान ले सकता है:L, इंगित करता है कि जानवर बाईं ओर चला गया है। आर, इंगित करता है कि जानवर दाईं ओर चला गया है। @, इंगित करता है कि जानवर अभी भी खड़ा है। एक दिशा में आगे बढ़ने वाले जानवर दूसरे जानवरों को तब तक उठाएंगे जब तक कि जानवर को विपरीत दिशा से बल न मिले। फिर, यह स्थिर रहेगा। जब जानवर हिलना बंद कर देता है तो हमें प्रत्येक जानवर का उन्मुखीकरण खोजना होता है।

इसलिए, यदि इनपुट s ="@@L@R@@@@@L" जैसा है, तो आउटपुट "LLL@RRRLLL"

होगा।

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

  • स्तर:=s के समान आकार की एक सूची और -1 से भरें

  • q :=एक डबल एंडेड कतार

  • idx के लिए 0 से s के आकार की सीमा में है, करें

    • अगर s[idx] "R" के समान है या s[idx] "L" के समान है, तो

      • q के अंत में (idx, 0, s[idx]) डालें

  • l :=s के पात्रों की एक नई सूची

  • जबकि q खाली नहीं है, करें

    • (idx, new_level, dir) :=q का बायां तत्व, और इसे q से हटा दें

    • यदि स्तर [idx] -1 के समान है, तो

      • स्तर [idx] :=new_level

      • l[idx] :=dir

      • यदि dir "R" और idx + 1 <आकार l के समान है, तो

        • q के अंत में (idx + 1, new_level + 1, dir) डालें

      • अन्यथा जब dir "L" और idx - 1>=0 के समान हो, तब

        • q के अंत में (idx - 1, new_level + 1, dir) डालें

    • अन्यथा जब level[idx] new_level के समान हो, तब

      • अगर l[idx] dir के समान नहीं है, तो

        • l[idx] :="@"

  • l के तत्वों को जोड़कर एक स्ट्रिंग लौटाएं

उदाहरण

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

from collections import deque
class Solution:
   def solve(self, s):
      levels = [-1 for i in s]
      q = deque()
      for idx in range(len(s)):
         if s[idx] == "R" or s[idx] == "L":
            q.append((idx, 0, s[idx]))
      l = list(s)
      while q:
         idx, new_level, dir = q.popleft()
         if levels[idx] == -1:
            levels[idx] = new_level
            l[idx] = dir
            if dir == "R" and idx + 1 < len(l):
               q.append((idx + 1, new_level + 1, dir))
            elif dir == "L" and idx - 1 >= 0:
               q.append((idx - 1, new_level + 1, dir))
         elif levels[idx] == new_level:
            if l[idx] != dir:
               l[idx] = "@"
      return "".join(l)
ob = Solution()
s = "@@L@R@@@@L"
print(ob.solve(s))

इनपुट

"@@L@R@@@@L"

आउटपुट

LLL@RRRLLL

  1. - यह जांचने के लिए कार्यक्रम कि हम पायथन में कूद कर या नहीं, स्थिति n पर पहुँच सकते हैं

    मान लीजिए कि 1 से n तक एक संख्या रेखा है। सबसे पहले हम स्थिति 0 पर हैं, 1 जाने के लिए एक कदम कूदें, फिर स्थिति 3 पर पहुंचने के लिए दो स्थान की छलांग लगाएं, फिर 6 पर पहुंचने के लिए तीन स्थान की छलांग लगाएं और इसी तरह। हमें यह जांचना होगा कि इसे बनाए रखते हुए, हम स्थिति n पर पहुंच सकते हैं या नहीं। इ

  1. पायथन में बहुभुज को उसकी प्रारंभिक स्थिति में रीसेट करने का कार्यक्रम पायथन में बहुभुज को उसकी प्रारंभिक स्थिति में रीसेट करने का कार्यक्रम

    मान लीजिए, एक बहुभुज है जिसमें n शीर्ष, n फ़्लिपिंग अक्ष और n घूर्णन बिंदु हैं। फ़्लिपिंग कुल्हाड़ियों और घूर्णन बिंदुओं के लिए निम्नलिखित सत्य हैं यदि n विषम है, तो प्रत्येक फ़्लिपिंग अक्ष केवल एक शीर्ष और विपरीत दिशा के मध्य से होकर गुजरता है। यदि n सम है, तो कुल्हाड़ियों का आधा भाग विपरीत शीर्षो

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग