Advent of Code 2025: 6
El problema consiste en dado una matriz aplicar la operación indicada a todos los elementos de la columna
123 328 51 64
45 64 387 23
6 98 215 314
* + * +
Mi primera solucion fue hacer una lista con todos los elementos y seleccionar luego recorrerla aplicando la operación
Solucion
total = 0
# with open("./input_test.txt", "r") as f:
with open("./input.txt", "r") as f:
lines = f.readlines()
datos = {}
operaciones = {"*": lambda x, y: x*y, "+": lambda x, y: x+y}
for line in lines:
line = line.split()
for i, e in enumerate(line):
if i not in datos:
datos[i] = []
datos[i].append(e)
for columna in datos:
columna = datos[columna]
simbolo = columna.pop()
operacion = operaciones[simbolo]
prev = int(columna[0])
for i in range(1, len(columna)):
prev = operacion(prev, int(columna[i]))
total += prev
print(prev)
print(f"Resultado {total}")
Pero una solución más sencilla consiste en transponer la matriz y aplicar la operacion a la fila correspondiente
import math
total = 0
with open("./input.txt", "r") as f:
matrix = [line.split() for line in f if line.strip()]
cols = zip(*matrix)
for col in cols:
operator = col[-1]
numbers = [int(x) for x in col[:-1]]
if operator == '+':
total += sum(numbers)
elif operator == '*':
total += math.prod(numbers)
print(f"Resultado {total}")