This challenge is the easiest one I encountered on this season. And I was able to find a working algorithm. Still I am not even on top 7k. I started with copying test example and pasting on day9_test.txt
and my input on day9.txt
both are at same directory as my notebook is.
Lets share your solution too.
Challenge 1
with open("day9.txt", "r") as fp:
lines = [int(line.rstrip()) for line in fp.readlines()]
# lines
def challenge1(codes, premable):
previous_stack = []
i = 0
start = 0
end = start+premable
curr_index = premable
while curr_index < len(codes)-1:
stack = codes[start:end]
if curr_index > len(stack)-1:
start+=1
end+=1
valid = False
for i in stack[:-1]:
for j in stack[1:]:
#print(codes[curr_index], i, j)
if i+j == codes[curr_index]:
valid = True
break
else:
valid == False
if valid:
break
if valid == False:
return codes[curr_index]
curr_index+=1
# print(stack)
# break
challenge1(lines, 25)
Challenge 2
Used NumPy for taking sum faster.
import numpy as np
def challenge2(codes, invalid_num):
contigous_list = []
for i in range(0, len(codes)-1):
for j in range(1, len(codes)-1):
stack = np.array(codes[i:j])
if np.sum(stack) == invalid_num:
print(stack, stack.min()+stack.max())
# print(stack)
challenge2(lines, challenge1(lines, 25))
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 (3)
You can use class (OOP style) to get better management of your code and make it more readable. Here is my solution
It is so neat an clear. Thank you for sharing.
You are welcome