You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

67 lines
2.1 KiB

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