1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
from collections import Counter
from utils import open_day
import numpy as np
fish = Counter(map(int, open_day(6).read().split(',')))
fish = np.array([fish[i] for i in range(9)])
mat = np.array([
[0, 0, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 0]
])
print(sum(np.matmul(fish, np.linalg.matrix_power(mat, 80))))
print(sum(np.matmul(fish, np.linalg.matrix_power(mat, 256))))
|