- # coding=utf-8
-
-
- # 更新窗口
- def upWindow():
- global SHEET
- for i in range(1,WIDTH-1):
- for j in range(1,WIDTH-1):
- print(SHEET[i][j], end='', flush=True)
- print()
-
- # 计算
- def death(status, res):
- global SHEET
- global DATA
- global WIDTH
- global A
- global B
- for i in range(1,WIDTH-1):
- for j in range(1,WIDTH-1):
- # 检查
- if SHEET[i][j] == status:
- if check(i,j) in res:
- DATA.append((i,j))
-
- # 取出数据
- if status == B: status = A
- elif status == A: status = B
- for n in DATA:
- SHEET[n[0]][n[1]] = status
- DATA.clear()
- upSide()
- upWindow()
-
-
- # 检查周围点活着的数量
- def check(x, y):
- global SHEET
- global A
- count = 0
- if SHEET[x-1][y] == A:
- count += 1
- if SHEET[x-1][y-1] == A:
- count += 1
- if SHEET[x-1][y+1] == A:
- count += 1
- if SHEET[x][y+1] == A:
- count += 1
- if SHEET[x][y-1] == A:
- count += 1
- if SHEET[x+1][y-1] == A:
- count += 1
- if SHEET[x+1][y] == A:
- count += 1
- if SHEET[x+1][y+1] == A:
- count += 1
- return count
-
- # 更新表格边框
- def upSide():
- global SHEET
- global WIDTH
- # 交换‘四边’数据
- for n in range(1,WIDTH-1):
- SHEET[0][n] = SHEET[WIDTH-2][n]
- SHEET[WIDTH-1][n] = SHEET[1][n]
- SHEET[n][0] = SHEET[n][WIDTH-2]
- SHEET[n][WIDTH-1] = SHEET[n][1]
- # 角落
- SHEET[0][0] = SHEET[WIDTH-2][WIDTH-2]
- SHEET[WIDTH-1][WIDTH-1] = SHEET[1][1]
- SHEET[0][WIDTH-1] = SHEET[WIDTH-2][1]
- SHEET[WIDTH-1][0] = SHEET[1][WIDTH-2]
-
- # main
-
- # 生
- A = '■'
- # 死
- B = '▓'
-
- # 表格宽度
- WIDTH = 10
- # 表格列表
- SHEET = []
- # 数据暂存队列
- DATA = []
- # 初始化数据
- for n in range(WIDTH):
- if n in [1,5]:
- SHEET.append([B,B,A,A,A,B,B,B,B,B])
- if n in [0,2,3,7,8]:
- SHEET.append([B,B,B,B,B,B,B,B,B,B])
- if n == 4:
- SHEET.append([B,B,B,A,A,B,B,B,B,B])
- if n == 6:
- SHEET.append([B,B,B,A,B,B,B,B,B,B])
- if n == 9:
- SHEET.append([B,B,A,A,A,B,B,B,B,B])
-
- upWindow()
- count = 1
- while True:
- print(f'第{count}次繁衍')
- death(B, [3])
- print(f'第{count}次死亡')
- death(A, [0,1,4,5,6,7,8])
- if count >= 6:break
- count += 1
复制代码 这个步骤是先计算生,还是先计算死?
然后当前点 生了(死了)以后,是不是实时更新的呢(会影响下一个点,下一个点将计算前面那个点的状态)?
有些不解!
我计算的结果和给出答案有误!
# 四边是计算的缓存数据,请忽略
▓▓▓▓▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓■■▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
第一次繁衍
▓▓▓■▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
第一次死亡
▓▓▓■▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
# 无计算缓存
▓■■■▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓■■▓▓▓▓
▓■■■▓▓▓▓
▓▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓
第一次繁衍
▓■■■▓▓▓▓
▓▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓■■■▓▓▓▓
▓■■■▓▓▓▓
▓■■■▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓■▓▓▓▓▓
第一次死亡
▓■▓■▓▓▓▓
▓▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓■▓■▓▓▓▓
▓▓▓▓▓▓▓▓
▓■▓■▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓■▓▓▓▓▓ |