Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改create_initial_grid函数,使单元格的第一个位置由坐标列表而不是随机函数决定_Python_Conways Game Of Life - Fatal编程技术网

Python 如何更改create_initial_grid函数,使单元格的第一个位置由坐标列表而不是随机函数决定

Python 如何更改create_initial_grid函数,使单元格的第一个位置由坐标列表而不是随机函数决定,python,conways-game-of-life,Python,Conways Game Of Life,坐标文件的内容katt.txt: 3 4 3 7 4 4 4 5 4 6 4 7 5 3 5 8 6 3 6 5 6 6 6 8 7 3 7 8 8 4 8 5 8 6 8 7 代码: 导入时间 随机输入 将open('katt.txt')作为f: 数字=[int(elem)表示f.read().split()中的元素] 坐标=zip(数字[::2],数字[1::2]) def创建初始网格(行、列、坐标): 返回[[1如果(x,y)在坐标中,否则0表示y在范围(cols)] 对于范围内的x(c

坐标文件的内容
katt.txt

3 4
3 7
4 4
4 5
4 6
4 7
5 3
5 8
6 3
6 5
6 6
6 8
7 3
7 8
8 4
8 5
8 6
8 7
代码:

导入时间
随机输入
将open('katt.txt')作为f:
数字=[int(elem)表示f.read().split()中的元素]
坐标=zip(数字[::2],数字[1::2])
def创建初始网格(行、列、坐标):
返回[[1如果(x,y)在坐标中,否则0表示y在范围(cols)]
对于范围内的x(cols)]
def打印网格(行、列、网格、生成):
#打印以控制生命网格的游戏
#单个输出字符串用于帮助减少打印多行时引起的闪烁
输出_str=“”
#一起编译输出字符串,然后将其打印到控制台
output_str+=“Generation{0}-要提前退出程序,请按\n\r”。format(Generation)
对于范围内的行(行):
对于范围内的列(列):
如果网格[行][列]==0:
输出_str+=“-”
其他:
输出\u str+=“*”
输出\u str+=“\n\r”
打印(输出_str,end=“”)
def创建下一个网格(行、列、网格、下一个网格):
#分析当前一代的生命网格游戏,并确定
#细胞在生命网格游戏的下一代中生存和死亡。
对于范围内的行(行):
对于范围内的列(列):
#获取网格[row][col]上与单元格相邻的活动单元格数
live_neights=获取_live_neights(行、列、行、列、网格)
#如果周围活细胞的数量小于2或大于3,则我们将网格[row][col]处的细胞设为死细胞
如果活动邻居<2或活动邻居>3:
下一个网格[行][列]=0
#如果周围活细胞的数量为3,且网格[row][col]处的细胞先前已死亡,则进行
#将细胞转化为活细胞
elif live_neights==3,grid[row][col]==0:
下一个网格[行][列]=1
#如果周围的活细胞数为3,且网格[row][col]处的细胞处于活动状态,则保持其活动状态
其他:
下一个网格[行][col]=网格[行][col]
def get_live_邻居(行、列、行、列、网格):
#计算栅格[row][cell]中中心单元格周围的活动单元格数。
寿命总和=0
对于范围(-1,2)内的i:
对于范围(-1,2)内的j:
#确保对位于网格[行][列]的中心单元格进行计数
如果不是(i==0和j==0):
#使用模运算符(%)将栅格环绕
寿命总和=网格[(行+i)%rows)][(列+j)%cols]
回归生活
def网格更改(行、列、网格、下一个网格):
#检查当前一代生命网格游戏是否与下一代生命网格游戏相同。
对于范围内的行(行):
对于范围内的列(列):
#如果网格[行][col]处的单元格不等于下一个网格[行][col]
如果不是网格[行][列]==下一个网格[行][列]:
返回真值
返回错误
def get_integer_值(提示、低、高):
#要求用户输入整数,并在给定的下限和上限之间输入。
尽管如此:
尝试:
值=int(输入(提示))
除值错误外:
打印(“输入不是有效的整数值。”)
持续
如果值<低或值>高:
打印(“输入不在边界内(值={1})。”。格式(低、高))
其他:
打破
返回值
def run_game():
#要求用户输入设置生命游戏以运行给定的世代数。
#获取生活游戏网格的行数和列数
行=获取整数值(“输入行数(10-30):”,10,30)
cols=get_integer_value(“输入cols的数量(10-30):”,10,30)
#获得生命游戏应该运行的世代数
代数=获取整数值(“输入代数(1-100000):”,1,100000)
#创建生命网格的初始游戏
当前生成=创建初始网格(行、列、坐标)
下一代=创建初始网格(行、列、坐标)
#运行生命序列的游戏
gen=1
对于范围内的发电机(1代+1代):
如果未更改网格(行、列、当前网格生成、下一网格生成):
打破
打印网格(行、列、当前生成、生成)
创建下一代网格(行、列、当前代、下一代)
时间。睡眠(1/5.0)
当前一代,下一代=下一代,当前一代
打印网格(行、列、当前生成、生成)
输入(“按以退出”)
#开始生活的游戏
运行游戏()

如果
坐标
(x,y)
元组的一个可数,指示网格应位于
1
0
否则),只需编写如下内容:

def create_initial_grid(rows, cols, coordinates):
    return [[1 if (x, y) in coordinates else 0 for y in range(cols)]
            for x in range(rows)]

create_initial_grid(2, 3, [(0, 0), (1, 2), (2, 1)])
# [[1, 0, 0], [0, 0, 1], [0, 1, 0]]
假设您的文本文件由活细胞的交替
x
y
坐标组成,您可以通过以下方式读取坐标:

with open('coordinates.txt') as f:
    numbers = [int(elem) for elem in f.read().split()]

coordinates = list(zip(numbers[::2], numbers[1::2]))
甚至更短:

with open('coordinates.txt') as f:
    coordinates = [tuple(map(int, line.split()))
                   for line in f.readlines()]

由于
坐标
(x,y)
元组的一个可数,指示网格应位于
1
0
否则),只需编写如下内容:

def create_initial_grid(rows, cols, coordinates):
    return [[1 if (x, y) in coordinates else 0 for y in range(cols)]
            for x in range(rows)]

create_initial_grid(2, 3, [(0, 0), (1, 2), (2, 1)])
# [[1, 0, 0], [0, 0, 1], [0, 1, 0]]
假设您的文本文件由活细胞的交替
x
y
坐标组成,您可以通过以下方式读取坐标:

with open('coordinates.txt') as f:
    numbers = [int(elem) for elem in f.read().split()]

coordinates = list(zip(numbers[::2], numbers[1::2]))
甚至更短:

with open('coordinates.txt') as f:
    coordinates = [tuple(map(int, line.split()))
                   for line in f.readlines()]

谢谢你的回答,但我想你误解了我的问题。我有一个带有x和y坐标的txt文件,我想要一个将这些坐标转换为活细胞第一次迭代的函数,从txt文件转换是个问题。非常感谢您的帮助!我试图实现上面代码中所示的更改,但它给我的结果是一个compl