Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Problem 383. Poker Series 07: IsTwoPair

Created by Doug Hull

The Poker Series consists of many short, well defined functions that when combined will lead to complex behavior. Our goal is to create a function that will take two hand matrices (defined below) and return the winning hand.

A hand matrix is 4x13 binary matrix showing the cards that are available for a poker player to use. This program will be expandable to use 5 card hands through 52 card hands! Suits of the cards are all equally ranked, so they only matter for determination of flushes (and straight flushes).

For each challenge, you should feel free to reuse your solutions from prior challenges in the series. To break this problem into smaller pieces, I am likely making architectural choices that are sub-optimal for speed. This is being done as an exercise in coding. The larger goal of this project can likely be done in a much faster, but more obscure way.

--------

A two pair is two pairs of cards of the same rank (column). The Ace (first column) is highest. The columns represent A, 2, 3, ... K. The next highest card is the kicker. If the kicker also form three of a kind with a pair, it is still considered two pair for the purposes of this function. Four of a kind is still two pair also. (I got two pair, a pair of Aces and another Pair of Aces!)

This hand matrix:

0 1 0 0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 1 1 0 0 1 0 0 0 0

represents a two pair, so the return value from the function is TRUE.

This hand matrix does not:

0 1 1 0 1 1 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 1 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0

so the return value should be FALSE.

This hand matrix does represent a two pair

0 0 0 0 0 0 0 0 0 1 0 0 1 
0 0 1 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 1 0 0 0 
0 0 0 0 0 1 0 0 0 0 0 0 0

Remember, hand matrices can contain any number of 1's from 0 to 52.

0 0 0 0 0 1 0 0 0 0 0 0 0 
0 1 0 0 1 1 1 0 0 0 0 1 0
0 1 0 1 0 0 0 0 0 1 0 0 0 
0 0 1 0 0 0 0 0 0 0 0 1 0 

Would be TRUE for this function.

A second output argument should come from this function. It is a usedCards Matrix. It is of the same form as the hand matrix, but it only shows the cards used to make the three of a kind. If more than one two pair can be made, return the higher ranking one (the one with the highest rank. Ace being the highest). If different suits are possible for the same pair, return the ones higher up in the matrix, same for kickers. If the two pair happens to also be a four of a kind or full house, it still meets the defintion and should be returned.

Problem Group

17 solvers submitted 55 solutions (3.24 solutions/solver).

Loading Solution Map...