Skip to content

Commit c387bed

Browse files
committed
[py] 2023:04: Solve part2
1 parent 685eb4c commit c387bed

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

2023/day04/part2.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
with open("input", "r") as input_file:
2+
input_lines: [str] = [a.strip() for a in input_file.read().strip().split("\n")]
3+
4+
card_map: dict[int, (list[int], list[int])] = {}
5+
for input_line in input_lines:
6+
id_part, card = input_line.split(": ")
7+
card_id = int(id_part.split()[1])
8+
9+
winner_str, owned_str = card.split(" | ")
10+
winners: [int] = [int(a) for a in winner_str.split()]
11+
owneds: [int] = [int(a) for a in owned_str.split()]
12+
13+
card_map[card_id] = (winners, owneds)
14+
15+
win_map: dict[int, list[int]] = {}
16+
for card_id in card_map.keys():
17+
card: ([int], [int]) = card_map[card_id]
18+
19+
winnerc: int = 0
20+
for winning in card[0]:
21+
if winning in card[1]:
22+
winnerc += 1
23+
24+
won_clones: [int] = []
25+
for i in range(winnerc):
26+
won_clones.append(card_id + i + 1)
27+
win_map[card_id] = won_clones
28+
29+
owned_cards: dict[int, int] = dict([(i, 1) for i in card_map.keys()])
30+
for card_id in card_map.keys():
31+
for won_clone_id in win_map[card_id]:
32+
owned_cards[won_clone_id] += owned_cards[card_id]
33+
34+
solution: int = sum(owned_cards.values())
35+
print(f"SOLVE: {solution}")

0 commit comments

Comments
 (0)