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

पायथन में रन लेंथ स्ट्रिंग डिकोडिंग इटरेटर क्लास को लागू करने का कार्यक्रम

मान लीजिए कि हम एक पुनरावर्तक वर्ग को परिभाषित करना चाहते हैं जो एक रन-लेंथ एन्कोडेड लोअरकेस स्ट्रिंग के साथ निर्माण करता है, जैसे कि s, इस इटरेटर के लिए दो कार्य हैं - वे हैं -

  • अगला() यह इटरेटर में अगला तत्व ढूंढता है
  • hasnext() यह जांचता है कि अगला तत्व मौजूद है या नहीं

इसलिए, यदि इनपुट s ="2b1a" जैसा है, तो s के साथ एक ऑब्जेक्ट बनाएं, फिर अगला (), hasnext (), अगला (), अगला (), hasnext () पर कॉल करें, तो आउटपुट "b" होगा , सच, "बी", "ए", गलत।

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

  • एक कंस्ट्रक्टर को परिभाषित करें। इसमें लगेगा
  • आउटपुट:=एक नई सूची
  • संख्या:=रिक्त स्ट्रिंग
  • प्रत्येक i के लिए, करते हैं
    • यदि मैं वर्णमाला है, तो
      • आउटपुट के अंत में num डालें
      • आउटपुट के अंत में i डालें
      • संख्या:=रिक्त स्ट्रिंग
    • अन्यथा,
      • संख्या:=संख्या + मैं
  • अगले फ़ंक्शन को परिभाषित करें()।
  • यदि hasnext() सत्य है, तो
    • गिनती:=आउटपुट[0]
    • पत्र:=आउटपुट[1]
    • गिनती :=गिनती - 1
    • अगर गिनती> 0, तो
      • आउटपुट[0] :=आउटपुट[0] - 1
    • अन्यथा,
      • आउटपुट:=आउटपुट [इंडेक्स 2 से अंत तक]
    • वापसी पत्र
  • एक फंक्शन hasnext() परिभाषित करें।
  • यदि आउटपुट का आकार 0 नहीं है, तो
    • सही लौटें
  • झूठी वापसी

उदाहरण

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

class RunLengthIterator:
   def __init__(self, s):
     self.output = []
     num = ""
     for i in s:
         if i.isalpha():
            self.output.append(int(num))
            self.output.append(i)
            num = ""
         else:
            num += i

   def next(self):
      if self.hasnext():
         count = self.output[0]
         letter = self.output[1]
         count -= 1
         if count > 0:
            self.output[0] -= 1
         else:
            self.output = self.output[2:]
         return letter

   def hasnext(self):
      if len(self.output) != 0:
         return True
      return False

s = "2b1a"
obj = RunLengthIterator(s)
print(obj.next())
print(obj.hasnext())
print(obj.next())
print(obj.next())
print(obj.hasnext())

इनपुट

"2b1a"
obj = RunLengthIterator(s)
obj.next()
obj.hasnext()
obj.next()
obj.next()
obj.hasnext()

आउटपुट

b
True
b
a
False

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

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

  1. एक स्ट्रिंग में समान लंबाई के शब्दों को प्रिंट करने के लिए पायथन प्रोग्राम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक स्ट्रिंग को देखते हुए हमें स्ट्रिंग के सभी शब्दों को सम लंबाई के साथ प्रदर्शित करने की आवश्यकता है। दृष्टिकोण स्प्लिट () फ़ंक्शन का उपयोग करके इनपुट स्ट्रिंग को विभाजित करें। के लिए . का

  1. पायथन में इटरेटर फ़ंक्शन

    स्पष्टीकरण इटरेटर अजगर में एक वस्तु है जो पुनरावृत्ति प्रोटोकॉल को लागू करता है। टुपल्स, सूचियों, सेटों को पायथन में इनबिल्ट इटरेटर कहा जाता है। पुनरावृत्ति प्रोटोकॉल में दो प्रकार की विधियाँ हैं। __iter__() : इस विधि को तब कहा जाता है जब हम एक इटरेटर को इनिशियलाइज़ करते हैं और इसे एक ऑब्जेक्ट वाप