42 lines
1006 B
Python
42 lines
1006 B
Python
from lib import get_data, str_to_ints
|
|
|
|
|
|
def part_1(data):
|
|
xs = str_to_ints(data)
|
|
xs[1] = 12
|
|
xs[2] = 2
|
|
for i in range(0, len(xs), 4):
|
|
match xs[i]:
|
|
case 1:
|
|
xs[xs[i + 3]] = xs[xs[i + 1]] + xs[xs[i + 2]]
|
|
case 2:
|
|
xs[xs[i + 3]] = xs[xs[i + 1]] * xs[xs[i + 2]]
|
|
print(xs[0])
|
|
|
|
|
|
def part_2(data):
|
|
for noun in range(1, 101):
|
|
for verb in range(1, 101):
|
|
xs = str_to_ints(data)
|
|
xs[1] = noun
|
|
xs[2] = verb
|
|
for i in range(0, len(xs), 4):
|
|
match xs[i]:
|
|
case 1:
|
|
xs[xs[i + 3]] = xs[xs[i + 1]] + xs[xs[i + 2]]
|
|
case 2:
|
|
xs[xs[i + 3]] = xs[xs[i + 1]] * xs[xs[i + 2]]
|
|
if xs[0] == 19690720:
|
|
print(100 * noun + verb)
|
|
return
|
|
|
|
|
|
def main():
|
|
data = get_data(__file__)
|
|
part_1(data)
|
|
part_2(data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|