advent-of-code/2023/day-1/part_one.go
Dan Anglin 86fd297d5b
refactor(Day 1): Updated code structure for Day 1
- Moved parts 1 and 2 under one directory.
- Updated test suite for Day 1.
2023-12-04 18:43:57 +00:00

55 lines
929 B
Go

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
}