JavaScript 模拟一维康威宇宙(2020年8月21日)

制作背景
大一结束了,疫情还没有结束,暑假在家里呆着,学习了html,css,还有一点点的JavaScript,以前写过一个python版本的一维康威宇宙的程序,现在想到既然js这么方便,可视化渲染很轻松就能做到,为什么不用js来写一个呢?已经有了python基础的我感觉直接用js来写应该也不会太难,先用python的思路做,js对应不会的就直接从网上搜就可以,于是我就做了一个。(未参考任何其他相关康威宇宙的程序代码,纯自己写的)
相关介绍
康威宇宙其实是二维的,我简化成了一维。对于原版康威宇宙,可以看 https://zhuanlan.zhihu.com/p/45026142
这个一维的康威宇宙就是:在一个一维的宇宙中,有一堆细胞排列在这个宇宙所在的直线上,有点细胞是活细胞,有的细胞是死细胞。每过一个时刻,整个宇宙就会变化一次。怎么变化呢?规则是这样的:
就是遍历判断每一个细胞,每个细胞会根据周围四个细胞的状态来改变自己接下来的状态,(周围四个细胞是指:自己左边的左边,左边,右边,右边的右边,一共四个邻居细胞),这样下来,宇宙中的每一个死细胞可能会变成活细胞,每一个活细胞也可能会变成死细胞。具体判断规则是这样的:
对于活细胞:如果周围四个细胞的活细胞数量在 [1, 2] 内,那么该活细胞在下一时刻继续存活,否则因为拥挤或者孤独而死亡。
对于死细胞:如果周围四个细胞的活细胞数量在 [2, 3] 内,那么该死细胞在下一时刻复活,否则继续保持死亡状态。
遍历的顺序不影响结果
效果截图

源代码
额外发现
修改上面程序中的这四个数据,会改变宇宙的规则。下面的发现是 2020年2月25日 做python的对应的程序的时候发现的。
var live_min = 1
var live_max = 2
var birth_min = 2
var birth_max = 3
当前宇宙的规则是 1223 把每一时刻的状态从上到下打印在屏幕上,就会呈现大片大片的谢尔宾斯基三角形的样子,但是如果把四个变量依次修改成以下四个数,就会有不同的呈现效果。(初始状态是随机的,死细胞和活细胞出现的概率均为50%)


1223:谢尔宾斯基三角形
1111:稀碎的谢尔宾斯基三角 + 大块竖向条
1212:内部穿插竖向条的谢尔宾斯基三角 + 大块竖向条
1314:压扁的谢尔宾斯基三角
1313:像履带一样整齐的纹理
2323:车印子
0000:被竖线切断的横线
0101:横向线
0202:横向线穿插像网
1413:几条黑竖线
1414:全白
2424:全白
1234:几条白竖线
1211:含有细微动态的二维码
1222:含有锯齿状动态的二维码
2311:二维码 + 花式轮胎印
2322:二维码 + 自行车印
1233:若干白竖线
1244:含有细微动态的很多白竖线
2222:白色各种自行车印
3434:顶端流下来一点白油,剩下全黑
3333:顶端流下来一点点白油,剩下全黑
4444:顶端流下来一点点点白油,剩下全黑