最初写这段代码是为了2019华为软件精英挑战赛准备,熟悉元胞自动机用。最终发现并没有留给我写判题器的时间。但这段代码还是保留下来了,存储gif的部分借鉴了别的博客,不过已经找不到原文了。这段代码写的不是很好,在我的电脑上运行很慢(还是自己优化水平太差),也算自己独立实现的,放在博客上自省。
生命游戏实现
生命游戏的规则可参考:生命游戏简介及算法分析(整理)
代码中可对burn、live、init、detector参数进行修改,采用不同规则进行生命游戏。
代码
# -*- coding: utf-8 -*-
import numpy as np
from numpy.linalg import cholesky
import matplotlib.pyplot as plt
from scipy import signal
from scipy import misc
from matplotlib import animation
import time
import copy
def update_cell(init, surrounding, burn, live):
for i in range(0, init.shape[0]):
for j in range(0, init.shape[1]):
if(init[i][j] and (surrounding[i][j] < live or surrounding[i][j] > burn)):
init[i][j] = not init[i][j]
elif(not init[i][j] and surrounding[i][j] == burn)