- 
                Notifications
    You must be signed in to change notification settings 
- Fork 266
Poker Two Pair Hand
        LeWiz24 edited this page Aug 26, 2025 
        ·
        2 revisions
      
    Unit 5 Session 2 (Click for link to problem statements)
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.
 
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`.- 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.
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