কম্পিউটার টিউটোরিয়াল

পাইথনে ডাবল, রিভার্স ও সোয়াপ প্যাটার্ন তৈরি করুন


मान लीजिए हमारे पास एक संख्या n है, हमें अनुक्रम से nवीं मान ढूंढनी है। अनुक्रम इस तरह है:

  • xxy
  • xxyxxy
  • yxxyxx
  • xyyxyy
  • xyyxyyxyyxyy
  • ...

अगली मान उत्पन्न करने के लिए, हमें इन नियमों का पालन करना होगा, "xxy" को पहला पद मानकर:

  • जब हम पैटर्न की शुरुआत में हों, तो इसे दोगुना करें (स्ट्रिंग को स्वयं के साथ जोड़ें)।
  • जब अंतिम ऑपरेशन डबलिंग था, तो इसे उलट दें।
  • जब अंतिम ऑपरेशन रिवर्सिंग था, तो सभी x को y से और y को x से बदल दें।
  • इन चरणों को दोहराएं।

यदि इनपुट n = 5 जैसा है, तो आउटपुट "yyxyyxyyxyyx" होगा।

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • i := 0
  • ret := "xxy"
  • जब तक i < n, करें:
    • यदि i % 3 == 0, तो ret := ret + ret
    • अन्यथा यदि i % 3 == 1, तो ret := ret[::-1]
    • अन्यथा,
      • new_string := खाली स्ट्रिंग
      • ret में प्रत्येक वर्ण c के लिए, करें:
        • यदि c == "x", तो new_string += "y"
        • अन्यथा new_string += "x"
      • ret := new_string
    • i := i + 1
  • ret लौटाएं

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

उदाहरण

class Solution:
    def solve(self, s):
        i = 0
        ret = "xxy"
        while i < s:
            if i % 3 == 0:
                ret += ret
            elif i % 3 == 1:
                ret = ret[::-1]
            else:
                new_string = ""
                for c in ret:
                    if c == "x":
                        new_string += "y"
                    else:
                        new_string += "x"
                ret = new_string
            i += 1
        return ret

ob = Solution()
print(ob.solve(5))

इनपुट

5

आउटपुट

yyxyyxyyxyyx

  1. পাইথনে প্যাটার্ন প্রিন্ট করার পদ্ধতি

  2. পাইথনে ভ্যালিড অ্যানাগ্রাম যাচাই

  3. পাইথনে ইন্টিজার রিভার্স (Reverse Integer)

  4. পাইথনে ফাংশন প্যারামিটারে ** (ডাবল স্টার) এবং * (স্টার) কী করে?