45 个版本 (24 个重大更新)
0.25.1 | 2024年7月6日 |
---|---|
0.24.0 | 2023年6月10日 |
0.21.0 | 2022年12月5日 |
0.20.0 | 2022年11月4日 |
0.7.0 | 2018年7月29日 |
#25 in 游戏
每月297次下载
用于 jja
125KB
2.5K SLoC
shakmaty-syzygy
一个基于 shakmaty 的 Rust 库,用于探测 Syzygy 终局表。
Syzygy 表 允许在 50 检查规则下进行最佳游戏。表格适用于最多包含 7 个棋子的位置。
示例:使用方法
use shakmaty::{CastlingMode, Chess, fen::Fen};
use shakmaty_syzygy::{Tablebase, MaybeRounded, Wdl, Dtz, Syzygy};
let mut tables = Tablebase::new();
tables.add_directory("tables/chess")?;
let pos: Chess = "8/8/8/8/B7/N7/K2k4/8 b - - 0 1"
.parse::<Fen>()?
.into_position(CastlingMode::Standard)?;
let wdl = tables.probe_wdl_after_zeroing(&pos)?;
assert_eq!(wdl, Wdl::Loss);
let dtz = tables.probe_dtz(&pos)?;
assert!(matches!(dtz, MaybeRounded::Rounded(Dtz(-59))));
示例:命令行工具
一个类似于 Fathom 的命令行工具
$ cargo run --example fathom -- --path tables/chess -- "3qk3/8/8/8/8/8/8/4K3 w - - 0 1"
[Event "KvKQ"]
[Site ""]
[Date "????.??.??"]
[Round "-"]
[White "Syzygy"]
[Black "Syzygy"]
[Result "0-1"]
[FEN "3qk3/8/8/8/8/8/8/4K3 w - - 0 1"]
[Annotator "shakmaty-syzygy"]
[DTZ "-16 or -17"]
{ KvKQ with DTZ -16 or -17 } 1. Ke2 Kd7 2. Kd1 Ke6+ 3. Kc1 Qd3 4. Kb2 Qd2+ 5. Ka1 Kd5 6. Kb1 Kc4 7. Ka1 Kb3 8. Kb1 Qd1# { Checkmate } 0-1
文档
致谢
感谢 Ronald de Man 提供的 Syzygy 终局表。探测代码与 Stockfish 的实现紧密相关。
许可证
shakmaty-syzygy 采用 GPL-3.0 许可证(或您选择的任何后续版本)。有关完整的许可证文本,请参阅 COPYING 文件。
依赖项
~1.5MB
~25K SLoC