Note that there are some explanatory texts on larger screens.

plurals
  1. POIs there a simpler way than this to calculate a straight in poker?
    primarykey
    data
    text
    <p>I have an algorithm for calculating whether a player's hand holds a straight in Texas Hold'em. It works fine, but I wonder if there is a simpler way to do it that does not involve array/string conversions, etc.</p> <p>Here's a simplified version of what I have. Say the player is dealt a hand that is a 52-element array of card values:</p> <pre><code>var rawHand = [1,0,0,0,0,0,0,0,0,0,0,0,0, //clubs 0,0,0,0,0,0,0,0,0,0,0,0,0, //diamonds 0,1,1,0,1,0,0,0,0,0,0,0,0, //hearts 0,0,0,1,0,0,0,0,1,0,0,0,0];//spades </code></pre> <p>A 1 represents a card in that value slot. The above hand has a 2-clubs, no diamonds, a 3-hearts, 4-hearts, and 6-hearts, a 5-spades and a 10-spades. Now I look at it to find a straight.</p> <pre><code>var suits = []; //array to hold representations of each suit for (var i=0; i&lt;4; i++) { var index = i*13; // commenting this line as I removed the rest of its use to simplifyy example //var hasAce = (rawHand[i+13]); //get a "suited" slice of the rawHand, convert it to a string representation //of a binary number, then parse the result as an integer and assign it to //an element of the "suits" array suits[i] = parseInt(rawHand.slice(index,index+13).join(""),2); } // OR the suits var result = suits[0] | suits[1] | suits[2] | suits[3]; // Store the result in a string for later iteration to determine // whether straight exists and return the top value of that straight // if it exists; we will need to determine if there is an ace in the hand // for purposes of reporting a "low ace" straight (i.e., a "wheel"), // but that is left out in this example var resultString = result.toString(2); //Show the result for the purposes of this example alert("Result: " + resultString); </code></pre> <p>The trick here is to OR the various suits so there is just one 2-to-Ace representation. Am I wrong in thinking there must be a simpler way to do this?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload