Crate for contract bridge
This library provides tools for analyzing and simulating hands in the card game contract bridge. It is named after an anatomical part of the brainstem and also "bridge" in Latin.
Modules
bidding—Call,Auction, and aTrie-based representation of a bidding system.deck— card sets, shuffling, and iterators that fill in partial deals.eval— hand-evaluation kernels (HCP, shortness, LTC, NLTC, BUM-RAP, Fifths, Zar).stats— numerically stable accumulators and double-dummy par scoring over histograms.
Feature flags
serde— deriveSerialize/Deserializefor the library's value types. Off by default.
Quick start
Deal 10 random hands and evaluate the North hand with several point counts:
use ;
use HandEvaluator;
use Seat;
let mut rng = rng;
for _ in 0..10
Estimate NS par from random fill-in deals (requires dds-bridge's solver,
linked via dds-bridge-sys in dev-dependencies; see
examples/average-ns-par):
use ;
use ;
use ;
let cards = new;
let solutions = lock.solve_deals?;
let par = average_ns_par;
Examples
The examples/ directory has runnable programs:
generate-deals— stream random deals to stdout.notrump-tricks— average tricks taken in notrump per hand feature.check-nltcandcheck-zar— validate hand-evaluation methods against double-dummy results.average-ns-par— Monte-Carlo NS par score for a partial deal.
Run any of them with cargo run --example <name>.
MSRV
Pons currently requires Rust 1.93. The CI matrix builds and tests on the MSRV toolchain on Ubuntu, macOS, and Windows.