Codepath

Poker Two Pair Hand

Unit 5 Session 2 (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

  • How can we determine if the player's hand qualifies as a "two-pair"?
    • We need to check if there are exactly two different ranks that each appear twice in the hand.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: Evaluate the player's hand to identify if there are two sets of cards where each set consists of two cards of the same rank.

1) Initialize a dictionary `rank_count` to keep track of how many times each rank appears in the hand. 2) Iterate over each card in `player_hand`, incrementing the count of its rank in `rank_count`. 3) Count how many ranks appear exactly twice using a counter `pairs_count`. 4) If `pairs_count` equals 2, return `True` indicating the hand has exactly two pairs. Otherwise, return `False`.

⚠️ Common Mistakes

  • Miscounting the pairs, potentially by not checking if each pair contains exactly two cards.
  • Incorrectly handling or iterating through the ranks, leading to inaccurate counts.

I-mplement

def is_two_pair(player_hand): # Create a dictionary to count occurrences of each rank rank_count = {} # Count the ranks in the hand for card in player_hand: if card.rank in rank_count: rank_count[card.rank] += 1 else: rank_count[card.rank] = 1 # Check for two different ranks each appearing exactly twice pairs_count = 0 for count in rank_count.values(): if count == 2: pairs_count += 1 # Return True if there are exactly two pairs return pairs_count == 2 
Fork me on GitHub