blob: 639c36885d6ea565dcb2b0cb12703332a7089a02 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/usr/bin/env python3
from fileinput import input
from functools import cache
lines = [line.strip() for line in input()]
start = lines[0].index("S")
silver = 0
bs = {start}
for line in lines:
for b in bs.copy():
if line[b] == "^":
silver += 1
bs -= {b}
bs |= {b - 1, b + 1}
@cache
def tls(r: int, c: int) -> int:
if r == len(lines):
return 1
if lines[r][c] == "^":
return tls(r, c - 1) + tls(r, c + 1)
return tls(r + 1, c)
gold = tls(0, start)
print("silver:", silver)
print("gold:", gold)
|