DEV Community is a community of 755,328 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Viper

Posted on

Advent of Code 2020: Python Solution Day 10

I nearly forgot about doing the challenge. Part one was easy and part two was bit tricky so I did wrong at first and got help from this repo. Again I tried it first on test input and only then on real one. My solution is at this repository.

Part one

``````with open("day10.txt", "r") as fp:
lines = [int(line.rstrip()) for line in fp.readlines()]

one_jolt = 0
two_jolt = 0
three_jolt = 0
outlet_rating = 0
lines.append(max(lines)+3) # because max jolt is added

while True:
#print(1 in lines)
if (outlet_rating + 1) in lines:
one_jolt+=1
outlet_rating += 1
elif outlet_rating+2 in lines:
two_jolt+=1
elif (outlet_rating + 3) in lines:
three_jolt += 1
outlet_rating+=3
else:
break
print("Part 1 answer is ", one_jolt*three_jolt)
``````

Part two

``````# part 2
sol = {0:1}
for line in sorted(lines):
sol[line] = 0
if line - 1 in sol:
sol[line]+=sol[line-1]
if line - 2 in sol:
sol[line]+=sol[line-2]
if line - 3 in sol:
sol[line]+=sol[line-3]

print(sol[max(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.

Discussion (8)

``````data = sorted([int(i) for i in  puzzle.input_data.split(lf)])

#heads of paths counted over all paths.
resb={0:1}
for i in range(len(data)-1):
# sum of all paths so far
value = sum(resb.values())
# next number differs by3 ? all paths apply n
if data[i+1]-data[i]==3:
resb={data[i]:value}
else:
try:
# applying is a must for a path with head 3 lower than n
# as we know from part 1 - a diff of 2 is not there
resb[data[i]-3]=0
except:
pass
resb[data[i]]=value
``````

print(sum(resb.values()))

Part One

``````data = sorted([int(i) for i in  puzzle.input_data.split(lf)])
r={1:0,2:0,3:0}
s=0
for i in data:
r[i-s]+=1
s=i
print(r[1]*(r[3]+1))
``````
Viper

This is very short. And absolutely tricky. Thanks for sharing.

I really liked the part2 implementation, a subtle dp.

Viper

Yeah it is so dope.

thetalent

Did u have a difference of 2 in part1 ?

Philip Purwoko

I don't

Laura Ojala (she/they)

Thank you for sharing this! I got "strong inspiration" (read copied ðŸ˜…) your part 2 solution. My solution in Github.