0

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?

you are viewing a single comment's thread
view the rest of the comments
[-] zerodivision@mander.xyz 1 points 8 months ago* (last edited 8 months ago)

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)

this post was submitted on 07 Dec 2023
0 points (50.0% liked)

Advent Of Code

736 readers
1 users here now

An unofficial home for the advent of code community on programming.dev!

Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

AoC 2023

Solution Threads

M T W T F S S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25

Rules/Guidelines

Relevant Communities

Relevant Links

Credits

Icon base by Lorc under CC BY 3.0 with modifications to add a gradient

console.log('Hello World')

founded 1 year ago
MODERATORS