Day 6 - Advent of Code 2025
6 December 2025
Working solutions for the day 6 puzzles.
Part One
""" day_06_01.py """
# usage: python3 day_06_01.py
from math import prod
def get(filename):
""" contents of filename """
with open(filename, 'r', encoding='utf-8') as infile:
data = infile.read()
return data
def test(data, given_solution):
""" testing """
assert solve(data) == given_solution
def solve(data):
""" solve the puzzle """
worksheet = {(r, c): col for r, row in enumerate(data.splitlines())
for c, col in enumerate(row.split())}
worksheet = {(c, r): col for (r, c), col in worksheet.items()}
problems = max(worksheet.keys())[0] + 1
numbers = max(worksheet.keys(), key=lambda x: x[1])[1]
answers = []
for p in range(problems):
args = [int(worksheet[(p, n)]) for n in range(numbers)]
if worksheet[(p, numbers)] == '+':
answers.append(sum(args))
else:
answers.append(prod(args))
return sum(answers)
if __name__ == '__main__':
test(get('example01'), 4277556)
puzzle = get('input')
solution = solve(puzzle)
print(solution)
Part Two
""" day_06_02.py """
# usage: python3 day_06_02.py
from math import prod
def get(filename):
""" contents of filename """
with open(filename, 'r', encoding='utf-8') as infile:
data = infile.read()
return data
def test(data, given_solution):
""" testing """
assert solve(data) == given_solution
def parse(column):
""" operation and number """
match column[-1]:
case '+':
op = sum
case '*':
op = prod
case _:
op = None
return op, int(column) if op is None else int(column[:-1])
def solve(data):
""" solve the puzzle """
worksheet = {}
_ = [worksheet.setdefault(c, []).append(col) for row in data.splitlines()
for c, col in enumerate(row)]
problem = 0
operations = {}
for _, line in worksheet.items():
text = ''.join(line).strip()
if text == '':
problem += 1
continue
func, number = parse(text)
args = operations.setdefault(problem, (func, [number]))[1]
if func is None:
args.append(number)
return sum(func(args) for _, (func, args) in operations.items())
if __name__ == '__main__':
test(get('example01'), 3263827)
puzzle = get('input')
solution = solve(puzzle)
print(solution)
