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

หาสถานะถัดไปของเมทริกซ์เซลล์ (Game of Life) ใน Python

Conway's Game of Life: เมทริกซ์ไบนารี 1=มีชีวิต 0=ตาย กฎ:

  • เซลล์มีชีวิต + เพื่อนบ้านมีชีวิต 2-3 ตัว → มีชีวิตต่อ
  • เซลล์ตาย + เพื่อนบ้านมีชีวิต 3 ตัว → เกิดใหม่
  • อื่นๆ → ตาย

เพื่อนบ้าน = 8 ทิศทาง (แนวนอน แนวตั้ง ทแยง)

ตัวอย่าง

Input:

1100
0100
0101
1101
Output:
1100
0100
0100
1100

ตัวอย่างโค้ด

class Solution:
    def solve(self, matrix):
        n, m = len(matrix), len(matrix[0])
        res = [[0 for _ in range(m)] for _ in range(n)]
        
        for i in range(n):
            for j in range(m):
                s = 0
                for k in range(i-1, i+2):
                    for h in range(j-1, j+2):
                        if 0 <= k < n and 0 <= h < m:
                            s += matrix[k][h]
                
                if matrix[i][j] == 0:
                    res[i][j] = 1 if s == 3 else 0
                else:
                    res[i][j] = 1 if s in (3, 4) else 0
        return res

ob = Solution()
matrix = [[1,1,0,0], [0,1,0,0], [0,1,0,1], [1,1,0,1]]
print(ob.solve(matrix))
# [[1,1,0,0], [0,1,0,0], [0,1,0,0], [1,1,0,0]]

อินพุต

[[1,1,0,0], [0,1,0,0], [0,1,0,1], [1,1,0,1]]

เอาต์พุต

[[1,1,0,0], [0,1,0,0], [0,1,0,0], [1,1,0,0]]