/ Python / 2019 / 02.py
02.py
 1  from lib import *
 2  
 3  input = read_input(2019, 2)
 4  
 5  (*mem,) = map(int, input.strip().split(","))
 6  i = 0
 7  mem[1] = 12
 8  mem[2] = 2
 9  while i < len(mem):
10      if mem[i] == 99:
11          break
12      elif mem[i] == 1:
13          mem[mem[i + 3]] = mem[mem[i + 1]] + mem[mem[i + 2]]
14      elif mem[i] == 2:
15          mem[mem[i + 3]] = mem[mem[i + 1]] * mem[mem[i + 2]]
16      i += 4
17  print(mem[0])
18  (*mem,) = map(int, input.strip().split(","))
19  
20  
21  def simulate(a, b, mem):
22      i = 0
23      mem[1] = a
24      mem[2] = b
25      while i < len(mem):
26          if mem[i] == 99:
27              break
28          elif mem[i] == 1:
29              mem[mem[i + 3]] = mem[mem[i + 1]] + mem[mem[i + 2]]
30          elif mem[i] == 2:
31              mem[mem[i + 3]] = mem[mem[i + 1]] * mem[mem[i + 2]]
32          i += 4
33      return mem[0]
34  
35  
36  print(*[a * 100 + b for a in range(100) for b in range(100) if simulate(a, b, mem[:]) == 19690720])