#细胞自动机 #解析器 #生命游戏 #derive-debug

ca-rules

解析类似生命的细胞自动机的规则字符串

8 个版本

0.3.5 2023年3月18日
0.3.4 2023年1月1日
0.3.3 2021年7月3日
0.3.2 2020年5月19日
0.1.0 2019年8月6日

#664 in 解析器实现


2 个 crate 中使用 (via rlifesrc-lib)

MIT 许可证

67KB
1.5K SLoC

CA 规则解析器

Travis (.org) Crates.io Docs.rs 中文

解析类似生命和其他细胞自动机的规则字符串。

目前支持以下规则

对于非代数规则,支持四种不同的表示法

对于Generations规则,支持四种不同的表示法

有关这些规则字符串的详细定义和表示法,请参阅生命游戏维基

用法

use ca_rules::ParseLife;

// Define a struct for your rule:
#[derive(Debug, Eq, PartialEq)]
struct Rule {
    b: Vec<u8>,
    s: Vec<u8>,
}

// Implement a parser trait for your rule:
// The choice of the trait depends on the type of rules you want to parse.
impl ParseLife for Rule {
    // Implement a function to construct the rule from b and s data:
    fn from_bs(b: Vec<u8>, s: Vec<u8>) -> Self {
        Rule { b, s }
    }
}

// Then you can parse a rule string:
let life = Rule::parse_rule("B3/S23").unwrap();
assert_eq!(
    life,
    Rule {
        b: vec![3],
        s: vec![2, 3],
    }
)

有关详细信息,请参阅文档

依赖项

~0.5-1MB
~22K SLoC