my solutions for advent of code 2022
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.

85 lines
2.4 KiB

import math
class Monkey:
def __init__(self, items, inspect, divider, _true, _false):
self.inspected = 0
self.items = []
for x in items:
self.items.append(int(x))
self.divider = int(divider)
self._true = int(_true)
self._false = int(_false)
if '+' in inspect:
self.inspect_kind = 1
tempa, tempb = inspect.split('+ ')
self.inspect_amount = int(tempb)
elif inspect.endswith('old'):
self.inspect_kind = 3
else:
self.inspect_kind = 2
tempa, tempb = inspect.split('* ')
self.inspect_amount = int(tempb)
def inspect(self):
if self.items == []:
return
for x in range(len(self.items)):
self.inspected += 1
if self.inspect_kind == 1:
self.items[x] += self.inspect_amount
if self.inspect_kind == 2:
self.items[x] = self.items[x] * self.inspect_amount
if self.inspect_kind == 3:
self.items[x] = self.items[x] * self.items[x]
self.items[x] %= modulo
if self.items[x] % self.divider == 0:
monkeys[self._true].addItem(self.items[x])
else:
monkeys[self._false].addItem(self.items[x])
self.items = []
def addItem(self, item):
self.items.append(item)
def retInspect(self):
return self.inspected
with open('input11.txt','r') as f:
inp = f.read().splitlines(keepends=False)
monkeys = []
tempMain = []
monkeyBuisness = []
dividers = []
modulo = 1
for i in range(len(inp)):
tempMain.append(inp[i])
if inp[i] == '' or i == (len(inp) - 1):
tempa, tempb = tempMain[1].split(': ')
items = tempb.split(', ')
tempa, divider = tempMain[3].split('by ')
dividers.append(int(divider))
tempa, inspect = tempMain[2].split('= ')
tempa, _true = tempMain[4].split('monkey ')
tempa, _false = tempMain[5].split('monkey ')
newMonkey = Monkey(items, inspect, divider, _true, _false)
monkeys.append(newMonkey)
tempMain = []
for i in dividers:
modulo = modulo * i
for _ in range(10000):
for i in monkeys:
i.inspect()
for i in monkeys:
monkeyBuisness.append(i.retInspect())
monkeyBuisness.sort()
print(monkeyBuisness[-1]*monkeyBuisness[-2])