Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/niklasf/shakmaty-syzygy
A Rust library to probe Syzygy endgame tablebases
https://github.com/niklasf/shakmaty-syzygy
chess rust syzygy tablebases
Last synced: 6 days ago
JSON representation
A Rust library to probe Syzygy endgame tablebases
- Host: GitHub
- URL: https://github.com/niklasf/shakmaty-syzygy
- Owner: niklasf
- License: gpl-3.0
- Created: 2017-10-31T20:19:28.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-10-12T18:41:07.000Z (about 1 month ago)
- Last Synced: 2024-10-15T13:07:09.156Z (about 1 month ago)
- Topics: chess, rust, syzygy, tablebases
- Language: Rust
- Homepage: https://docs.rs/shakmaty-syzygy
- Size: 598 KB
- Stars: 24
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: COPYING
Awesome Lists containing this project
README
shakmaty-syzygy
===============A Rust library to probe Syzygy endgame tablebases, based on [shakmaty](https://github.com/niklasf/shakmaty).
[![crates.io](https://img.shields.io/crates/v/shakmaty-syzygy.svg)](https://crates.io/crates/shakmaty-syzygy)
[![docs.rs](https://docs.rs/shakmaty-syzygy/badge.svg)](https://docs.rs/shakmaty-syzygy)[Syzygy tables](https://syzygy-tables.info/#syzygy) allow optimal play under
the 50-move rule. Tables are available for positions with up to 7 pieces.Example: Usage
--------------```rust
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::()?
.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))));
```Example: Command line tool
--------------------------A command line tool similar to [Fathom](https://github.com/basil00/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
```Documentation
-------------[Read the documentation](https://docs.rs/shakmaty-syzygy)
Acknowledgement
---------------Thanks to Ronald de Man for his [Syzygy tablebases](https://github.com/syzygy1/tb).
The probing code is closely based on his implementation for Stockfish.License
-------shakmaty-syzygy is licensed under the GPL-3.0 (or any later version at your
option). See the COPYING file for the full license text.