|
|
|
hands = [l.split() for l in open("input.txt", 'r').read().splitlines()]
|
|
|
|
sort1 = [[] for i in range(7)]
|
|
|
|
sort2 = [[] for i in range(7)]
|
|
|
|
|
|
|
|
for hand in hands:
|
|
|
|
handSet = {}
|
|
|
|
for card in set(hand[0]):
|
|
|
|
handSet[card] = hand[0].count(card)
|
|
|
|
handSetLen = len(handSet)
|
|
|
|
jCount = hand[0].count('J')
|
|
|
|
|
|
|
|
if handSetLen == 1:
|
|
|
|
sort1[0].append(hand) # 5oak
|
|
|
|
sort2[0].append(hand)
|
|
|
|
elif handSetLen == 2:
|
|
|
|
for card in handSet:
|
|
|
|
if handSet[card] == 4:
|
|
|
|
sort1[1].append(hand) # 4oak
|
|
|
|
sort2[0 if jCount > 0 else 1].append(hand)
|
|
|
|
break
|
|
|
|
elif handSet[card] == 3:
|
|
|
|
sort1[2].append(hand) # fh
|
|
|
|
sort2[0 if jCount > 0 else 2].append(hand)
|
|
|
|
break
|
|
|
|
elif handSetLen == 3:
|
|
|
|
for card in handSet:
|
|
|
|
if handSet[card] == 3:
|
|
|
|
sort1[3].append(hand) # 3oak
|
|
|
|
sort2[1 if jCount > 0 else 3].append(hand)
|
|
|
|
break
|
|
|
|
elif handSet[card] == 2:
|
|
|
|
sort1[4].append(hand) # 2pair
|
|
|
|
sort2[(2 if jCount == 1 else 1) if jCount > 0 else 4].append(hand)
|
|
|
|
break
|
|
|
|
elif handSetLen == 4:
|
|
|
|
for card in handSet:
|
|
|
|
if handSet[card] == 2:
|
|
|
|
sort1[5].append(hand) # 1pair
|
|
|
|
sort2[3 if jCount > 0 else 5].append(hand)
|
|
|
|
break
|
|
|
|
elif handSetLen == 5:
|
|
|
|
for card in handSet:
|
|
|
|
sort1[6].append(hand) # highcard
|
|
|
|
sort2[5 if jCount > 0 else 6].append(hand)
|
|
|
|
|
|
|
|
|
|
|
|
cards1 = "AKQJT98765432"[::-1]
|
|
|
|
cards2 = "AKQT98765432J"[::-1]
|
|
|
|
|
|
|
|
def findScore(cards, hands):
|
|
|
|
score = 0
|
|
|
|
scoreIndex = 1
|
|
|
|
for i in range(7):
|
|
|
|
sortTemp = {}
|
|
|
|
for hand in hands[-i-1]:
|
|
|
|
converted = ""
|
|
|
|
for c in hand[0]:
|
|
|
|
converted += hex(cards.find(c))[2:]
|
|
|
|
sortTemp[int('0x' + converted, 16)] = int(hand[1])
|
|
|
|
|
|
|
|
for index in sorted(sortTemp):
|
|
|
|
score += scoreIndex * sortTemp[index]
|
|
|
|
scoreIndex += 1
|
|
|
|
return score
|
|
|
|
|
|
|
|
print(findScore(cards1, sort1))
|
|
|
|
print(findScore(cards2, sort2))
|