#chess #syzygy #tablebase

shakmaty-syzygy

探测 Syzygy 终局表

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 游戏

Download history 13/week @ 2024-04-27 6/week @ 2024-05-04 19/week @ 2024-05-11 8/week @ 2024-05-18 15/week @ 2024-05-25 10/week @ 2024-06-01 2/week @ 2024-06-08 9/week @ 2024-06-15 5/week @ 2024-06-22 37/week @ 2024-06-29 215/week @ 2024-07-06 7/week @ 2024-07-13 89/week @ 2024-07-20 99/week @ 2024-07-27 48/week @ 2024-08-03 61/week @ 2024-08-10

每月297次下载
用于 jja

GPL-3.0+

125KB
2.5K SLoC

shakmaty-syzygy

一个基于 shakmaty 的 Rust 库,用于探测 Syzygy 终局表。

crates.io docs.rs

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