不久前,我发现了这个叫 Catagolue 的神奇的网站,收录的规则和图样比 LifeWiki 要全得多。
这里收录的图样都是用一个叫 apgsearch 的程序找出来的。apgsearch 的不同版本有不同的名字,最新的第4版叫 apgluxe。它的功能就是自己倒汤,煮汤,然后在汤的残骸中自动搜索有意义的图样,然后自动上传到 Catagolue 上。
不过,正是因为这最后一步,这个程序无法在中国大陆正常运行:Catagolue 用的是谷歌旗下某网站的域名,于是被墙了。而且有翻墙工具也没用,因为它用了个叫 HappyHTML 的东西,不支持代理!
无奈之下,我把它改了一下,去掉与上传有关的部分。我完全不懂 C++,只能胡乱修改,把看起来像是和联网有关的内容都删掉,好像能够正常编译,不能保证不会有错。
这是我修改后的离线版:https://github.com/AlephAlpha/apgluxe_offline
这个程序(无论是原版还是我修改后的离线版)是写给64位的 Unix 系统的,32位的操作系统没法使用。在64位的 Windows 上要用的话好像要先装个 Cygwin。反正我不用 Windows。
下载这个程序时可以用git clone
,也可以直接下载 ZIP 压缩包。在下载好之后,要编译程序,在终端里 cd
到这个目录里,然后运行:
./recompile.sh
即可。
要运行程序的话,在同一个目录里,运行:
./apgluxe -n 1000000
这里的1000000是每一轮倒的汤的数量,可以换成你喜欢的任何数字。每倒完一轮,会生成一个统计结果,保存在一个类似于 log.一串类似于乱码的东西.txt
的文件当中(图样用的是 apgcode 格式,我不知道怎样转成 rle 或者别的 Golly 能读的格式),然后自动开始下一轮。什么时候不想玩了,按 Ctrl+C 可以退出。也可以不加 -n 1000000
这个参数,这样默认每轮会煮20000000锅汤(我觉得这个数字有点太大了)。如果 CPU 是多核的,还可以加 -p 4
这样的参数来并行运算,这个4表示4个线程。
运行时如果找到线性增长的图样(一般是 Block-laying switch engine 或者 Glider-producing switch engine),或者罕见的周期大于2的振荡子,它会直接告诉你。刚才试了一轮,煮到将近第九十万锅汤的时候找到一个 xp30_w33z8kqrqk8zzzw33,在 Catagolue 上查了一下是个蜂王梭,运气不错。
网友评论