REFERENCES

# References

> **Note:** This file is gitignored and intended for local reference only.

## Meerkat API (Poker Bot Framework)

- **Meerkat API** — Open-source poker bot API for testing poker bots against each other.
  - GitHub: https://github.com/flopezlacadena/meerkat-api
  - Original site: http://www.meerkatwiki.org/ (archived)
  - The Meerkat API defines a Java interface (`com.meerkat.HandEvaluator`, `com.meerkat.Bot`) for pluggable poker bots.
  - Key interfaces:
    - `Bot.act(GameInfo gi)` — called on each betting round; returns an `Action`.
    - `HandEvaluator.evaluateHand(Card[] cards)` — returns a hand rank value.
    - `GameInfo` — provides game state: pot size, community cards, player stacks, betting history.
    - `Action` — fold, check/call, raise, all-in.

## Java Poker Testbed Implementation

/home/jan/Development/poker/old_bot/SNG-Testbed/src/pokerai/dealer/

## Java Hand Evaluation Implementations

- /home/jan/Development/poker/old_bot/SNG-Testbed/src/pokerai/pokerbots/common/supersonic/
- /home/jan/Development/poker/old_bot/SNG-Testbed/src/pokerai/game/eval/
  - **LUT (Look-Up Table) Trie Approach** — Pre-computed trie of array lookups.
  - Each card maps to a node; traversal yields the hand rank in O(n) time.
  - ~124 MB table (32,487,834 `u32` entries) for 5/6/7-card evaluation.


- **Cactus Kev's Poker Hand Evaluator** — The original 5-card evaluator using prime-product hashing.
  - http://suffe.coolpage.biz/poker/evaluator.html (archived)
  - Uses 13 primes mapped to card ranks; the product of 5 primes uniquely identifies a hand.
  - Two lookup tables: flush table (1,287 entries) and unsuited table (6,175 entries).
  - Total: 7,462 entries (~30 KB).
  - Extended to 7-card hands by enumerating all C(7,5) = 21 combinations.
- **SpecialK / SKPokerEval** — Fast C++ evaluator using perfect hash.
  - https://github.com/kennethshackleton/SKPokerEval
- **PokerHandEvaluator** — C# evaluator with multiple backends.
  - https://github.com/ElevenStack/PokerHandEvaluator
- **OMPEval** — C++ equity calculator and hand evaluator.
  - https://github.com/zekyll/OMPEval

## Hand Ranking Standards

- **Wikipedia: List of poker hands** — Standard hand ranking reference.
  - https://en.wikipedia.org/wiki/List_of_poker_hands
- **Total possible hands**: C(52,5) = 2,598,960 unique 5-card hands.
  - Royal Flush: 4
  - Straight Flush (excl. Royal): 36
  - Four of a Kind: 624
  - Full House: 3,744
  - Flush: 5,108
  - Straight: 10,200
  - Three of a Kind: 54,912
  - Two Pair: 123,552
  - One Pair: 1,098,240
  - High Card: 1,302,540

## Rust Poker Libraries

- **rs-poker** — Rust poker hand evaluator and simulator.
  - https://github.com/wfreeman/rs-poker
  - Crates.io: https://crates.io/crates/rs-poker
- **poker-client** — Rust poker evaluation.
  - Various community implementations on crates.io.

## Tournament Structures

- **ICM (Independent Chip Model)** — Standard tournament equity calculation.
  - https://en.wikipedia.org/wiki/Independent_Chip_Model
- **Blind Structure Design** — Standard tournament blind escalation.
  - World Series of Poker structures: https://www.wsop.com/
- **SNG (Sit & Go)** — Single-table tournament format.
  - Standard payout: 50/30/20 (3-player) or 65/35 (heads-up).

## Simulation & Testing

- **Proptest** — Rust property-based testing framework used in this project.
  - https://github.com/proptest-rs/proptest
  - Used for exhaustive hand evaluation validation.
- **Criterion** — Rust benchmarking framework.
  - https://github.com/bheisler/criterion.rs
  - Used for evaluator performance benchmarks.

id: 75e6ad3b65e14addaef528850c1d268c
parent_id: c83e2ff8e0c242388f119665e0bc36b8
created_time: 2026-05-31T10:00:14.406Z
updated_time: 2026-05-31T10:00:14.406Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1780221614406
user_created_time: 2026-05-31T10:00:14.406Z
user_updated_time: 2026-05-31T10:00:14.406Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
type_: 1