15 个版本
0.2.10 | 2023 年 4 月 16 日 |
---|---|
0.2.9 | 2022 年 12 月 20 日 |
0.2.6 | 2022 年 10 月 30 日 |
0.2.4 | 2022 年 8 月 19 日 |
0.1.3 | 2021 年 11 月 30 日 |
#363 in 游戏开发
97 每月下载量
105KB
1.5K SLoC
rs-Retroboard
一个棋后走生成器。Retroboard 的 Rust 版本。适用于终局表库生成。
状态
具有强大的测试套件,但缺乏与可信来源的 perft 结果比较。
规格
支持吃过路兵,但不支持长将。支持合法但无法到达的位置(主要是带有过多棋子的位置)。
接受的无法到达的位置示例
8/4k3/3B1B2/8/8/8/8/4K3 b - - 0 1
不可能的检查8/8/R4k2/4p3/8/8/8/4K3 b - e6 0 1
不可能的吃过路兵方格。e7e5 将是不合法的,因为黑方已经处于被将军状态。
它旨在遵循与 syzygy 和 Gaviota 表库生成软件相同的生成规则。
性能
在深度 4 的位置上进行了非常粗略的 perft 测试,该位置给出 88148797 个移动,耗时约 2 秒(在 Apple M1 上测试)。这比 shakmaty
crate 约慢 3.5 倍,但应该会得到改进。
fen : q4N2/1p5k/3P1b2/8/6P1/4Q3/3PB1r1/2KR4 b - - 0 1
,白方口袋中有 2PNBRQ
,黑方口袋中有 3NBRQP
,Q
长将并允许吃过路兵移动。
示例
use retroboard::RetroBoard;
let r = RetroBoard::new_no_pockets("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1").unwrap();
assert_eq!(r.legal_unmoves().len(), 4);
依赖项
~3–4MB
~69K SLoC