day 9 p1 simplified
This commit is contained in:
parent
9391bc2b12
commit
31eeead0f7
43
day09.py
43
day09.py
@ -6,39 +6,28 @@ TEST_SOLUTION_PART1 = 127
|
||||
TEST_SOLUTION_PART2 = 62
|
||||
|
||||
|
||||
class NumberCruncher:
|
||||
def __init__(self, preamble):
|
||||
self.buffer = []
|
||||
self.preamble = preamble
|
||||
|
||||
def addNumber(self, number):
|
||||
self.buffer.append(number)
|
||||
if len(self.buffer) > self.preamble:
|
||||
self.buffer = self.buffer[1:]
|
||||
|
||||
def isValidNextNumber(self, number):
|
||||
if len(self.buffer) < self.preamble:
|
||||
return True
|
||||
|
||||
for combination in itertools.combinations(self.buffer, 2):
|
||||
if sum(combination) == number:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def part1(test_mode=False):
|
||||
my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode)
|
||||
if test_mode:
|
||||
cruncher = NumberCruncher(5)
|
||||
preamble = 5
|
||||
else:
|
||||
cruncher = NumberCruncher(25)
|
||||
preamble = 25
|
||||
|
||||
for i in my_input:
|
||||
if not cruncher.isValidNextNumber(i):
|
||||
return i
|
||||
number_buffer = []
|
||||
for number in my_input:
|
||||
if len(number_buffer) == preamble:
|
||||
found_sum = False
|
||||
for combination in itertools.combinations(number_buffer, 2):
|
||||
if sum(combination) == number:
|
||||
found_sum = True
|
||||
break
|
||||
|
||||
cruncher.addNumber(i)
|
||||
if not found_sum:
|
||||
return number
|
||||
|
||||
number_buffer.append(number)
|
||||
if len(number_buffer) > preamble:
|
||||
number_buffer = number_buffer[1:]
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user