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)])
Lets Share Your Solution too.
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 (7)
print(sum(resb.values()))
Part One
This is very short. And absolutely tricky. Thanks for sharing.
I really liked the part2 implementation, a subtle dp.
Yeah it is so dope.
Thank you for sharing this! I got "strong inspiration" (read copied 😅) your part 2 solution. My solution in Github.
Did u have a difference of 2 in part1 ?