def four_of_a_kind(p1, p2) -> int: if get_keys_of_value(Card.numbers_count(p1), 4) > get_keys_of_value(Card.numbers_count(p2), 4): return 1 elif get_keys_of_value(Card.numbers_count(p1), 4) < get_keys_of_value(Card.numbers_count(p2), 4): return 2 # else, tie in four, check the 5th card return high_card(p1, p2)
def three_of_a_kind(p1, p2) -> int: if get_keys_of_value(Card.numbers_count(p1), 3) > get_keys_of_value(Card.numbers_count(p2), 3): return 1 elif get_keys_of_value(Card.numbers_count(p1), 3) < get_keys_of_value(Card.numbers_count(p2), 3): return 2 # else, three is tied return high_card(p1, p2)
def two_pair(p1, p2) -> int: if get_keys_of_value(Card.numbers_count(p1), 2) > get_keys_of_value(Card.numbers_count(p2), 2): return 1 elif get_keys_of_value(Card.numbers_count(p1), 2) < get_keys_of_value(Card.numbers_count(p2), 2): return 2 # else, tie in both pairs return high_card(p1, p2)
def pair(p1, p2) -> int: if get_keys_of_value(Card.numbers_count(p1), 2) > get_keys_of_value(Card.numbers_count(p2), 2): return 1 elif get_keys_of_value(Card.numbers_count(p1), 2) < get_keys_of_value(Card.numbers_count(p2), 2): return 2 # else, pair is tied return high_card(p1, p2)
def full_house(p1, p2) -> int: if get_keys_of_value(Card.numbers_count(p1), 3) > get_keys_of_value(Card.numbers_count(p2), 3): return 1 elif get_keys_of_value(Card.numbers_count(p1), 3) < get_keys_of_value(Card.numbers_count(p2), 3): return 2 # else, tie in threes, check pairs if get_keys_of_value(Card.numbers_count(p1), 2) > get_keys_of_value(Card.numbers_count(p2), 2): return 1 elif get_keys_of_value(Card.numbers_count(p1), 2) < get_keys_of_value(Card.numbers_count(p2), 2): return 2 # else, complete tie return 0
def pair(cards) -> bool: return max(Card.numbers_count(cards).values()) == 2
def two_pair(cards) -> bool: n = list(Card.numbers_count(cards).values()) return n == [2, 2, 1] or n == [2, 1, 2] or n == [1, 2, 2]
def three_of_a_kind(cards) -> bool: return max(Card.numbers_count(cards).values()) == 3
def full_house(cards) -> bool: n = Card.numbers_count(cards) if len(n.keys()) == 2: values = set(n.values()) return len(values.difference({2, 3})) == 0