49 lines
1.0 KiB
Python
49 lines
1.0 KiB
Python
def valid(num, previous):
|
|
for i in range(0, len(previous)):
|
|
for j in range(0, len(previous)):
|
|
if previous[i] + previous[j] == num:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def part1():
|
|
file = open("input.txt")
|
|
|
|
preamble_length = 25
|
|
lines = [int(i) for i in file.readlines()]
|
|
queue = []
|
|
|
|
for i in range(0, preamble_length):
|
|
number = lines[i]
|
|
queue.append(number)
|
|
|
|
for i in range(preamble_length, len(lines)):
|
|
number = int(lines[i])
|
|
|
|
if not valid(number, queue):
|
|
break
|
|
|
|
queue.pop(0)
|
|
queue.append(number)
|
|
|
|
print("Part 1: %d" % number)
|
|
|
|
return number, lines
|
|
|
|
|
|
def part2():
|
|
number, lines = part1()
|
|
|
|
for size in range(2, len(lines)):
|
|
for finger in range(0, len(lines) - size):
|
|
subset = lines[finger:(finger + size)]
|
|
if sum(subset) == number:
|
|
print("Part 2: %d" % (min(subset) + max(subset)))
|
|
return
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# part1()
|
|
part2()
|