yahtzee-engine 0.1.0

Yahtzee rules, scoring, and bots: a fast heuristic and an exact optimal expected-value solver
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.0] - 2026-07-11

### Added

- Complete standard Yahtzee rules under the official forced-joker
  convention, with `State` as the single legality-and-valuation
  authority shared by the scorecard, the game, and the solver: joker
  forcing, joker values (Full House 25, straights 30/40, the rest the
  dice total), the 35-point upper bonus, and unlimited 100-point
  Yahtzee bonuses gated on the Yahtzee box holding 50.
- A multiplayer `Game` state machine with deterministic dice injection
  (`roll`) and RNG convenience (`roll_with`, feature `rand`); illegal
  moves are rejected without changing the game.
- The `Strategy` trait with a `View` decision context, plus `play_turn`
  and `play_game` drivers (feature `rand`).
- `HeuristicBot`: deterministic rules of thumb averaging 216.0 points
  over 10 000 seeded solo games.
- `Solver`: an exact expectimax solver over all scorecard states, with
  full (`solve`), tier-stepped (`solve_tier`), and lazy per-cone
  (`value`) evaluation, and per-decision queries (`best_action`,
  `best_category`, `keep_ev`, `category_ev`).  The empty card is worth
  254.5877 points under the implemented rules; lifting the joker
  forcing reproduces Verhoeff's 254.5896 exactly.  `OptimalBot` plays
  it as a `Strategy`.
- A `parallel` cargo feature (off by default): scorecard tiers solve
  across the CPU cores via rayon, bit-identical to the serial build.
- Examples: `solve` (full table + optimal EV), `play` (human vs the
  heuristic bot in the terminal), and `arena` (bot strength
  measurement).
- `web/`: a browser front end on WebAssembly — click to hold, score on
  the card, with the exact solver as a live advisor built tier by tier
  in a web worker; deployed to GitHub Pages.

[Unreleased]: https://github.com/jdh8/yahtzee-engine/compare/0.1.0...HEAD
[0.1.0]: https://github.com/jdh8/yahtzee-engine/releases/tag/0.1.0