ho day8 moest nog
This commit is contained in:
58
day8/day8.py
58
day8/day8.py
@@ -1,3 +1,6 @@
|
|||||||
|
import copy
|
||||||
|
|
||||||
|
|
||||||
def part1():
|
def part1():
|
||||||
file = open("input.txt")
|
file = open("input.txt")
|
||||||
|
|
||||||
@@ -30,8 +33,61 @@ def part1():
|
|||||||
|
|
||||||
print("Part 1: %d" % acc)
|
print("Part 1: %d" % acc)
|
||||||
|
|
||||||
|
|
||||||
|
def brute(i, instructions):
|
||||||
|
op = instructions[i]['op']
|
||||||
|
if op == 'nop':
|
||||||
|
instructions[i]['op'] = 'jmp'
|
||||||
|
elif op == 'jmp':
|
||||||
|
instructions[i]['op'] = 'nop'
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
finger = 0
|
||||||
|
acc = 0
|
||||||
|
|
||||||
|
while not instructions[finger]['visited']:
|
||||||
|
op = instructions[finger]['op']
|
||||||
|
arg = instructions[finger]['arg']
|
||||||
|
instructions[finger]['visited'] = True
|
||||||
|
|
||||||
|
if op == 'nop':
|
||||||
|
finger += 1
|
||||||
|
continue
|
||||||
|
elif op == 'jmp':
|
||||||
|
finger += arg
|
||||||
|
elif op == 'acc':
|
||||||
|
acc += arg
|
||||||
|
finger += 1
|
||||||
|
|
||||||
|
if instructions[len(instructions) - 1]['visited']:
|
||||||
|
return acc
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def part2():
|
def part2():
|
||||||
print("Part 2: %d")
|
file = open("input.txt")
|
||||||
|
|
||||||
|
instructions = []
|
||||||
|
|
||||||
|
for line in file:
|
||||||
|
args = line.strip().split(" ")
|
||||||
|
instructions.append({
|
||||||
|
'op': args[0],
|
||||||
|
'arg': int(args[1]),
|
||||||
|
'visited': False
|
||||||
|
})
|
||||||
|
|
||||||
|
acc = 0
|
||||||
|
for i in range(0, len(instructions)):
|
||||||
|
op = instructions[i]['op']
|
||||||
|
if op == 'jmp' or op == 'nop':
|
||||||
|
acc = brute(i, copy.deepcopy(instructions))
|
||||||
|
if acc > 0:
|
||||||
|
break
|
||||||
|
|
||||||
|
print("Part 2: %d" % acc)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user