## DEV Community

Viper

Posted on • Updated on

# Advent of Code 2020: Python Solution Day 8

I know I can not be on even top 1000 but I love to solve challenges. Lets share your solution too. And the solution to day 8 is not that harder but kind of brute force has to be done. Link to the challenge is here. I have updated my notebook at this repository.

``````with open("day8.txt", "r") as fp:
lines = [line.rstrip() for line in lines]
# print(lines)

# challenge 1
def challenge1(lines):
curr_acc = 0
visited_line = set()
curr_line = 0
valid_sol = True
while True:

# viewed all lines and we got lucky, no loops
if len(lines)-1 == curr_line:
valid_sol = False

# for challenge 1 solution
if curr_line in visited_line:
valid_sol = False
return curr_acc, valid_sol

inst, acc = lines[curr_line].split(" ")
acc = int(acc)

if inst == "nop":
curr_line += 1
if inst == "acc":
curr_acc += acc
curr_line += 1
if inst == "jmp":
curr_line+=acc

# we got lucky
if valid_sol == False:
return curr_acc, True
return curr_acc, False
print("Current Accumulator: ", challenge1(lines)[0])

# challenge 2
def challenge2(lines):
curr_acc = 0
visited_line = []
curr_line = 0
new_lines = lines.copy()
for curr_line in range(1, len(new_lines)):
inst, acc = lines[curr_line].split(" ")
acc = int(acc)

if inst == "nop":
inst = "jmp"
elif inst == "jmp":
inst = "nop"

visited_line = []
new_lines = lines.copy()
new_lines[curr_line] = " ".join((inst, str(acc)))
acc, valid = challenge1(new_lines)
if valid:
return acc

print("Current Accumulator: ", challenge2(lines))
``````

I write blogs about Computer Vision projects on my GitHub page q-viper.github.io and if you got some time please share yours too.

## Top comments (2)

Florian Rohrer

Found a very similar solution: