Advent of Code 2025: 6

Entradas Archivos Wallpaper Problemas

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}")