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
|
from fileinput import input
grid = {
complex(idx, idy): c
for idy, line in enumerate(input())
for idx, c in enumerate(line.strip())
}
dirs = {complex(dx, dy) for dx in [-1, 0, 1] for dy in [-1, 0, 1]}
def xmas(x, v):
return all(grid.get(x + n * v) == c for n, c in enumerate("XMAS"))
def x_mas(x, v):
return (
grid.get(x) == "A"
and grid.get(x + v) == grid.get(x + 1j * v) == "M"
and grid.get(x - v) == grid.get(x - 1j * v) == "S"
)
silver = sum(xmas(x, v) for x in grid.keys() for v in dirs)
gold = sum(x_mas(x, v) for x in grid.keys() for v in dirs if abs(v) > 1)
print("silver:", silver)
print("gold:", gold)
|