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
|
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):
|
def part1(test_mode=False):
|
||||||
my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode)
|
my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode)
|
||||||
if test_mode:
|
if test_mode:
|
||||||
cruncher = NumberCruncher(5)
|
preamble = 5
|
||||||
else:
|
else:
|
||||||
cruncher = NumberCruncher(25)
|
preamble = 25
|
||||||
|
|
||||||
for i in my_input:
|
number_buffer = []
|
||||||
if not cruncher.isValidNextNumber(i):
|
for number in my_input:
|
||||||
return i
|
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
|
return 0
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user