aoc24/day4/solution.py
2024-12-04 16:04:03 +01:00

49 lines
1.4 KiB
Python

def read_grid(filename):
grid = []
with open(filename, 'r') as file:
for line in file:
grid.append(list(line.strip()))
return grid
def count_word_occurrences(grid, word):
rows = len(grid)
cols = len(grid[0])
word_length = len(word)
count = 0
directions = [
(0, 1), # Right
(1, 0), # Down
(0, -1), # Left
(-1, 0), # Up
(1, 1), # Diagonal down-right
(1, -1), # Diagonal down-left
(-1, -1), # Diagonal up-left
(-1, 1), # Diagonal up-right
]
for x in range(rows):
for y in range(cols):
for dx, dy in directions:
match = True
for k in range(word_length):
nx = x + dx * k
ny = y + dy * k
if 0 <= nx < rows and 0 <= ny < cols:
if grid[nx][ny] != word[k]:
match = False
break
else:
match = False
break
if match:
count += 1
return count
# Main execution
if __name__ == "__main__":
grid = read_grid('input.txt')
# grid = read_grid('example.txt')
word = "XMAS"
total_occurrences = count_word_occurrences(grid, word)
print(total_occurrences)