康威的生命游戏(Rust + WebAssembly)

康威的生命游戏(Rust + WebAssembly)

💡 原文中文,约1700字,阅读约需4分钟。
📝

内容提要

文章介绍零玩家元胞自动机康威生命游戏:细胞有生死两态,依据周围存活邻居数决定下一代状态。作者用Rust实现,加入随机复活规则,并尝试3D版本及用Rust WebAssembly在网页展示,可观察稳定、震荡和移动细胞。

🔎

延伸解读

规则变体:随机复活如何改变演化

作者在经典五条规则之外增加了第六条:死亡细胞有机会随机复活。代码中通过时间戳与棋盘尺寸、邻居数等计算取模判断,复活并非完全随机,而是与位置和邻居数相关。这会让原本趋于稳定或消亡的图案出现新扰动,可能打破固定周期,使地图更难进入静止状态。读者若想复现,需注意该规则依赖时间变量,结果不可完全重复。

从2D到3D:扩展时需重新定义邻居

文章提到作者尝试将2D版本改成3D版。生命游戏的核心是邻居计数,2D中每个细胞有8个邻居,3D中邻居数量会显著增加,规则阈值也需相应调整,否则演化行为会与2D差异很大。文章未给出3D的具体规则参数,因此读者应将其视为探索方向,而非可直接套用的完整方案。

WebAssembly展示:观察稳定与震荡图案

作者用Rust实现并编译为WebAssembly在网页展示,便于直接观察细胞演化。文中描述地图上会出现方块、木桶、叉子、船等稳定状态,以及经历多次循环后回到祖先状态的震荡细胞,还有边移动边震荡的细胞。这些现象是规则自然涌现的结果,可作为验证实现是否正确、理解元胞自动机行为的直观参考。

❓

Q&A

康威生命游戏的基本规则是什么?

每个细胞有存活和死亡两种状态,与周围八格细胞互动。规则:存活细胞周围存活数少于2则死亡(模拟生命稀少);等于2或3则保持存活;超过3则死亡(模拟生命过多);死亡细胞周围恰有3个存活细胞则复活(模拟繁殖)。

作者在实现生命游戏时增加了什么额外规则?

作者增加了一条随机复活规则:如果当前细胞为死亡状态,则有机会被复活(模拟随机繁殖)。具体实现中,当时间戳对某个与棋盘大小和邻居数相关的值取模为0时,死亡细胞变为存活。

生命游戏模拟中会出现哪些类型的细胞模式?

地图上会出现稳定状态的细胞(如方块、木桶、叉子、船等形状),震荡状态的细胞(经历几次生命循环后回到祖先状态),以及一边移动一边震荡的细胞。

作者使用了哪些技术来展示生命游戏?

作者用Rust语言实现了生命游戏,并尝试了Rust WebAssembly,在网页上展示生命游戏,可以观察细胞的变化。

除了增加随机复活规则,还可以如何修改生命游戏?

可以增删更多规则,例如让当前细胞的死活不仅与父代有关,还与祖父代甚至更早世代有关;也可以改变2D世界版图,将其改成边缘连续的环状世界,如球面或柱面。

康威生命游戏是谁提出的?

康威生命游戏是英国数学家John Horton Conway在1970年提出的一种元胞自动机。

🏷️

标签

➡️

继续阅读