重游生命游戏

我上瘾了。我总是想起约翰·康威的《生命游戏》。几年前,我写了一章关于生活在MATLAB实验.在我开始写博客后不久,我写了一个关于生活的三部分系列文章。第1部分第2部分第3部分.我最近对我的MATLAB生活程序做了重大改进。我似乎从来没有完成代码,因为我在实际使用程序探索宇宙时分心了。我邀请你加入我。但是,警告一下,你可能也会上瘾。

内容

规则

回想一下生命游戏是如何运作的。的宇宙是一个无限的二维矩形网格。的人口标记为的网格单元格的集合是活着.种群以离散时间步长演化,称为一代又一代.在每一步中,每个细胞的命运都取决于它八个最近的邻居的活力,这条规则是:

  • 一个有两个活邻居的活细胞,或者任何有三个活邻居的活细胞,在下一步都是活的。

生命的魅力在于,这个看似简单的规则导致了令人难以置信的各种模式、谜题和未解决的问题。

代码

这是代码的核心。稀疏索引使它看起来很简单。图形是由稀疏显示程序完成的,间谍

dbtype69:85life_lex
细胞是存活、死亡还是产生新细胞,70%取决于它们八个可能的邻居中有多少个活着。71%指数向量使中心指数增加或减少1。n = size(X,1);74 p = [1 1:n-1];75 q = [2:n n];计算八个邻居中有多少人还活着。78 79 Y = X (: p) + X (:, q) + X (p:) + (q:) +…80 X(p,p) + X(q,q) + X(p,q) + X(q,p);一个有两个活邻居的活细胞,或者任何有三个活邻居的活细胞,在下一步是活的。84 85 x = (x & (y == 2)) | (y == 3);

无限的宇宙

那么,无限的宇宙究竟是如何运作的呢?天体物理学家和宇宙学家对我们的宇宙也提出了同样的问题。多年来,我提供了几个MATLAB生命游戏程序,它们以不同的方式解决了这个问题。我终于有了一个我喜欢的解决方案。

在我所有的程序中,总体都用a表示稀疏矩阵.这意味着存储需求和执行时间与总体的大小成正比,而不是与某些网格的大小成正比。稀疏的矩阵很容易容纳不断增长的人口。没有边界,因此也就没有边界条件。

但我该怎么做显示一个无限的宇宙?在过去,我有一个窗口,它是整个人口的快照。但许多有趣的生命结构都是孤立的滑翔机.这些是五细胞的物体,永远朝一个方向移动。(想想“航行者”号我)。包含所有滑翔机的显示窗口必须相应地展开。这意味着种群的其余部分,通常是有限的,被降级到窗口的一个不断缩小的部分。解决方案是让孤立的滑翔机离开展示窗口,并在它们离开时进行计数。

滑翔机

我的第一个例子是单曲滑翔机.每一步两个细胞死亡,两个新的细胞诞生。经过四步之后,原始种群重新出现,但它已沿对角线向上移动并穿过网格。它永远朝这个方向移动,继续存在于无限的宇宙中。这个动画动图显示了前八个步骤的每一步,然后捕捉每四个步骤。当滑翔机到达窗口边缘时,它被计数并从视野中消失。时钟继续走着,即使没有什么可看的。

生活词汇

我最新的程序叫做life_lex.的初始种群life_lex均可从生活词汇,这是一个很有价值的网络资源,收录了与生命游戏相关的一千多个术语。词典现在包含了将近七百个起始种群。支持社区金宝app非常活跃——在过去几年中有许多发现。的“幻灯片放映”中选择“幻灯片放映”即可查看整个集合life_lex菜单。这场表演大约持续11分钟。

词典有两种形式。文本形式由life_lex它的分布是lexicon.txt.在Web上可以找到广泛交叉链接的HTML表单。的词典Toggle提供链接。

赫歇尔

以1781年发现天王星的人命名。至于如何后来就以他的名字命名了,你得读一下秘典。这是在较大人群中最常见的特征之一。它以a开头heptomino美国人口规模为7。在128时刻达到24的稳定状态之前,人口增长到100以上。它在这个过程中创造了两个滑翔机。

这是前八代和之后的每四代。

Fx77

这个配置名称背后的故事是非常专业的。“Fx”表示信号向前移动并产生镜像输出。“77”来自于在时间77时出现了一对赫歇尔。请注意,如果将窗口水平切成两半,这两半的亚群非常相似。在时间0时,人口数量从67开始,在时间179时达到最大值294,最终在时间大于206时稳定在104。

Fx77创建7个滑翔机。我一直在用它来测试我的滑翔机计数代码。这是一个很好的例子,说明除了滑翔机外,种群在空间中仍然是有限的。这是每十代。

有很多种口味.这个例子是一个庞大的种群,是无界的,不产生任何滑翔机。秘典告诉我们,这是一种不寻常的镜像对称汤,产生河豚没有别的了。

life_lex

这是我最新节目的屏幕截图,life_lex.通过切换,您可以选择生成的显示时间——单步、慢步或快步。您可以在Lexicon中向前或向后翻页。你可以访问这篇博客文章。你可以从菜单上的十几个建议中选择,我觉得这些建议特别有趣。

以下是建议菜单中的当前列表。当我遇到其他好东西时,它可能会改变。

'随机''预块'' blinker' '滑翔机'' Gosper滑翔机枪'' Gabriel' s p138' 'Snark' 'spacefiller' 'Fx77' '逆谷''汤''块和滑翔机''光速''波动性''滑翔机''总非周期性' ....《诺亚方舟》“幻灯片放映”

我会包括life_lex在新版本中,3.8克里夫的实验室

如果你想要life_lex单独,我将单独提交给//www.tatmou.com/matlabcentral/fileexchange/69383-game-of-life.提交的文件包括一份Lexicon.txt




发布与MATLAB®R2018a

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。