mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 21:00:31 +01:00
Implement 2019 day 16 part 2
This commit is contained in:
@@ -27,7 +27,31 @@ def simulate(numbers: List[int]) -> str:
|
||||
return ''.join(str(s) for s in numbers[:8])
|
||||
|
||||
|
||||
def simulate2(numbers: List[int]) -> str:
|
||||
numbers = numpy.tile(numpy.array(numbers, dtype=numpy.int), 10000)
|
||||
starting_index = 0
|
||||
|
||||
for n in numbers[:7]:
|
||||
starting_index *= 10
|
||||
starting_index += n
|
||||
|
||||
assert starting_index > len(numbers) / 2
|
||||
|
||||
numbers = numbers[starting_index:]
|
||||
|
||||
for _ in range(100):
|
||||
numbers = numpy.abs(numpy.flip(numpy.cumsum(numpy.flip(numbers)))) % 10
|
||||
|
||||
return ''.join(str(s) for s in numbers[:8])
|
||||
|
||||
|
||||
def part1(data: TextIO) -> str:
|
||||
numbers = read_input(data)
|
||||
|
||||
return simulate(numbers)
|
||||
|
||||
|
||||
def part2(data: TextIO) -> str:
|
||||
numbers = read_input(data)
|
||||
|
||||
return simulate2(numbers)
|
||||
|
||||
Reference in New Issue
Block a user