package main import ( "fmt" "strings" "git.z1glr.de/advent-of-code-2025/pkg/aoc" ) func do(test bool) int { inputRows := aoc.ReadFileRows(test) operators := strings.Fields(inputRows[len(inputRows)-1]) tdNumberStrings := make([]byte, len(inputRows[0])) numbers := make([][]int, len(inputRows)-1) for ii, row := range inputRows[:len(inputRows)-1] { numberStrings := strings.Fields(row) numbers[ii] = make([]int, len(numberStrings)) for jj, number := range numberStrings { numbers[ii][jj] = aoc.ParseInt(number) } } for ii := range len(inputRows[0]) { for jj := 0; jj < len(inputRows)-1; jj++ { tdNumberStrings[ii] = inputRows[ii][jj] } } tdNumbers := make([][]int, len(operators)) currentOperation := 0 for _, number := range tdNumberStrings { if strings.TrimSpace(string(number)) == "" { currentOperation++ } else { tdNumbers[currentOperation] = append(tdNumbers[currentOperation], aoc.ParseInt(string(number))) } } grandSum := 0 grandSum2 := 0 for ii, operator := range operators { switch operator { case "+": for jj := range len(numbers) { grandSum += numbers[jj][ii] grandSum2 += tdNumbers[jj][ii] } case "*": columnResult := 1 columnResult2 := 1 for jj := range len(numbers) { columnResult *= numbers[jj][ii] columnResult2 *= tdNumbers[jj][ii] } grandSum += columnResult grandSum2 += columnResult2 } } fmt.Println(grandSum) fmt.Println(grandSum2) return grandSum } func main() { if do(true) == 4277556 { do(false) } }