StyleInCode

RSS

 

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()))

Categories

Links