adventofcode-2024/04/solve_part2.py
Peter Hudec 76a59e48e1 day 04
2024-12-04 07:49:54 +01:00

46 lines
1.2 KiB
Python

#!/usr/bin/env python
from collections import defaultdict
def read_input(filename):
with open(filename) as f:
for line in f:
line = line.strip()
yield line
def find_xmas(data, posX, posY):
if data[posX][posY] != 'A':
return 0
tmp1 = data[posX-1][posY-1] + data[posX][posY] + data[posX+1][posY+1]
tmp2 = data[posX+1][posY-1] + data[posX][posY] + data[posX-1][posY+1]
if not tmp1 in ['MAS', 'SAM']:
return 0
if not tmp2 in ['MAS', 'SAM']:
return 0
return 1
def main(args):
puzzle = defaultdict(lambda: defaultdict(lambda: "."))
for id1, line in enumerate(read_input(args.file)):
for id2, char in enumerate(list(line)):
puzzle[id1][id2] = char
count = 0
for posX in range(len(puzzle)):
for posY in range(len(puzzle[posX])):
if puzzle[posX][posY] != 'A':
continue
count += find_xmas(puzzle, posX, posY)
print(count)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
prog='AdventOfCode 2024, Day 04, part 1',
)
parser.add_argument('-f', '--file', required=True)
args = parser.parse_args()
main(args)