我们这里之研究最简单的元胞自动机——01数组,而且约定,元胞局限在10*10的空间内,而且在演化的过程中,边界上的元胞始终保持不变。本文的目标,是希望找到一种方法,可以筛选出具有周期性的10*10的01元胞数组。下图是一个11周期的情形。
工具/原料
1
电脑
2
python3.6
方法/步骤
1
在《把01数组转化为一个数字》里面,我们了解到,一个数字,可以转化为01数组,位数不足的地方可以用0顶替。基于此,区间(0,2**100)里面的每一个正整数,都可以写成一个10*10的01数组,而且这恰好覆盖了所有的10*10的01数组。这个范围太大了,我们就需要截取其中一个子区间,比如:(2**90,2**90+10**5)下面是我用来寻找3周期的代码。
2
在这个子区间里面,3周期的情形实在是太多了。图中,每一个数字,都是10进制数字,其二进制形式对应的10*10的01数组,就是3周期的。
4
周期为5的情形,相对少了一些,这一点看滚动条就可以。
5
其中一个的动态图如下。
6
这个子区间,只有3个7周期的情形。
7
第一个的动态图如下。
上一篇:怎样让自己变得更加自信?
下一篇:Word如何让一个窗口变两个