Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm trạng thái tiếp theo của ma trận ô sống/chét trong Python


Game of Life: Ma trận nhị phân (1=sống, 0=chết). Luật: Sống với 2-3 hàng xóm sống → sống; Chết với 3 hàng xóm sống → sống; Còn lại → chết. Hàng xóm: 8 ô xung quanh.

Ví dụ input 4x4 → output 4x4 theo luật trên.

Giải pháp: Duyệt từng ô, đếm hàng xóm sống trong cửa sổ 3x3, áp dụng luật, ghi vào ma trận kết quả mới.

Ví dụ triển khai

class Solution:
    def solve(self, matrix):
        n, m = len(matrix), len(matrix[0])
        res = [[0]*m for _ in range(n)]
        for i in range(n):
            for j in range(m):
                s = 0
                for di in (-1,0,1):
                    for dj in (-1,0,1):
                        ni, nj = i+di, j+dj
                        if 0 <= ni < n and 0 <= nj < m:
                            s += matrix[ni][nj]
                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]]

Đầu vào

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

Đầu ra

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