import math import numpy as np from pathlib import Path CARD_BITS = 6 RANKS = "23456789TJQKA" SUITS = "shdc" def load_np(filename): return np.load((Path(__file__).parent.parent / "ehs-data" / filename).resolve()) np_river = load_np("sd_river_ehs.np") np_turn = load_np("sd_turn_hist.np") np_flop = load_np("sd_flop_hist.np") def to_card(i): return f"{RANKS[math.floor(i / 4)]}{SUITS[i % 4]}" def to_cards(value, n): return [to_card((value >> (i * CARD_BITS)) & 0x3F) for i in range(n)] N_ROWS = 1 print("\nflop data: # bins 465") for row in np_flop[0:N_ROWS]: print("-----") print(row) print(f"board: {to_cards(row['board'], 3)}") print(f"player: {to_cards(row['player'], 2)}") print(f"bins: {row['bins']}") print("\nturn data: # bins 30") for row in np_turn[0:N_ROWS]: print("-----") print(row) print(f"board: {to_cards(row['board'], 3)}") print(f"player: {to_cards(row['player'], 2)}") print(f"bins: {row['bins']}") print("\nriver data: 0-29 (winrate: (ehs+1) * 1/30)") for row in np_river[0:N_ROWS]: print("-----") print(row) print(f"board: {to_cards(row['board'], 3)}") print(f"player: {to_cards(row['player'], 2)}") print(f"wins: {row['ehs']}")