Crate shakmaty_syzygy

Source
Expand description

Probe Syzygy endgame tablebases.

Syzygy tables allow optimal play with and without regard to the 50-move rule. Tables are available for positions with up to 7 pieces.

§Example

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))));

§Errors

See SyzygyError for possible error conditions.

§Cargo features

  • mmap: Enables support for memory-mapped tablebase files via Tablebase::with_mmap_filesystem().
  • variant: Enables support for Antichess and Atomic chess.

Modules§

filesystem
Traits to provide a custom filesystem implementation.

Structs§

Dtz
DTZ50′′. Based on the distance to zeroing of the half-move clock.
Material
A material key.
TableType
File extension and magic header bytes of Syzygy tables.
Tablebase
A collection of tables.

Enums§

AmbiguousWdl
WDL50 with ambiguity due to DTZ rounding.
MaybeRounded
A value that may be affected by DTZ rounding.
Metric
Metric stored in a table: WDL or DTZ.
ProbeError
Error when probing a table.
SyzygyError
Error when probing tablebase.
Wdl
WDL50. 5-valued evaluation of a position in the context of the 50-move drawing rule.

Traits§

Syzygy
A chess variant with Syzygy support.