Merge branch 'master' of gitlab.com:Ryuuji159/advent-of-code
This commit is contained in:
@@ -1,20 +1,37 @@
|
|||||||
def is_sum(number, series):
|
def find_pair_sum(number, series):
|
||||||
for i in series:
|
i = 0
|
||||||
if (number - i) in series:
|
j = len(series) - 1
|
||||||
return True
|
series.sort()
|
||||||
|
|
||||||
|
current = series[i] + series[j]
|
||||||
|
|
||||||
|
while i < j:
|
||||||
|
current = series[i] + series[j]
|
||||||
|
if current == number: return True
|
||||||
|
|
||||||
|
if current < number: i += 1
|
||||||
|
if current > number: j -= 1
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def find_contiguous_sum(number, series):
|
def find_contiguous_sum(number, series):
|
||||||
for i in range(0, len(series)):
|
current = 0
|
||||||
for j in range(i, len(series)):
|
i = 0
|
||||||
if sum(series[i:j + 1]) == number:
|
j = 0
|
||||||
return series[i:j+1]
|
|
||||||
|
while current != number:
|
||||||
|
if current < number: j += 1
|
||||||
|
elif current > number: i += 1
|
||||||
|
current = sum(series[i:j])
|
||||||
|
|
||||||
|
return series[i:j]
|
||||||
|
|
||||||
|
|
||||||
def solve_a(data, length):
|
def solve_a(data):
|
||||||
for i in range(length, len(data)):
|
for i in range(25, len(data)):
|
||||||
number = data[i]
|
number = data[i]
|
||||||
if not is_sum(number, data[i - length:i]):
|
if not find_pair_sum(number, data[i-25:i]):
|
||||||
return number
|
return number
|
||||||
|
|
||||||
def solve_b(number, data):
|
def solve_b(number, data):
|
||||||
@@ -24,7 +41,7 @@ def solve_b(number, data):
|
|||||||
|
|
||||||
data = [int(line.strip()) for line in open('input')]
|
data = [int(line.strip()) for line in open('input')]
|
||||||
|
|
||||||
result = solve_a(data, 25)
|
result = solve_a(data)
|
||||||
print(result)
|
print(result)
|
||||||
print(solve_b(result, data))
|
print(solve_b(result, data))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user