gpt4 book ai didi

Python 和生命游戏规则

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:22 26 4
gpt4 key购买 nike

好吧,所以我终于打印出来了,实际上做了一些事情,但是规则不适用,对吗?我试过弄乱规则,但似乎无法让它们正确打印出来,这是我的规则的片段:

nCount = 0
for i in range(x-1,x+2):
for j in range(y-1,y+2):
if not(i == x and j == y):
nCount += int(mat[i][j])
if(nCount < 2 or nCount > 3):
return 0
elif(nCount == 2 or nCount == 3):
return 1
else:
return mat[i][j]

我已经用中间有 3 个 1 的常规 5x5 测试作为振荡器,但它没有振荡,而是像方框一样用零填充 5x5 边缘然后停止

这是我的其余代码:

import time
import os

def buildMatrix(fname):
fp = open(fname, "r")
row = fp.readlines()
matrix = []
for i in range(0, len(row), 1):
token = row[i].split(" ")
token[-1] = token[-1].replace('\n', ' ')
matrix.append(token)
fp.close()
return matrix

def getRows(mat):
return len(mat)

def getCols(mat):
return len(mat[0])

def printGen(mat): #this is what i use for printing
os.system('clear')
for i in range(0, len(mat), 1):
for j in range(0, len(mat[0]), 1):
if(mat[i][j] == 1):
print("#", sep=" ", end=" ")
else:
print(" ", sep=" ", end=" ")
print()

def nextGen(cur, nxt): #use this to update to the next matrix
for i in range(0, len(cur)-1, 1):
for j in range(0, len(cur[0])-1, 1):
nxt[i][j] = neighbors(i, j, cur)
return nxt

def neighbors(x, y, mat):
nCount = 0
for i in range(x-1,x+2):
for j in range(y-1,y+2):
if not(i == x and j == y):
nCount += int(mat[i][j])
if(nCount < 2 or nCount > 3):
return 0
elif(nCount == 2 or nCount ==3):
return 1
else:
return mat[i][j]

这不是我的全部代码,因为我仍在将所有这些导入另一个存储库并从该存储库运行它,但我已经完成了另一部分

最佳答案

elif(nCount == 2,3):

这不符合您的要求。这将构建一个 2 元素元组,其第一个元素是 nCount == 2 的值,第二个元素是 3,然后将此元组转换为 bool 值以决定走哪条路。如果你想检查 nCount 是否等于 2 或 3,你可以使用

elif nCount in (2, 3):

但它是多余的,因为 nCount 必须是控制流到达 elif 的那些之一。当然,这对于执行生活规则是不正确的;你想要的是

elif nCount == 3:

如果被另外 2 个活细胞包围,一个细胞将保持其当前的活/死状态。无论其目前的生命状态如何,它周围必须正好有 3 个活细胞才能在下一代存活。

关于Python 和生命游戏规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com