47
day06/day06.py
Executable file
47
day06/day06.py
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
from typing import Sequence
|
||||
from copy import deepcopy
|
||||
|
||||
|
||||
def part1(fish: Sequence[int], count: int):
|
||||
for i in range(count):
|
||||
new = []
|
||||
for f in fish:
|
||||
if f == 0:
|
||||
new += [8]
|
||||
f = 7
|
||||
f -= 1
|
||||
new += [f]
|
||||
fish = new
|
||||
print(len(fish))
|
||||
|
||||
|
||||
def part2(init: Sequence[int], count: int):
|
||||
# This is a mapping for the number of fish by index, 0-8
|
||||
fish = [0] * 9
|
||||
for i in init:
|
||||
fish[i] += 1
|
||||
# Go through each day, rotating everything to the left
|
||||
for _ in range(count):
|
||||
zeroes = fish[0]
|
||||
# rotate
|
||||
for i in range(1, len(fish)):
|
||||
fish[i - 1] = fish[i]
|
||||
# position 8
|
||||
fish[len(fish) - 1] = zeroes
|
||||
# position 6
|
||||
fish[len(fish) - 3] += zeroes
|
||||
print(sum(fish))
|
||||
|
||||
|
||||
fish = [int(state) for state in sys.stdin.readline().strip().split(",") if state]
|
||||
|
||||
print("Part 1 (80 days)")
|
||||
# part1(fish, 80)
|
||||
# Part 2 function does the same thing except much faster
|
||||
part2(fish, 80)
|
||||
print(len(fish))
|
||||
|
||||
print("Part 2 (256 days)")
|
||||
part2(fish, 256)
|
||||
Reference in New Issue
Block a user