advent-of-code/2024/4/one.py
2024-12-25 12:59:49 +01:00

60 lines
1.3 KiB
Python

#!/usr/bin/env python3
import sys
input_file = sys.argv[1]
with open(input_file) as fd:
lines = [line.rstrip() for line in fd.readlines()]
height = len(lines)
width = len(lines[0])
word = "XMAS"
directions = [
(0, 1),
(1, 1),
(1, 0),
(1, -1),
(0, -1),
(-1, -1),
(-1, 0),
(-1, 1),
]
arrows = ["➡️", "↘️", "⬇️", "↙️", "⬅️", "↖️", "⬆️", "↗️"]
assert len(directions) == len(set(directions))
viz = [["."] * width for i in range(height)]
count = 0
for i in range(height):
for j in range(width):
for direction in directions:
ii = i
jj = j
for letter in word:
if (
ii not in range(height)
or jj not in range(width)
or lines[ii][jj] != letter
):
break
ii += direction[0]
jj += direction[1]
else:
count += 1
# d = directions.index(direction)
# viz[i][j] = arrows[d]
ii = i
jj = j
for letter in word:
viz[ii][jj] = letter
ii += direction[0]
jj += direction[1]
for line in viz:
print("".join(line))
print(count)