“La matemática de cefalópodos no se ve tan distinta de la matemática normal.”
Traducción de la publicación original en inglés.
Github: GCaggianese/AoC-2025/D6
Puzzle Dia 6: Trash Compactor
Parte uno
- Parsear el input como una matriz usando espacios (
" ") como separadores. - Aplicar la operación del operador (última fila) a cada columna en la misma fila.
- Sumar los resultados.
Parte 2
La parte 2 requiere leer los números del input **verticalmente** en lugar de horizontalmente. Cada posición de columna se vuelve un dígito, y los dígitos se apilan de arriba hacia abajo para formar nuevos números. Es importante notar que también hay espacios en los inputs numéricos (por ejemplo " 51"). Esto importa porque al leer verticalmente cambia la indentación y, por lo tanto, si un dígito forma parte de otro número o no.
Parsing actualizado
- Mantener las posiciones de los caracteres
readdlmdestruye la información espacial al tratar espacios como delimitadores. -> usarreadlines()y parsear caracteres uno por uno.
- Expandir el header
- La fila de operadores usa espacios para significar “repetir el operador anterior”. Entonces
* + * +se expande a****++++****+++-> cada columna tiene su operador.
- La fila de operadores usa espacios para significar “repetir el operador anterior”. Entonces
- Leer columnas verticalmente
- Para cada posición de columna, apilar los dígitos de todas las filas (de arriba hacia abajo).
- Concatenarlos en un único número.
- Los espacios dentro de la grilla numérica significan “no hay dígito aquí”.
- Columnas separadoras
- Una columna donde todas las celdas son
" "significa un separador entre operaciones.
- Una columna donde todas las celdas son
- Aplicar operadores y sumar
- Agrupar números consecutivos entre separadores.
- Aplicar su operador.
- Sumar todos los resultados para obtener la respuesta.