#1
|
|||
|
|||
7 Cards Hand Evaluators Using Full Lookup Table
Hi,
I'm in the middle of programming my own 7 Cards Hand Evaluator using the full lookup table, and I'd like to share some ideas and also see what other people think. The full table lookup that was first mentioned and implemented by mykey1961 and then was implemented and publicly made available by Ray Wooten with a C++ version, both in the great 7 Card Hand Evaluators started by Gullanian. These are the main ideas I have now: * Ray's implementation is implemented using the tools for the non table lookup evaluators, this includes tools that are very interesting but all they do is slow up the generation process, this includes things like sorting networks to sort the cards, generating a table of states to be compressed, and so on. The full table lookup solution is a different kind of beast that the normal 7 hands evaluator, and as such needs different tools. It does not need to sort anything, as it can generate all the combos in order. It also does not need to compute any combinadic, because as I just said it can generate the combos in order. I think my version will generate the whole table under one second. * There are a few more things I'd like to put in the table (probably will not be there on my first implementation). The first one is for the five and six cards states two more things, one is the current hand value (five or six cards), and the other one is the "best evolves to", that says which is the highest hand value that can be generated from this state. This I think will help a lot to evaluators doing enumerations, and it will also help partial analysis (like examining when a hand that was trailing got the lead after the flop. * The order of the table can matter in the final performance, we might play with the order of the states to improve the results. For example from XXXXY we only go to XXXXY or XXXXZ, so this should be continous states on the array. * I'm not sure but I think in the real world we might achieve diferent performaces for different "starting decks". The normal starting deck is 2222, that means 2x is 0, 2y is 1, 2z is 2, 2t is 3. The other starting decks I'm interested are Ax Ay Az At and Ax Kx Qx Jx, as I think most enumeration include more high enumerations that low enumerations. * Beside the norml "suits compression", there is some room for some rank compression on the six cards states. Full Houses with Kickers are PERMUT(13;3)=1716, but in only half of them the kicker can be used for the hand value (for example 88877 discards kickers 6 5 4 3 and 2), so it can be compressed to 858 states. Straights are 78, but it can be compressed to 18 states, 10 for straights and 8 for "straight with kicker" (straight with kicker is for example 6789T kicker Q), this is both for normal straights and flushes. Low cards on 6 cards flushes also can be discarded when they are not going to be part of the final hand value. For example 3 6789 Q discards the 2. And also 2345 78 discards the 2. Well these are my ideas, I'll post some more as I continue with the code (I'm already in the middle of generating state 5, and I already have more than 2000 lines of code). Regards ... |
|
|