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]]