#细胞自动机 #自动机 #模拟 #生命游戏 #图形

nightly bin+lib rust_ca

一个用于在 Rust 中模拟和可视化细胞自动机的工具

4 个版本

0.2.2 2022年3月31日
0.2.1 2022年3月31日
0.2.0 2022年3月30日
0.1.0 2022年3月16日

#2014命令行工具

MIT 许可证

120KB
1.5K SLoC

Rust 1.5K SLoC // 0.0% comments GLSL 237 SLoC

Rust 细胞自动机

Crates.ioRust

这是一个命令行工具,用于模拟和搜索简单细胞自动机(具有相对较小的邻域)的空间。

该工具以 GIF 文件的形式输出 CA 模拟。

安装工具

运行以下命令以在您的系统上安装

cargo install rust_ca

要在另一个 Rust 项目中使用此库,请将以下内容添加到您的 Cargo.toml 依赖项中

[dependencies]
rust_ca = "0.2.1"

示例

以下命令将运行规则编号为 16855021099980290151 的 CA。初始配置指定在 exploding.pat 中(默认为随机)。CA 有 3 个状态,128x128 个细胞。我们希望输出 GIF 文件表示 2400 个时间步骤,但只显示其中 1 个。

rust_ca -n 3 -f rules/3_states/16855021099980290151.map.comp \
-p patterns/exploding.pat -k 10 -s 128 --delay 0 -t 2400 

这将在以下 test.gif 文件中产生

Example CA GIF

生成随机 CA GIF

这生成了 200 个不同的 CA,运行了 2400 步(只显示其中 1 个),有 4 个状态。

警告:此命令创建 200 个 GIF,总大小约为 500MB。

cargo build --release
mkdir rgen
for i in $(seq 0 200); do
rust_ca -n 4 -k 10 -s 128 --delay 0 -t 2400 --rotate 1 --symmetric \
    > rgen/test_$i.gif
done;

命令行界面

CLI 使用方法

Rust CA 0.2.2
Hugo Cisneros <hmj.cisneros@gmail.com>
A CLI CA simulator. With no options, this runs a randomly sampled CA rule with 2 states for 50 steps
and outputs it as a gif file `test.gif`

USAGE:
    rust_ca [OPTIONS]

OPTIONS:
        --delay <DELAY>
            [default: 10]

    -f, --file <FILE>
            File to read a rule from or write to. The file must contain a valid rule for the
            corresponding number of states

    -h, --help
            Print help information

        --horizon <HORIZON>
            [default: 1]

    -k, --skip <SKIP>
            Steps to skip at every time step for the output [default: 1]

    -n, --states <STATES>
            Number of states of the CA [default: 2]

    -o, --output <OUTPUT>
            A file to write the GIF to. Defaults to standard output

    -p, --pattern <PATTERN>


    -r, --rule <RULE>
            Specify one of the implemented CA rule [possible values: GOL]

        --rotate <ROTATE>
            [default: 0]

        --rule-sampling <RULE_SAMPLING>
            [default: dirichlet] [possible values: uniform, dirichlet]

    -s, --size <SIZE>
            The size of the 2D CA grid [default: 128]

        --symmetric
            Make the rule symmetric (this will also apply to rules passed as files)

    -t, --steps <STEPS>
            Simulation time [default: 50]

        --use-tiled
            Use a tiled CA (defaults to true when the size is a multiple of TILE_SIZE)

    -V, --version
            Print version information

    -w, --write-rule <WRITE_RULE>
            File to read a rule from or write to. The file must contain a valid rule for the
            corresponding number of states

依赖关系

~5MB
~93K SLoC