PH Evaluator - an efficient Poker Hand Evaluator based on a Perfect Hash algorithm
Project description
PH Evaluator Python package (phevaluator)
Description
PH Evaluator is designed for evaluating poker hands with more than 5 cards. Instead of traversing all the combinations, it uses a perfect hash algorithm to get the hand strength from a pre-computed hash table, which only costs very few CPU cycles and considerably small memory (~100kb for the 7 card evaluation). With slight modification, the same algorithm can be also applied to evaluating Omaha poker hands.
Installation
The library requires Python 3.
- with
pip
pip install .
Using the library
The main function is the evaluate_cards
function.
from phevaluator import evaluate_cards
p1 = evaluate_cards("9c", "4c", "4s", "9d", "4h", "Qc", "6c")
p2 = evaluate_cards("9c", "4c", "4s", "9d", "4h", "2c", "9h")
# Player 2 has a stronger hand
print(f"The rank of the hand in player 1 is {p1}") # 292
print(f"The rank of the hand in player 2 is {p2}") # 236
The function can take both numbers and card strings (with format like: 'Ah' or '2C'). Usage examples can be seen in examples.py
.
Test
There are 1000 random examples tested for each type of hand (5 cards, 6 cards, and 7 cards). The examples are stored in json files the tests folder and were generated with the original C++ evaluator.
- with current environment
python3 -m unittest discover -v
Development
-
recommended to format with
black
before commitcheck where to correct (without formatting)
black . --diff --color
format all
black .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for phevaluator-0.5.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbbfe8d0caad9dc38c1eee7296490676929939224abc5db93d7799213c12ff44 |
|
MD5 | 309904cf6c8a46052c4c5f45d8a2d89d |
|
BLAKE2b-256 | a027c70bdb48d4263119fa1abc4b27fb7cccd646648b1389497f56f79bc7dab5 |