summaryrefslogtreecommitdiff
path: root/2024/04/python/main.py
blob: cc04f040e3a07966a4efc566f94df3688a8e2962 (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
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)