with open("day11/input.txt") as f:
input = f.read().splitlines()Day 11
Part 1
- Read in input file
First 100 lines of input looks like this:
['Monkey 0:',
' Starting items: 92, 73, 86, 83, 65, 51, 55, 93',
' Operation: new = old * 5',
' Test: divisible by 11',
' If true: throw to monkey 3',
' If false: throw to monkey 4',
'',
'Monkey 1:',
' Starting items: 99, 67, 62, 61, 59, 98',
' Operation: new = old * old',
' Test: divisible by 2',
' If true: throw to monkey 6',
' If false: throw to monkey 7',
'',
'Monkey 2:',
' Starting items: 81, 89, 56, 61, 99',
' Operation: new = old * 7',
' Test: divisible by 5',
' If true: throw to monkey 1',
' If false: throw to monkey 5',
'',
'Monkey 3:',
' Starting items: 97, 74, 68',
' Operation: new = old + 1',
' Test: divisible by 17',
' If true: throw to monkey 2',
' If false: throw to monkey 5',
'',
'Monkey 4:',
' Starting items: 78, 73',
' Operation: new = old + 3',
' Test: divisible by 19',
' If true: throw to monkey 2',
' If false: throw to monkey 3',
'',
'Monkey 5:',
' Starting items: 50',
' Operation: new = old + 5',
' Test: divisible by 7',
' If true: throw to monkey 1',
' If false: throw to monkey 6',
'',
'Monkey 6:',
' Starting items: 95, 88, 53, 75',
' Operation: new = old + 8',
' Test: divisible by 3',
' If true: throw to monkey 0',
' If false: throw to monkey 7',
'',
'Monkey 7:',
' Starting items: 50, 77, 98, 85, 94, 56, 89',
' Operation: new = old + 2',
' Test: divisible by 13',
' If true: throw to monkey 4',
' If false: throw to monkey 0']
Generate list of monkeys
have them run rounds
compute monkey business
Finally the answer for part 1 given the input
monkeys = list(generate_monkeys(input, divisor=3))
monkeys = run_rounds(monkeys)
mbusiness = monkey_business(monkeys)
print(f'the correct answer for part 1 is {mbusiness}')the correct answer for part 1 is 120756
Part 2
lcm = extract_lcm(input)
monkeys = list(generate_monkeys(input,modulo=lcm, divisor=1))
monkeys = run_rounds(monkeys, rounds=10_000)
print('done!')done!
mbusiness2 = monkey_business(monkeys)
print(f'the correct answer for part 2 is {mbusiness2}')the correct answer for part 2 is 39109444654