48 lines
965 B
Python
48 lines
965 B
Python
def find_pair_sum(number, series):
|
|
i = 0
|
|
j = len(series) - 1
|
|
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
|
|
|
|
|
|
def find_contiguous_sum(number, series):
|
|
current = 0
|
|
i = 0
|
|
j = 0
|
|
|
|
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):
|
|
for i in range(25, len(data)):
|
|
number = data[i]
|
|
if not find_pair_sum(number, data[i-25:i]):
|
|
return number
|
|
|
|
def solve_b(number, data):
|
|
series = find_contiguous_sum(number, data)
|
|
series.sort()
|
|
return series[0] + series[-1]
|
|
|
|
data = [int(line.strip()) for line in open('input')]
|
|
|
|
result = solve_a(data)
|
|
print(result)
|
|
print(solve_b(result, data))
|
|
|