ধরুন আমাদের একটি সংখ্যা n আছে, আমরা ক্রম থেকে nম মান খুঁজে বের করতে পেরেছি। ক্রমটি নিচের মত -
- xxy
- xxyxxy
- yxxyxx
- xyyxyy
- xyyxyyxyyxyy
- ...
পরবর্তী মান তৈরি করতে, আমাদের এই নিয়মগুলি অনুসরণ করতে হবে, প্রথম পদ হিসাবে xxy দিয়ে শুরু −
-
যখন আমরা প্যাটার্নের শুরুতে থাকি, তখন এটি দ্বিগুণ করুন (স্ট্রিংটিকে নিজের সাথে সংযুক্ত করুন)।
-
যখন শেষ অপারেশনটি দ্বিগুণ হচ্ছিল, তখন এটিকে বিপরীত করুন৷
-
যখন শেষ অপারেশনটি উল্টে যাচ্ছিল, সমস্ত xs কে ys এর সাথে এবং এর বিপরীতে পরিবর্তন করুন।
-
এই পদক্ষেপগুলি পুনরাবৃত্তি করুন৷
৷
সুতরাং, যদি ইনপুট n =5 এর মত হয়, তাহলে আউটপুট হবে "yyxyyxyyxyyx"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- i :=0
- ret :="xxy"
- যখন i
- যদি i mod 3 0 এর মত হয়, তাহলে
- ret :=ret + ret
- অন্যথায় যখন i mod 3 1 এর মত হয়, তখন
- ret :=সূচক 0 থেকে শেষ-1 পর্যন্ত ret-এর সাবঅ্যারে
- অন্যথায়,
- new_stringy :=ফাঁকা স্ট্রিং ret-এ প্রতিটি c-এর জন্য
- করুন
- যদি c "x" এর মত হয়, তাহলে
- new_stringy :=new_stringy concatenate "y"
- অন্যথায়,
- new_stringy :=new_stringy concatenate "x"
- যদি c "x" এর মত হয়, তাহলে
- ret :=new_stringy
- i :=i + 1
- যদি i mod 3 0 এর মত হয়, তাহলে
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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_stringy = "" for c in ret: if c == "x": new_stringy += "y" else: new_stringy += "x" ret = new_stringy i += 1 return ret ob = Solution() print(ob.solve(5))
ইনপুট
5
আউটপুট
yyxyyxyyxyyx