Struct shakmaty_syzygy::Tablebase
source · pub struct Tablebase<S: Position + Clone + Syzygy> { /* private fields */ }
Expand description
A collection of tables.
Implementations§
source§impl<S: Position + Clone + Syzygy> Tablebase<S>
impl<S: Position + Clone + Syzygy> Tablebase<S>
sourcepub fn max_pieces(&self) -> usize
pub fn max_pieces(&self) -> usize
Returns the maximum number of pieces over all added tables.
This number is updated when adding table files and very fast to read.
sourcepub fn add_directory<P: AsRef<Path>>(&mut self, path: P) -> Result<usize>
pub fn add_directory<P: AsRef<Path>>(&mut self, path: P) -> Result<usize>
Add all relevant tables from a directory.
Tables are selected by filename, e.g. KQvKP.rtbz
. The files are not
actually opened. This happens lazily when probing.
Traverses symbolic links.
Note that probing generally requires tables for the specific material composition, as well as material compositions that are transitively reachable by captures and promotions. These are sometimes distributed separately, so make sure to add tables from all relevant directories.
Returns the number of added table files.
§Errors
Returns an error result when:
- The
path
does not exist. path
is not pointing to a directory.- Listing the directory fails (no permission, …).
sourcepub fn add_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()>
pub fn add_file<P: AsRef<Path>>(&mut self, path: P) -> Result<()>
Add a table file.
The file is not actually opened. This happens lazily when probing.
Traverses symbolic links.
§Errors
Returns an immediate error result when:
- The filename does not indicate that it is a valid table file
(e.g.
KQvKP.rtbz
). - Querying metadata for the path fails (file does not exist, broken symlink, no permission to read metadata, …).
path
is not pointing to a regular file.- The file size indicates that the table file must be corrupted.
sourcepub fn probe_wdl_after_zeroing(&self, pos: &S) -> Result<Wdl, SyzygyError>
pub fn probe_wdl_after_zeroing(&self, pos: &S) -> Result<Wdl, SyzygyError>
Probe tables for the Wdl
value of a position, assuming pos
is reached directly after a capture or pawn move.
§Errors
See SyzygyError
for possible error conditions.
sourcepub fn probe_wdl(&self, pos: &S) -> Result<AmbiguousWdl, SyzygyError>
pub fn probe_wdl(&self, pos: &S) -> Result<AmbiguousWdl, SyzygyError>
Probe tables for the WDL value of a position, considering also
the halfmove counter of pos
. The result may be
ambiguous due to DTZ rounding.
Requires both WDL and DTZ tables.
§Errors
See SyzygyError
for possible error conditions.
sourcepub fn probe_dtz(&self, pos: &S) -> Result<MaybeRounded<Dtz>, SyzygyError>
pub fn probe_dtz(&self, pos: &S) -> Result<MaybeRounded<Dtz>, SyzygyError>
Probe tables for the Dtz
value of a position.
Requires both WDL and DTZ tables.
§Errors
See SyzygyError
for possible error conditions.
sourcepub fn best_move(
&self,
pos: &S
) -> Result<Option<(Move, MaybeRounded<Dtz>)>, SyzygyError>
pub fn best_move( &self, pos: &S ) -> Result<Option<(Move, MaybeRounded<Dtz>)>, SyzygyError>
Get the recommended tablebase move.
Following the tablebase mainline starting from a capture or pawn move guarantees achieving the optimal outcome under the 50-move rule.
Otherwise (i.e. when not immediately following the tablebase mainline after the capture that crosses into tablebase territory), some care needs to be taken due to DTZ rounding.
Requires both WDL and DTZ tables.
§Errors
See SyzygyError
for possible error conditions.