#cellular-automata #definition #lua #rule #text-based #pattern #simulator

app luacells

一个使用Lua进行规则定义的基于文本的细胞自动机模拟器

5个版本

0.1.4 2022年10月5日
0.1.3 2022年10月5日
0.1.2 2022年10月4日
0.1.1 2022年10月4日
0.1.0 2022年10月2日

#975 in 数学

MIT许可证

26KB
612 代码行

luacells

一个使用Lua进行规则定义的基于文本的细胞自动机模拟器。

安装

使用cargo

  cargo install luacells

使用

  luacells rules/life.lua
  luacells --help # For more information

您可以在查看器的底部找到控制。

规则格式

规则以具有三个全局变量的Lua程序给出:UpdateDisplayStates

示例(康威生命游戏)

Update = function(c, n)
  local sum = 0
  for _, v in ipairs(n) do
    sum = sum + v
  end
  if c == 0 then
    if sum == 3 then
      return 1
    else
      return 0
    end
  else
    if sum == 2 or sum == 3 then
      return 1
    else
      return 0
    end
  end
end

Display = function(n)
  if n == 0 then return "  " end
  if n == 1 then return "()" end
end

States = 2

状态

States是细胞可以处于的状态数量。

更新

Update是一个描述如何更新细胞的函数。

它接受两个参数

  1. 该细胞的先前状态
  2. 细胞周围正方形区域的先前状态

邻居以以下顺序给出,作为一个表

  1. 西
  2. 东北
  3. 东南
  4. 西北
  5. 西南

显示

Display是显示细胞的函数。

它接受细胞的值,并应返回长度为1或2的字符串。

随机化

您可以在规则文件中添加Randomize = true以在启动时随机化。

模式格式

模式只是数字行的列表。

行由分号分隔,而单元格由逗号分隔。

此仓库

此仓库包含Rust源代码以及一些规则和模式,位于rulespatterns目录中。

依赖项

~4–14MB
~166K SLoC