Untitled
unknown
python
2 years ago
1.3 kB
5
Indexable
import fileinput from collections import defaultdict from functools import cmp_to_key def hand_to_nums(hand): hist = defaultdict(int) js = 0 for c in hand: if c == '0': js += 1 else: hist[c] += 1 str_counts = "" for cnt in sorted(hist.values(), reverse=True): str_counts += str(cnt) cnts_transformed = "" total_cnt = 0 for cnt in str_counts: cnt = int(cnt) if js != 0: diff = min(js, 5 - cnt) cnt += diff js -= diff cnts_transformed += str(cnt) if js != 0: cnts_transformed += str(js) return cnts_transformed def compare(a, b): a_num, b_num = hand_to_nums(a[0]), hand_to_nums(b[0]) if a_num < b_num: return -1 elif b_num < a_num: return 1 else: if a[0] < b[0]: return -1 return 1 mapping = { 'A':'m', 'K':'l', 'Q':'k', 'J':'j', 'T':'i', '9':'h', '8':'g', '7':'f', '6':'e', '5':'d', '4':'c', '3':'b', '2':'a', 'J':'0' } translator = str.maketrans(mapping) hands = [] for line in fileinput.input(): hand, bid = line.split() hand = hand.translate(translator) hands.append((hand, int(bid))) hands = sorted(hands, key=cmp_to_key(compare)) win = 0 for i, hand in enumerate(hands): win += (i + 1)*hand[1] print(win)
Editor is loading...
Leave a Comment