Poker Two Pair Hand - codepath/compsci_guides GitHub Wiki

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