Conway's Game of Life: เมทริกซ์ไบนารี 1=มีชีวิต 0=ตาย กฎ:
- เซลล์มีชีวิต + เพื่อนบ้านมีชีวิต 2-3 ตัว → มีชีวิตต่อ
- เซลล์ตาย + เพื่อนบ้านมีชีวิต 3 ตัว → เกิดใหม่
- อื่นๆ → ตาย
เพื่อนบ้าน = 8 ทิศทาง (แนวนอน แนวตั้ง ทแยง)
ตัวอย่าง
Input:
| 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 |
ตัวอย่างโค้ด
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]]