Compare commits

...

2 Commits

Author SHA1 Message Date
dfa1a49c7b fix 2023-12-07 13:21:49 +01:00
5adb259376 opti 2023-12-07 12:57:22 +01:00

View File

@ -1,4 +1,4 @@
text: str = open("example.txt", "r").read() text: str = open("input.txt", "r").read()
_value: int = 0 _value: int = 0
@ -7,13 +7,13 @@ lines = text.splitlines()
CARDS = "AKQJT98765432" CARDS = "AKQJT98765432"
def get_same(string: str): def get_same(string: str):
sames = {"key": string} same = {"key": string}
for card in CARDS: for card in CARDS:
if string.count(card) != 0: if string.count(card) != 0:
bozo: list = sames.get(string.count(card), "") bozo: list = same.get(string.count(card), "")
bozo += (card) bozo += (card)
sames.update({string.count(card): bozo}) same.update({string.count(card): bozo})
return sames return same
sames = [] sames = []
for line in lines: for line in lines:
@ -22,6 +22,7 @@ for line in lines:
same.update({"value": int(bozo[1])}) same.update({"value": int(bozo[1])})
sames.append(same) sames.append(same)
#[print(same) for same in sames]
def get_highest(cards1, cards2, i): def get_highest(cards1, cards2, i):
if (cards1 == cards2): if (cards1 == cards2):
@ -46,7 +47,7 @@ def get_index(lst: [dict], key: str):
sort = [sames[0]] sort = [sames[0]]
for same in sames[1:]: for same in sames[1:]:
places = [] place = None
opponents: [dict] = sort.copy() opponents: [dict] = sort.copy()
for card_index in range(5, 0, -1): for card_index in range(5, 0, -1):
new = [] new = []
@ -57,22 +58,16 @@ for same in sames[1:]:
if (highest == 0): if (highest == 0):
new.append(opponent) new.append(opponent)
elif (highest == 1): elif (highest == 1):
places.append(get_index(sort, opponent.get("key"))) index = get_index(sort, opponent.get("key"))
place = index if place == None else min(place, index)
opponents = new opponents = new
if (places != []): if (place == None):
break place = len(sort)
if (places == []):
places = [len(sort)]
place = min(places)
sort.insert(place, same) sort.insert(place, same)
for i, line in enumerate(lines): for j, bozo in enumerate(sort):
key, value = line.split()
for j, bozo in enumerate(sort):
if (bozo.get("key", "") == key):
rank: int = (len(lines) - j) rank: int = (len(lines) - j)
_value += rank * bozo.get("value") _value += rank * bozo.get("value")
print(f'{rank}, {bozo.get("key")} {bozo.get("value")}') print(f'{rank} {bozo.get("key")} {bozo.get("value")}')
break
print(_value) print(_value)