advent-of-code/2023/day-1/part_one.go

56 lines
929 B
Go
Raw Normal View History

package main
import (
"bufio"
"fmt"
"os"
)
func partOneCalculateSumCalibrationValues(document []string) int {
sum := 0
for _, line := range document {
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]
}
func calibrationDocument(filename string) ([]string, error){
file, err := os.Open(filename)
if err != nil {
return nil, fmt.Errorf("unable to open %q; %w", filename, err)
}
defer file.Close()
var lines []string
scanner := bufio.NewScanner(file)
for scanner.Scan() {
lines = append(lines, scanner.Text())
}
if err := scanner.Err(); err != nil {
return nil, fmt.Errorf("error scanning %q; %w", filename, err)
}
return lines, nil
}