module Poker.Holdem.Table.DP ( dpLookup ) where import qualified Data.Array.Unboxed as Array import Data.Array.Base (unsafeAt) import GHC.Arr (unsafeIndex) dpLookup :: Array.UArray Int Int -> Int -> Int -> Int dpLookup :: UArray Int Int -> Int -> Int -> Int dpLookup UArray Int Int q Int i Int k = UArray (Int, Int, Int) Int dp2 UArray (Int, Int, Int) Int -> Int -> Int forall (a :: * -> * -> *) e i. (IArray a e, Ix i) => a i e -> Int -> e `unsafeAt` Int idx where idx :: Int idx = ((Int, Int, Int), (Int, Int, Int)) -> (Int, Int, Int) -> Int forall a. Ix a => (a, a) -> a -> Int unsafeIndex ((Int 0,Int 0,Int 0), (Int 4,Int 13,Int 9)) (UArray Int Int q UArray Int Int -> Int -> Int forall (a :: * -> * -> *) e i. (IArray a e, Ix i) => a i e -> Int -> e `unsafeAt` Int i, Int 13 Int -> Int -> Int forall a. Num a => a -> a -> a - Int i Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1, Int k) dp2 :: Array.UArray (Int, Int, Int) Int dp2 :: UArray (Int, Int, Int) Int dp2 = ((Int, Int, Int), (Int, Int, Int)) -> [Int] -> UArray (Int, Int, Int) Int forall (a :: * -> * -> *) e i. (IArray a e, Ix i) => (i, i) -> [e] -> a i e Array.listArray ((Int 0,Int 0,Int 0), (Int 4,Int 13,Int 9)) [ Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 1, Int 1, Int 1, Int 1, Int 1, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 1, Int 2, Int 3, Int 4, Int 5, Int 4, Int 3, Int 2, Int 1, Int 0 , Int 1, Int 3, Int 6, Int 10, Int 15, Int 18, Int 19, Int 18, Int 15, Int 10 , Int 1, Int 4, Int 10, Int 20, Int 35, Int 52, Int 68, Int 80, Int 85, Int 80 , Int 1, Int 5, Int 15, Int 35, Int 70, Int 121, Int 185, Int 255, Int 320, Int 365 , Int 1, Int 6, Int 21, Int 56, Int 126, Int 246, Int 426, Int 666, Int 951, Int 1246 , Int 1, Int 7, Int 28, Int 84, Int 210, Int 455, Int 875, Int 1520, Int 2415, Int 3535 , Int 1, Int 8, Int 36, Int 120, Int 330, Int 784, Int 1652, Int 3144, Int 5475, Int 8800 , Int 1, Int 9, Int 45, Int 165, Int 495, Int 1278, Int 2922, Int 6030, Int 11385, Int 19855 , Int 1, Int 10, Int 55, Int 220, Int 715, Int 1992, Int 4905, Int 10890, Int 22110, Int 41470 , Int 1, Int 11, Int 66, Int 286, Int 1001, Int 2992, Int 7887, Int 18722, Int 40612, Int 81367 , Int 1, Int 12, Int 78, Int 364, Int 1365, Int 4356, Int 12232, Int 30888, Int 71214, Int 151580 , Int 1, Int 13, Int 91, Int 455, Int 1820, Int 6175, Int 18395, Int 49205, Int 120055, Int 270270 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 1, Int 2, Int 2, Int 2, Int 2, Int 1, Int 0, Int 0, Int 0, Int 0 , Int 1, Int 3, Int 5, Int 7, Int 9, Int 9, Int 7, Int 5, Int 3, Int 1 , Int 1, Int 4, Int 9, Int 16, Int 25, Int 33, Int 37, Int 37, Int 33, Int 25 , Int 1, Int 5, Int 14, Int 30, Int 55, Int 87, Int 120, Int 148, Int 165, Int 165 , Int 1, Int 6, Int 20, Int 50, Int 105, Int 191, Int 306, Int 440, Int 575, Int 685 , Int 1, Int 7, Int 27, Int 77, Int 182, Int 372, Int 672, Int 1092, Int 1617, Int 2197 , Int 1, Int 8, Int 35, Int 112, Int 294, Int 665, Int 1330, Int 2395, Int 3935, Int 5950 , Int 1, Int 9, Int 44, Int 156, Int 450, Int 1114, Int 2436, Int 4796, Int 8619, Int 14275 , Int 1, Int 10, Int 54, Int 210, Int 660, Int 1773, Int 4200, Int 8952, Int 17415, Int 31240 , Int 1, Int 11, Int 65, Int 275, Int 935, Int 2707, Int 6897, Int 15795, Int 33000, Int 63580 , Int 1, Int 12, Int 77, Int 352, Int 1287, Int 3993, Int 10879, Int 26609, Int 59334, Int 121979 , Int 1, Int 13, Int 90, Int 442, Int 1729, Int 5721, Int 16588, Int 43120, Int 102102, Int 222794 , Int 1, Int 14, Int 104, Int 546, Int 2275, Int 7995, Int 24570, Int 67600, Int 169260, Int 390325 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 1, Int 2, Int 3, Int 3, Int 3, Int 2, Int 1, Int 0, Int 0, Int 0 , Int 1, Int 3, Int 6, Int 9, Int 12, Int 13, Int 12, Int 9, Int 6, Int 3 , Int 1, Int 4, Int 10, Int 19, Int 31, Int 43, Int 52, Int 55, Int 52, Int 43 , Int 1, Int 5, Int 15, Int 34, Int 65, Int 107, Int 155, Int 200, Int 233, Int 245 , Int 1, Int 6, Int 21, Int 55, Int 120, Int 226, Int 376, Int 561, Int 760, Int 940 , Int 1, Int 7, Int 28, Int 83, Int 203, Int 428, Int 798, Int 1338, Int 2043, Int 2863 , Int 1, Int 8, Int 36, Int 119, Int 322, Int 749, Int 1540, Int 2850, Int 4810, Int 7470 , Int 1, Int 9, Int 45, Int 164, Int 486, Int 1234, Int 2766, Int 5580, Int 10271, Int 17419 , Int 1, Int 10, Int 55, Int 219, Int 705, Int 1938, Int 4695, Int 10230, Int 20337, Int 37270 , Int 1, Int 11, Int 66, Int 285, Int 990, Int 2927, Int 7612, Int 17787, Int 37905, Int 74470 , Int 1, Int 12, Int 78, Int 363, Int 1353, Int 4279, Int 11880, Int 29601, Int 67221, Int 140701 , Int 1, Int 13, Int 91, Int 454, Int 1807, Int 6085, Int 17953, Int 47476, Int 114334, Int 253682 , Int 1, Int 14, Int 105, Int 559, Int 2366, Int 8450, Int 26390, Int 73775, Int 187655, Int 439530 , Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0, Int 0 , Int 1, Int 2, Int 3, Int 4, Int 4, Int 3, Int 2, Int 1, Int 0, Int 0 , Int 1, Int 3, Int 6, Int 10, Int 14, Int 16, Int 16, Int 14, Int 10, Int 6 , Int 1, Int 4, Int 10, Int 20, Int 34, Int 49, Int 62, Int 70, Int 70, Int 62 , Int 1, Int 5, Int 15, Int 35, Int 69, Int 117, Int 175, Int 235, Int 285, Int 313 , Int 1, Int 6, Int 21, Int 56, Int 125, Int 241, Int 411, Int 631, Int 881, Int 1125 , Int 1, Int 7, Int 28, Int 84, Int 209, Int 449, Int 854, Int 1464, Int 2289, Int 3289 , Int 1, Int 8, Int 36, Int 120, Int 329, Int 777, Int 1624, Int 3060, Int 5265, Int 8345 , Int 1, Int 9, Int 45, Int 165, Int 494, Int 1270, Int 2886, Int 5910, Int 11055, Int 19071 , Int 1, Int 10, Int 55, Int 220, Int 714, Int 1983, Int 4860, Int 10725, Int 21615, Int 40192 , Int 1, Int 11, Int 66, Int 286, Int 1000, Int 2982, Int 7832, Int 18502, Int 39897, Int 79375 , Int 1, Int 12, Int 78, Int 364, Int 1364, Int 4345, Int 12166, Int 30602, Int 70213, Int 148588 , Int 1, Int 13, Int 91, Int 455, Int 1819, Int 6163, Int 18317, Int 48841, Int 118690, Int 265914 , Int 1, Int 14, Int 105, Int 560, Int 2379, Int 8541, Int 26845, Int 75595, Int 193830, Int 457925 ]