-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path11-01.py
53 lines (48 loc) · 1.69 KB
/
11-01.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Monkey:
def __init__(self, items = None, transition = None, test = None, ifTrue = None, ifFalse = None) -> None:
self.items = items
self.transition = transition
self.test = test
self.ifTrue = ifTrue
self.ifFalse = ifFalse
monkeys = []
def make_lambda(op, val):
if op == "+":
return lambda old: old + (old if val == "old" else int(val))
else:
return lambda old: old * (old if val == "old" else int(val))
while True:
inputval = input()
if inputval == "": break
monkey = Monkey()
monkey.items = list(map(lambda x: int(x), input()[18:].split(", ")))
newFunc = input()[23:].split()
monkey.transition = make_lambda(*newFunc)
monkey.test = int(input()[21:])
monkey.ifTrue = int(input()[29:])
monkey.ifFalse = int(input()[30:])
monkeys.append(monkey)
input()
inspections = [0] * len(monkeys)
for i in range(20):
print(f"Round {i+1}:")
for j in range(len(monkeys)):
print(f" Monkey {j}:")
monkey = monkeys[j]
for item in monkey.items:
print(f" Item {item}:", end='')
item = monkey.transition(item)
print(f" New score={item};", end='')
item = item // 3
print(f" New score={item};", end='')
inspections[j] += 1
if item % monkey.test == 0:
monkeys[monkey.ifTrue].items.append(item)
print(f" True, to monkey {monkey.ifTrue}")
else:
monkeys[monkey.ifFalse].items.append(item)
print(f" False, to monkey {monkey.ifFalse}")
monkey.items.clear()
print(inspections)
inspections.sort()
print(inspections[-1] * inspections[-2])