advent-of-code/2023/day-1/part-1/main.go
2023-12-01 15:03:51 +00:00

49 lines
731 B
Go

package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
)
func main() {
file, err := os.Open("2023/day-1/files/input")
if err != nil {
log.Fatalf("Error: %v", err)
}
defer file.Close()
fmt.Printf("Sum total: %d\n", calculateSumCalibrationValues(file))
}
func calculateSumCalibrationValues(r io.Reader) int {
scanner := bufio.NewScanner(r)
sum := 0
for scanner.Scan() {
line := scanner.Text()
sum = sum + calibrationValue(line)
}
return sum
}
func calibrationValue(line string) int {
var digits []int
for _, r := range []rune(line) {
if (r >= '0') && (r <= '9') {
digits = append(digits, int(r - '0'))
}
}
if len(digits) == 0 {
return 0
}
return (10*digits[0]) + digits[len(digits)-1]
}