32 lines
948 B
Python
Raw Normal View History

2021-12-06 10:45:31 +01:00
# SPDX-License-Identifier: MIT
# Copyright (c) 2021 Akumatic
#
# https://adventofcode.com/2021/day/06
def read_file(filename: str = "input.txt") -> list:
with open(f"{__file__.rstrip('code.py')}{filename}", "r") as f:
return [int(x) for x in f.read().strip().split(",")]
def part1(vals: list, days: int = 80) -> int:
fishes = vals[:]
for _ in range(days):
for i in range(len(fishes)):
if fishes[i] == 0:
fishes[i] = 6
fishes.append(8)
else:
fishes[i] -= 1
return len(fishes)
def part2(vals: list, days: int = 256) -> int:
fishes = [vals.count(x) for x in range(9)]
for _ in range(days):
tmp = fishes[0]
fishes = fishes[1:] + [tmp]
fishes[6] += tmp
return sum(fishes)
if __name__ == "__main__":
vals = read_file()
print(f"Part 1: {part1(vals)}")
print(f"Part 2: {part2(vals)}")