|
@@ -0,0 +1,21 @@
|
|
|
|
|
+#!/usr/bin/env python3
|
|
|
|
|
+import sys
|
|
|
|
|
+from collections import Counter
|
|
|
|
|
+
|
|
|
|
|
+TYPES = ([1, 1, 1, 1, 1], [1, 1, 1, 2], [1, 2, 2],
|
|
|
|
|
+ [1, 1, 3], [2, 3], [1, 4], [5])
|
|
|
|
|
+
|
|
|
|
|
+def strength(hand, joker):
|
|
|
|
|
+ variations = (hand.replace('J', c) for c in '23456789TQKA') \
|
|
|
|
|
+ if joker and 'J' in hand else [hand]
|
|
|
|
|
+ ty = max(TYPES.index(sorted(Counter(v).values())) for v in variations)
|
|
|
|
|
+ scores = [('23456789TJQKA', 'J23456789TQKA')[joker].index(c) for c in hand]
|
|
|
|
|
+ return ty, scores
|
|
|
|
|
+
|
|
|
|
|
+def rank(hands, joker):
|
|
|
|
|
+ hands.sort(key=lambda h: strength(h[0], joker))
|
|
|
|
|
+ return sum((i + 1) * bid for i, (_, bid) in enumerate(hands))
|
|
|
|
|
+
|
|
|
|
|
+hands = [(hand, int(bid)) for hand, bid in map(str.split, sys.stdin)]
|
|
|
|
|
+print(rank(hands, False))
|
|
|
|
|
+print(rank(hands, True))
|