昨天简单介绍了一篇文章及生命游戏在R中的实现:
生命游戏中有不少有趣的图形,今天又玩了一下,顺便做一介绍。代码用昨天的即可实现。
注意,代码中判断下个状态是否有细胞存在这句改了一下,之前理解的有点问题,另外规则也不完全对。判断规则参考https://conwaylife.com/wiki/Main_Page
稳定:如果细胞的邻居为2个或3个,则下一次状态为稳定存活;
复活:如果某位置原无细胞存活,而该位置的邻居为3个,则该位置将复活一个细胞。
life.next[i,j] = ifelse( ((fun.sum == 2|fun.sum == 3)& life[[k-1]][i,j]==1) | (fun.sum == 3 & life[[k-1]][i,j]==0), 1, 0)
生命游戏基本图形介绍及在R中的实现:
只需要改变初始输入的矩阵即可。
1. 固定模式。即图形不会发生变化。如四个细胞围成的正方形。
# 恒定
size = 4
d1 = c(0,0,0,0,
0,1,1,0,
0,1,1,0,
0,0,0,0)
start = matrix(data=d1,ncol=size,nrow=size)
2. 震荡模式,图形会在几个样式之间来回震荡,如一条线的样式。
# 震荡
size = 5
d2 = c(0,0,0,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0)
start = matrix(data=d2,ncol=size,nrow=size)
3. 滑翔机模式。细胞会像滑翔机一样不断移动且变化样式。
# 滑翔机
size = 6
d3 = c(0,0,0,1,0,0,
0,1,0,1,0,0,
0,0,1,1,0,0,
0,0,0,0,0,0,
0,0,0,0,0,0,
0,0,0,0,0,0)
start = matrix(data=d3,ncol=size,nrow=size)
4. 脉冲星。细胞好像脉冲星一样的炸裂。
size = 15
d4 = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,
0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,
0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,
0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,
0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,
0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,
0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
start = matrix(data=d4,ncol=size,nrow=size)
更多好玩的图形,详见:
https://conwaylife.com/wiki/Main_Page
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有