Files
python-aoc-2020/day08/part2.py
Sebastian Seedorf 525c2c91e6 Day 8
2020-12-08 15:22:23 +01:00

31 lines
915 B
Python

lines = list(map(lambda y: (y[0], int(y[1])), (x.strip().split() for x in open("input.txt"))))
length = len(lines)
for change_idx in range(length):
old_value = lines[change_idx]
if lines[change_idx][0] == 'nop':
lines[change_idx] = ('jmp', lines[change_idx][1])
elif lines[change_idx][0] == 'jmp':
lines[change_idx] = ('nop', lines[change_idx][1])
executed = set()
pos = 0
acc = 0
while True:
cmd, val = lines[pos]
executed.add(pos)
if cmd == 'nop':
pos += 1
elif cmd == 'acc':
acc += val
pos += 1
elif cmd == 'jmp':
pos += val
if pos in executed:
break
if pos >= length:
print('invalid index:', pos)
print('changed index:', change_idx)
print('current value:', acc)
break
lines[change_idx] = old_value