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 在 命令行工具
120KB
1.5K SLoC
Rust 细胞自动机
这是一个命令行工具,用于模拟和搜索简单细胞自动机(具有相对较小的邻域)的空间。
该工具以 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
文件中产生
生成随机 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