bkgm 0.3.1

A Rust Backgammon library
Documentation
# bkgm

[![Build](../../actions/workflows/build.yaml/badge.svg)](../../actions/workflows/build.yaml)

Bkgm is a versatile Rust crate designed to facilitate Backgammon-related operations, such as move generation, position parsing, conversion between standards, and the implementation of the [perfect hash](https://api.semanticscholar.org/CorpusID:60574812) for bearoff and hypergammon databases. It supports both traditional Backgammon and 3-checker Hypergammon and provides the foundation for building Backgammon engines or APIs.

## Example Position

Here's a visual representation of the starting position in Backgammon:

```plaintext
Position ID: 4HPwATDgc/ABMA
┌13─14─15─16─17─18─┬───┬19─20─21─22─23─24─┬───┐
│ X           O    │   │ O              X │   │
│ X           O    │   │ O              X │   │
│ X           O    │   │ O                │   │
│ X                │   │ O                │   │
│ X                │   │ O                │   │
│                  │BAR│                  │OFF│
│ O                │   │ X                │   │
│ O                │   │ X                │   │
│ O           X    │   │ X                │   │
│ O           X    │   │ X              O │   │
│ O           X    │   │ X              O │   │
└12─11─10──9──8──7─┴───┴─6──5──4──3──2──1─┴───┘
```

## Features

-   Support for the Gnubg position id format.
-   Ability to generate possible positions.
-   Macros to create Backgammon and Hypergammon positions.
-   State trait implemented for both Backgammon and Hypergammon.

## TODO

-   Move generation (next possible position generation is already implemented).
-   Move parsing (e.g., 24/23*/22*/21\*).
-   Improve test coverage.
-   Add a game trait, enabling Mat files.
-   Addition of optional rules
-   Improve macros to work with bar and off

## References

-   Bkgm [Documentation]https://docs.rs/bkgm/latest/bkgm
-   Backgammon [Wikipedia]https://en.wikipedia.org/wiki/Backgammon
-   [Wildbg]https://github.com/carsten-wenderdel/wildbg by [Carsten Wenderdel]https://github.com/carsten-wenderdel/wildbg
-   [Enumerating Backgammon Positions: The Perfect Hash (1997)]https://api.semanticscholar.org/CorpusID:60574812 by A. T. Benjamin and A. M. Ross