Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้างลำดับ Pattern แบบ Double-Reverse-Swap ใน Python

ภาพรวม

โจทย์สร้างลำดับสตริงตามกฎซ้ำซ้อน 3 ขั้นตอน เริ่มจาก "xxy":

  1. Double: คูณสตริงด้วย 2 (ต่อท้ายตัวเอง)
  2. Reverse: กลับลำดับสตริง
  3. Swap: สลับ x ↔ y ทุกตัว

ทำซ้ำ 3 ขั้นตอนนี้ไปเรื่อยๆ

ลำดับตัวอย่าง

nค่าขั้นตอน
0xxyเริ่มต้น
1xxyxxyDouble
2yxxyxxReverse
3xyyxyySwap
4xyyxyyxyyxyyDouble
5yyxyyxyyxyyxReverse

โค้ด Python

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

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

การทำงานสำหรับ n=5

  1. i=0 (Double): "xxy" → "xxyxxy"
  2. i=1 (Reverse): "xxyxxy" → "yxxyxx"
  3. i=2 (Swap): "yxxyxx" → "xyyxyy"
  4. i=3 (Double): "xyyxyy" → "xyyxyyxyyxyy"
  5. i=4 (Reverse): "xyyxyyxyyxyy" → "yyxyyxyyxyyx"
  6. i=5 (Swap): ไม่ทำ เพราะ i < 5 จบที่ i=4

ผลลัพธ์

yyxyyxyyxyyx