Skip to content

Latest commit

 

History

History

lib

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

GitHub Workflow Status Crates.io Docs.rs English

试玩 Rust。尝试写一个生命游戏搜索工具。具体来说就是照抄 David Bell 写的 lifesrc 和 Jason Summers 写的 WinLifeSearch。其具体的算法可见 Dean Hickerson 的说明

写得非常糟糕,和 WinLifeSearch 相比缺少很多功能,而且速度要慢很多,但支持更多规则。

支持 Life-likenon-totalistic 的规则,但后者比前者要略慢一些。也支持六边形以及von Neumann 邻域的规则,但目前是通过转化成 non-totalistic 规则来实现的,速度较慢。还支持 Generations 规则。

这里是 rlifesrc 的库。另有一个文本界面的命令行工具,和一个基于 WebAssembly 的网页版,请分别见 tui/web/ 两个目录。

点此试用网页版。

已发布的版本的文档可见 docs.rs;GitHub 上未发布的版本的文档可见此处,其中包含了不公开的函数和方法。

例子

试找 25P3H1V0.1 飞船。

use rlifesrc_lib::{Config, Status};

// 设置世界的参数。
let config = Config::new(16, 5, 3).set_translate(0, 1);

// 创建世界。
let mut search = config.world().unwrap();

// 搜索并显示结果的第 0 代。
if let Status::Found = search.search(None) {
    println!("{}", search.rle_gen(0))
}

搜索结果:

x = 16, y = 5, rule = B3/S23
........o.......$
.oo.ooo.ooo.....$
.oo....o..oo.oo.$
o..o.oo...o..oo.$
............o..o!