feat: add frequency function and constants
authorMA Beaudet <ma@beaudet.xyz>
Fri, 5 Nov 2021 14:42:13 +0000 (15:42 +0100)
committerMA Beaudet <ma@beaudet.xyz>
Fri, 5 Nov 2021 14:42:13 +0000 (15:42 +0100)
`frequency` is available through wasm_bindgen.

src/constants.rs
src/lib.rs

index 97a288b..6dd9763 100644 (file)
@@ -23,6 +23,10 @@ pub const VALUE_STR: [&str; 10] = [
     "High Card",
 ];
 
+pub const EXPECTED_FREQ: [f32; 10] = [
+    0., 40., 624., 3744., 5108., 10200., 54912., 123552., 1098240., 1302540.,
+];
+
 pub const FLUSHES: [u16; 7937] = [
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1599, 0, 0, 0, 0, 0, 0, 0, 1598, 0, 0, 0, 1597, 0,
index 7792357..226c49c 100644 (file)
@@ -11,8 +11,8 @@ use std::{
 };
 
 use constants::{
-    FLUSH, FLUSHES, FOUR_OF_A_KIND, FULL_HOUSE, HASH_ADJUST, HASH_VALUES, HIGH_CARD, ONE_PAIR,
-    PERM7, PRIMES, STRAIGHT, STRAIGHT_FLUSH, THREE_OF_A_KIND, TWO_PAIR, UNIQUE5,
+    EXPECTED_FREQ, FLUSH, FLUSHES, FOUR_OF_A_KIND, FULL_HOUSE, HASH_ADJUST, HASH_VALUES, HIGH_CARD,
+    ONE_PAIR, PERM7, PRIMES, STRAIGHT, STRAIGHT_FLUSH, THREE_OF_A_KIND, TWO_PAIR, UNIQUE5,
 };
 
 use wasm_bindgen::prelude::*;
@@ -238,6 +238,11 @@ pub fn hand_rank(i: u16) -> u8 {
     }
 }
 
+#[wasm_bindgen]
+pub fn frequency(i: u8) -> f32 {
+    EXPECTED_FREQ[i as usize] / 2_598_960.
+}
+
 /// Returns the frequency count of each hand type.
 ///
 /// Loops over all 2,598,960 possible five-card poker hands, calculating each hand's distinct value