Day 7 - Advent of Code 2025
7 December 2025
Working solutions for the day 7 puzzles.
Part One
""" day_07_01.py """
# usage: python3 day_07_01.py < input
import sys
hits = 0
with sys.stdin as infile:
beams = {infile.readline().find('S')}
for line in infile:
splitters = {i for i, char in enumerate(line) if char == '^'}
strikes = beams & splitters
beams -= strikes
for i in strikes:
beams |= {i - 1, i + 1}
hits += 1
print(hits)Part Two
""" day_07_02.py """
# usage: python3 day_07_02.py < input
import sys
with sys.stdin as infile:
beams = {infile.readline().find('S'): 1}
for line in infile:
splitters = {i for i, char in enumerate(line) if char == '^'}
next_row_beams = beams.copy()
for i in set(beams.keys()) & splitters:
del next_row_beams[i]
next_row_beams[i - 1] = beams.get(i - 1, 0) + beams[i]
if i - 2 in splitters:
next_row_beams[i - 1] += beams.get(i - 2, 0)
next_row_beams[i + 1] = beams[i] + beams.get(i + 1, 0)
if i + 2 in splitters:
next_row_beams[i + 1] += beams.get(i + 2, 0)
beams = next_row_beams.copy()
print(sum(beams.values()))