The instructions for part 2 are missing info about how to handle the Four Of A Kind and a joker case. Wasted quite some time because I assumed that the remaining joker would remain unused, but turns out it turns your deck into Five Of A Kind.
Did everybody else just expect this?
Here’s a (hopefully correct) solution (in Python) where a Five Of A Kind hand is not allowed:
Code
i = open('day7_in.txt') from collections import Counter card_values = { 'A': 14, 'K': 13, 'Q': 12, 'J': 0, 'T': 10 } deques = [] for line in i: if not line.strip(): continue cards, bid = line.split() cards_repr = [int(card_values.get(card, card)) for card in cards] counts = Counter(card for card in cards if card != 'J') deque_type = [times for card, times in counts.most_common(5)] jokers_left = cards.count('J') for i in range(jokers_left): for j, n in enumerate(deque_type): if n < 4: deque_type[j] += 1 jokers_left -= 1 break if jokers_left: if jokers_left <= 4: deque_type.append(jokers_left) else: deque_type += [4, 1] deques.append((deque_type, cards_repr, int(bid), cards)) deques.sort() ans = 0 for n, d in enumerate(deques, 1): ans += n*d[2] print(ans)