Geneticist/Bioinformatician - Member of #UseGalaxy EU team - working on making reproducible computational biology accessible for everyone.

Other identities:

  • 9 Posts
  • 6 Comments
Joined 1 year ago
cake
Cake day: November 24th, 2023

help-circle

  • 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)