## 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 = fp.readlines()
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)
visited_line.add(curr_line)

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:
github.com/r0f1/adventofcode2020/b...

Viper

I never learned how to write shorter codes. Thanks for sharing. Your solution is neat.

DEV Community

## An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.