Unable to load image

ADVENT OF CODE DAY 11: MONKEY BUSINESS :marseymonke:

Those FRICKING monkeys stole your stuff! Get it back! :soycry: :!marseymonke:

(Also, remember to leave a comment if you did something interesting :marseylove:)

35
Jump in the discussion.

No email address required.

Got a late start, fun problem

import numpy as np
def monkeyOp(num,x):
    if num == 0:
        return x*19
    elif num == 1:
        return x+1
    elif num == 2:
        return x+8
    elif num == 3:
        return x*x
    elif num == 4:
        return x+6
    elif num == 5:
        return x*17
    elif num == 6:
        return x+5
    elif num == 7:
        return x+3
def mOpTest(num,x):
    if num == 0:
        return x*19
    elif num == 1:
        return x+6
    elif num == 2:
        return x*x
    elif num == 3:
        return x+3
class Monkey:
    def __init__(self,string):
        lines = string.split('\n')
        self.monkeynum = int(lines[0].split(' ')[-1][:-1])
        self.items = [int(i) for i in lines[1].split(':')[-1].split(',')]
        self.test = int(lines[3].split(' ')[-1])
        self.ifTrue = int(lines[4].split(' ')[-1])
        self.ifFalse = int(lines[5].split(' ')[-1])
        self.inspecs = 0
    def test_result(self,num):
        if (num % self.test == 0):
            return self.ifTrue
        return self.ifFalse
    def doOp(self,x):
        return monkeyOp(self.monkeynum,x)
lcd = 7*2*19*3*13*11*5*17
f = open('AOC2022Day11.txt')
lines = f.read().strip().split('\n\n')
monkeys = [Monkey(s) for s in lines]
for _ in range(10000):
    for monkey in monkeys:
        for item in monkey.items:
            monkey.inspecs += 1
            level = monkey.doOp(item)
            #level = level //3
            level = level % lcd
            newM = monkey.test_result(level)
            monkeys[newM].items.append(level)
        monkey.items = []
lst = sorted([m.inspecs for m in monkeys])
print(lst)
print(lst[-1]*lst[-2])
Jump in the discussion.

No email address required.

>hardcoding

Jump in the discussion.

No email address required.

I didn't know about python's eval() function :marseycry:

Thankfully, hardcoding took like 2 min

Jump in the discussion.

No email address required.

Hardcoding sucks if you have bugs and want to switch between the provided example(s) and the actual problem.

Jump in the discussion.

No email address required.

don't worry too much, because eval mostly shouldn't be used, and it seems to be slow

idk if there's a way to do it without hardcoding but without using eval

Jump in the discussion.

No email address required.

Link copied to clipboard
Action successful!
Error, please refresh the page and try again.