summaryrefslogtreecommitdiffstats
path: root/19/py/d02.py
blob: 6b5aa0a075ddab895d1d7929e7f58ec552ae6105 (plain) (blame)
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
import sys

def pt1(input):
    program = [int(x) for x in input[0].split(",")]

    memory = program.copy()
    memory[1] = 12
    memory[2] =  2

    pointer = 0
    while True:
        if memory[pointer] == 99:
            break
        elif memory[pointer] == 1:
            memory[memory[pointer+3]] = memory[memory[pointer+1]] + memory[memory[pointer+2]]
        elif memory[pointer] == 2:
            memory[memory[pointer+3]] = memory[memory[pointer+1]] * memory[memory[pointer+2]]
        pointer += 4
    return memory[0]

def pt2(input):
    program = [int(x) for x in input[0].split(",")]

    for n in range(100):
        for v in range(100):
            memory = program.copy()
            memory[1] = n
            memory[2] = v

            pointer = 0
            while True:
                if memory[pointer] == 99:
                    break
                elif memory[pointer] == 1:
                    memory[memory[pointer+3]] = memory[memory[pointer+1]] + memory[memory[pointer+2]]
                elif memory[pointer] == 2:
                    memory[memory[pointer+3]] = memory[memory[pointer+1]] * memory[memory[pointer+2]]
                pointer += 4
            if memory[0] == 19690720:
                return (n, v, n*100 + v)

if __name__ == "__main__":
    import cProfile

    input = open("../input/02", "r").readlines()
    cProfile.run("pt1(input)")
    cProfile.run("pt2(input)")
    print(pt1(input))
    print(pt2(input))