|
|
@@ -9,9 +9,9 @@ import (
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
-func readInput(file *os.File) ([][]int, []string) {
|
|
|
+func readInput(file *os.File) ([][]string, []string) {
|
|
|
scanner := bufio.NewScanner(file)
|
|
|
- var numbers [][]int
|
|
|
+ var numbers [][]string
|
|
|
var symbols []string
|
|
|
|
|
|
for scanner.Scan() {
|
|
|
@@ -30,21 +30,21 @@ func readInput(file *os.File) ([][]int, []string) {
|
|
|
symbols = append(symbols, strings.Trim(part, " "))
|
|
|
}
|
|
|
} else {
|
|
|
- var lineNumbers []int
|
|
|
- parts := strings.Split(line, " ")
|
|
|
- for _, part := range parts {
|
|
|
- if part == "" || part == " " {
|
|
|
- continue
|
|
|
+ var lineNumbers []string
|
|
|
+ var number string
|
|
|
+ for i := range line {
|
|
|
+ if line[i] == ' ' {
|
|
|
+ if i > 0 && line[i-1] >= '0' && line[i-1] <= '9' {
|
|
|
+ lineNumbers = append(lineNumbers, number)
|
|
|
+ number = ""
|
|
|
+ continue
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- i, err := strconv.Atoi(strings.Trim(part, " "))
|
|
|
- if err != nil {
|
|
|
- log.Fatalf("Bad input: %s", part)
|
|
|
- }
|
|
|
-
|
|
|
- lineNumbers = append(lineNumbers, i)
|
|
|
+ number += string(line[i])
|
|
|
}
|
|
|
|
|
|
+ lineNumbers = append(lineNumbers, number)
|
|
|
numbers = append(numbers, lineNumbers)
|
|
|
}
|
|
|
}
|
|
|
@@ -52,19 +52,24 @@ func readInput(file *os.File) ([][]int, []string) {
|
|
|
return numbers, symbols
|
|
|
}
|
|
|
|
|
|
-func part1(numbers [][]int, symbols []string) int {
|
|
|
+func part1(numbers [][]string, symbols []string) int {
|
|
|
var sum int
|
|
|
|
|
|
for i, symbol := range symbols {
|
|
|
var result int
|
|
|
for row := range numbers {
|
|
|
+ number, err := strconv.Atoi(strings.Trim(numbers[row][i], " "))
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("Failed to convert %s to int!\n", numbers[row][i])
|
|
|
+ }
|
|
|
+
|
|
|
if symbol == "+" {
|
|
|
- result += numbers[row][i]
|
|
|
+ result += number
|
|
|
} else if symbol == "*" {
|
|
|
if result == 0 {
|
|
|
result = 1
|
|
|
}
|
|
|
- result *= numbers[row][i]
|
|
|
+ result *= number
|
|
|
}
|
|
|
}
|
|
|
|