poker card game revisited (code included)
Erik Max Francis
max at alcyone.com
Wed Jun 8 04:34:16 EDT 2005
flupke wrote:
> Which projects are you talking about? I only found a library in c to
> evaluat ranks but i didn't find the code to be very understandable.
pokersource is the main was I was thinking about, yes.
> With histogram do you mean something like this:
> Card hand: 2 clubs, 3 diamonds, 10 of diamonds, 4 of hearts, 3 of hearts
>
> Histogram 1: list [2,3,4,10]
> 2 --------------------- 14
> Histogram 2: list [1,2,1,0,0,0,0,0,1,0,0,0,0]
> or
> list [1,2,1,1]
> so index 0 is count of rank at index 0 of Histogram 1
> index 1 is count of rank at index 1 of Histogram 1
Histograms usually involve putting things in bins and counting the
number by bin. Here the bins are just the ranks of the cards, and so
you're counting the frequency of the ranks. Once that's done, you want
to arrange the frequencies into a mapping of its own, which points to
the list of ranks that have that frequency. That way you can easily
pick things off: If there is a hit in the four bin, you have quads. If
there's a hit in the three bin and either another in the three or one in
the two bin, you have a boat. If there's a hit in the three bin but
_not_ another in three or two, then it's trips. And so on.
> As for straights, if i understand correctly, you make all possible
> straights of the cards in the hand and then see if one matches?
Not quite. You break down the cards by what matters -- ranks and suits
-- and then make sets based on these. Then, standing by, you have the
sets of valid straights (by rank), and then to test for straights, you
iterate through the straight sets and make intersections with the rank
set for the hand in question. If the intersection is the same as the
straight set, then it's a straight. (Do this by reverse order of the
relative values of the straights, and stop when you find the first one,
to get the highest straight.) The most efficient way to do this is with
a bitmask, so that's how it's usually done.
--
Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
San Jose, CA, USA && 37 20 N 121 53 W && AIM erikmaxfrancis
Love is the wisdom of the fool and the folly of the wise.
-- Samuel Johnson
More information about the Python-list
mailing list