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.
- from release on PyPI
pip install phevaluator
- from source code
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 a format like: 'Ah' or '2C'). Usage examples can be seen in examples.py
.
Test
- The pre-calculated tables (
phevaluator.tables
) are tested by comparing them with the tables generated by test codes. - The functionality of the evaluators is tested by comparing with the JSON files generated by the original C++ evaluator.
- The functionality of the other modules is tested by its purposes.
python3 -m unittest discover -v
Development
-
install from source code with
editable mode
pip install -e .
The installed package reflects changes to files inside the
phevaluator
folder automatically. -
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
File details
Details for the file phevaluator-0.5.0.1.tar.gz
.
File metadata
- Download URL: phevaluator-0.5.0.1.tar.gz
- Upload date:
- Size: 107.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8361112ba04c25b3f7f8e95507c01c72e98a563909086abdd01dbd55f9b5e8d |
|
MD5 | f12ad4ad09bd5fc60dbcefc2506f6700 |
|
BLAKE2b-256 | 2ccef635e9eedc02804aeacd14d8dbed24c7a470ea5d9658354357ba685e534c |
File details
Details for the file phevaluator-0.5.0.1-py3-none-any.whl
.
File metadata
- Download URL: phevaluator-0.5.0.1-py3-none-any.whl
- Upload date:
- Size: 107.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31bf410580f911783dbada478a60b6deee93a7d8f11a0778905cb825334560a6 |
|
MD5 | 37037163326bdfed081322ca35df5380 |
|
BLAKE2b-256 | 11e66f7badb87796d069981f246836099327230b564cf45354b0f94e27d97cf5 |