Skip to content

Commit a87ca07

Browse files
authored
add solution for 2022/11 part a
1 parent ab46b7e commit a87ca07

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

2022/11.py

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from dataclasses import dataclass
2+
3+
from aocd.models import Puzzle
4+
5+
puzzle = Puzzle(2022, 11)
6+
input_data = puzzle.input_data.split("\n\n")
7+
8+
9+
@dataclass(order=True)
10+
class Monkey:
11+
items: list[int]
12+
operation: str
13+
divisible_by: int
14+
if_true: int
15+
if_false: int
16+
inspected_items: int = 0
17+
18+
19+
def parse():
20+
monkeys = []
21+
for monkey in input_data:
22+
monkey = monkey.splitlines()
23+
monkeys.append(
24+
Monkey(
25+
items=[int(i) for i in monkey[1].split(":")[1].split(", ")],
26+
operation=monkey[2].split("= ")[1],
27+
divisible_by=int(monkey[3].split("by ")[1]),
28+
if_true=int(monkey[4][-1]),
29+
if_false=int(monkey[5][-1]),
30+
)
31+
)
32+
return monkeys
33+
34+
35+
def part_a():
36+
monkeys: list[Monkey] = parse()
37+
for round in range(20):
38+
for monkey in monkeys:
39+
for item in monkey.items:
40+
monkey.inspected_items += 1
41+
old = item
42+
item = eval(monkey.operation) // 3
43+
if item % monkey.divisible_by == 0:
44+
monkeys[monkey.if_true].items.append(item)
45+
else:
46+
monkeys[monkey.if_false].items.append(item)
47+
monkey.items = []
48+
print(round)
49+
monkeys.sort(key=lambda m: m.inspected_items, reverse=True)
50+
return monkeys[0].inspected_items * monkeys[1].inspected_items
51+
52+
53+
if __name__ == "__main__":
54+
puzzle.answer_a = part_a()

0 commit comments

Comments
 (0)