मान लीजिए हमारे पास एक संख्या 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