| | | | | | | | | 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] | | | | | | | | | | 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 += 1COPY |
这个步骤是先计算生,还是先计算死?
然后当前点 生了(死了)以后,是不是实时更新的呢(会影响下一个点,下一个点将计算前面那个点的状态)?
有些不解!
我计算的结果和给出答案有误!
# 四边是计算的缓存数据,请忽略

▓▓▓▓▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓■■▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
第一次繁衍
▓▓▓■▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓■■■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓■■■▓▓▓▓▓
第一次死亡
▓▓▓■▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓▓▓■▓▓▓▓▓▓
▓▓■▓■▓▓▓▓▓
# 无计算缓存
▓■■■▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓■■▓▓▓▓
▓■■■▓▓▓▓
▓▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓
第一次繁衍
▓■■■▓▓▓▓
▓▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓■■■▓▓▓▓
▓■■■▓▓▓▓
▓■■■▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓■▓▓▓▓▓
第一次死亡
▓■▓■▓▓▓▓
▓▓■▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓■▓■▓▓▓▓
▓▓▓▓▓▓▓▓
▓■▓■▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓■▓▓▓▓▓ |