← 实验室
ASTERXOR / 实验室

四条小规则,造出忙碌的世界

康威生命游戏把邻居计数变成静物、振荡和移动图案,没有哪条规则直接告诉它往哪走。

五个金色格子组成深色背景上的滑翔机。
本地元胞自动机实验实际使用的起始滑翔机。
实验室ASTERXOR / LEON LEUNG

五个亮格子能前进,却没有任何一个格子真的移动。

实验从空网格上的三个小图案开始:方块、闪烁器、滑翔机。每格遵循同一规则,只看周围八个邻居。一种保持静止,一种交替变化,一种以平移后的位置恢复原形。差别来自初始排列,而不是给不同格子不同指令。

规则只看局部,图案却能远行。
COUNT TO EIGHT

邻居决定下一步

每格只有活或死两种状态,邻域包括周围八格和对角线。活格少于两个活邻居则死亡,有两个或三个则保留,多于三个则死亡。死格恰有三个活邻居则出生,其他死格仍死。

出生、生存只是二元状态的比喻,模型没有生物、意图或资源。规则也写成B3/S23,即三邻居出生、二或三邻居生存。名字便于记忆,实际运算只是计数后决定状态。

ONE SHARED TICK

先读旧世界,再写新世界

所有格子的下一状态必须从同一旧代计算。若改完一格,就让邻格读取新值,动力学会改变。因此脚本先从当前活格集合统计邻居,再另外建立下一代集合,整个网格同步前进。

实现用无界稀疏平面的整数坐标,只存活格,并检查可能出生的相邻位置。没有边缘环绕,也没有固定矩形在图案碰边时杀死它。图片裁出的是观察窗口,不是世界边界。

STILL AND REPEATING

两种小图案可以亲手推理

填满的2×2方块一步后不变:每个活格有三个活邻居,附近死格没有哪个恰好有三个。脚本比较完整集合。更新确定性意味着相同状态总产生相同下一状态,所以它是静物,不是移动得很慢。

横排三格则不同:中心保留,两端死亡,上下各生一格,变成竖排;下一步又转横。测试确认周期为2,并确认中间状态不同。只看活格数量相同,不足以证明振荡。

三面板展示2×2方块、三格横排和五格滑翔机。
FIG 01方块、闪烁器、滑翔机均为精确指定的初始集合,不是从照片推测。
A TRAVELLING SHAPE

滑翔机是被替换,不是被搬运

四次更新后,五格滑翔机恢复原形,但x、y各移动一格,按图中坐标即右下方。展示的每代都有五个活格,却不是同样五个个体在格子之间移动,而是固定位置不断亮灭。

脚本把最后集合与起始集合平移(1, 1)后的副本精确比较,比凭外观觉得相似更有力。这也说明,某个层次上的对象可以持续存在,同时另一层次的组成状态不断被替换。

滑翔机经过四次变形,在右下方一格处恢复原形。
FIG 02从第0到第4步的五个精确状态,最后等于起始图案平移(1, 1)。
SMALL RULES

演示也有边界

三个图案只确认同一规则下三种行为,不描述全部起点。有些排列会消失,有些相互作用,有些产生漫长复杂历史。改变出生规则、邻域或更新顺序,就变成另一种自动机,即使画面仍像一堆方格。

吸引力在于,规则一句话就能写完,后续却可能很难预测。这种差距不需要隐藏随机性,本实验完全没有随机。一旦初始集合与规则固定,未来就确定了。惊讶属于尚未逐步算出结果的观察者。

留一个想法带走

格子只懂保留、消失或出现,移动的图案却能从中浮现。