4 个版本 (2 个重大更新)
0.3.0 | 2024年7月10日 |
---|---|
0.2.1 | 2024年6月1日 |
0.2.0 | 2024年5月26日 |
0.1.0 | 2024年5月5日 |
#68 in 模拟
被 2 crate 使用
24KB
452 行代码
lifers
一个旨在泛化细胞自动机创建的 Rust crate。当前功能包括
- 使用构建者模式轻松创建
- 快速的模拟引擎
- 为不同用例提供多个版本
- 支持 SIMD
- 为创建模拟提供非常人性化的设计
- 完全支持构建者模式
- 为自动机提供多个数据收集函数
- 支持任意类型的单元状态和相关数据
- 用于创建自定义前端接口 (WIP)
用法
一个示例,展示了如何在 lifers
中实现康威的生命游戏
use lifers::prelude::*;
use rand::random;
fn main() {
// Use generic automaton with a 100x100 grid
let mut game = generic::Automaton::build((100, 100))
// Initialize all cells with random states (alive or dead)
.init(|_| random::<bool>())
// Count neighbors in radius of 1 for each cell
.map(|(x, y), _, cells| generic::count_neighbors(cells, (x, y), 1, |b| *b))
// Change cells' state depending on the number of neighbors
.run(|_, is_alive, neighbors_n| match is_alive {
true => (2..=3).contains(neighbors_n),
false => *neighbors_n == 3,
});
// Compute the next generation
game.step();
}
依赖项
~610KB
~11K SLoC