summaryrefslogtreecommitdiff
path: root/2024/04/python.py
blob: fe5021bc641b4e5adbc7f5c1211f141a1890cd81 (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
#!/usr/bin/env python3

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)