在Python中找到下一个单元矩阵状态的下一个状态的程序?
假设我们有一个二维二进制矩阵,其中1表示存活的单元格,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 |
为了解决这个问题,我们将遵循以下步骤:
- n:=矩阵的行数,m:=矩阵的列数
-
res:=n x m大小的矩阵,并填充为0
-
对于i从0到n的范围,执行以下操作
- 对于j从0到m的范围,执行以下操作
- s:=0
-
如果matrix [i,j]与0相同,则
-
对于k从i-1到i+1的范围,执行操作
- 或h在j-1到j+1的范围内,执行以下操作
-
如果0 <= k < n并且0 <= h < m,则
- s:= s + matrix [k,h]
- res [i,j]:=[0,1,在s与3相同的情况下为true]
-
否则,
-
对于k从i-1到i+1的范围,执行以下操作
- 对于h从j-1到j+1的范围,执行以下操作
-
如果0 <= k < n并且0 <= h≤m,则
- s:= s + matrix [k,h]
- 如果s是3或4,则
-
res [i,j]: =1
-
返回res
- 对于j从0到m的范围,执行以下操作
让我们看下面的实现以获得更好的理解: