From 542db4ef556d7b4cb83ae7a20aae12f91475e007 Mon Sep 17 00:00:00 2001 From: FrederikBaerentsen Date: Fri, 8 Dec 2023 20:49:41 +0100 Subject: [PATCH] Better version of 2023-12-07 p1 --- 2023/day7/p2_1.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 2023/day7/p2_1.py diff --git a/2023/day7/p2_1.py b/2023/day7/p2_1.py new file mode 100644 index 0000000..9195981 --- /dev/null +++ b/2023/day7/p2_1.py @@ -0,0 +1,47 @@ +import sys +from pprint import pp +from collections import Counter + +input_f = sys.argv[1] + +cards = {} + +with open(input_f) as file: + for line in file: + tmp = line.split() + cards[tmp[0]] = int(tmp[1]) + +def value(card): + return 'AKQJT98765432'.index(card) + +def score(card): + tmp = sorted(list(Counter(card).values()),reverse=True) + if tmp == [5]: + return 1 + elif tmp == [4,1]: + return 2 + elif tmp == [3,2]: + return 3 + elif tmp == [3,1,1]: + return 4 + elif tmp == [2,2,1]: + return 5 + elif tmp == [2,1,1,1]: + return 6 + elif tmp == [1,1,1,1,1]: + return 7 + + +scores = [] +tmp = [] +for i in cards: + tmp.append(tuple((score(i),tuple(value(c) for c in i),i))) + + +tmp = sorted(tmp, key=lambda x: (x[0], x[1]),reverse=True) +result = 0 + +for idx,i in enumerate(tmp): + result += cards[i[2]]*(idx+1) +print() +print(result)