Python3 趣味系列题18----生命游戏

生命游戏(Game of Life )是英国数学家约翰·何顿·康威(John Horton Conway)在1970年发明的,由3条规则构成的二维细胞自动机。该游戏号称“零玩家且永不结束”。令人感到惋惜的是,2020年4月11日他因感染新冠肺炎(COVID-19)去世,数学“老顽童”就此陨落。

细胞自动机有一个通用的形式化的模型:

  1. 每个细胞的状态可以在一个有限的状态集合S中取值;
  2. 确立细胞邻居集合的半径R。也就是以这个细胞所在格子为中心,在距离它R远的所有格子构成了这个细胞的邻居集合;
  3. 细胞状态演化的规则F。该规则可看成是一个与该细胞当前状态以及邻居状态相关的一个函数;

这就是细胞自动机的一般数学模型。

生命游戏就是在一个二维的格子世界里,每个格子里有一个细胞,每个细胞的初始状态可以自由设定。生命游戏中S={存活、死亡},R=1,演化规则F如下

与该细胞相邻的8个细胞中,如果

1. 活细胞的数量为3,若该细胞为死细胞,则变为活细胞;若为活细胞,保持存活;
2. 活细胞的数量为2,该细胞的生死状态保持不变;
3. 活细胞的数量大于等于4个,如果该细胞为活细胞,则会因为拥挤而死亡; 活细胞的数量小于等于1个,如果该细胞为活细胞,则会因为孤独而死亡。 如果该细胞为死细胞,上面2种情况都保持死亡;

该游戏之所以到现在依然很受人追捧,是因为它如此简单的规则却可以出现惊人的复杂行为,并且还可以形成很多有趣的稳定结构,有些甚至呈现周期性。下面给出该游戏呈现出的三种稳定态结构的示例(代码关注订阅号获取):

  • 静止态
    Python3 趣味系列题18----生命游戏_第1张图片
  • 震荡态
    Python3 趣味系列题18----生命游戏_第2张图片
  • 移动震荡态
    Python3 趣味系列题18----生命游戏_第3张图片

点击获得更多趣味谜题以及基于Python3的解决方案代码。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。
image

image

你可能感兴趣的:(Python3趣味题系列)