07_camelcards.py 749 B

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