aoc2023/day01/day01.go
2024-10-28 18:12:20 +00:00

39 lines
772 B
Go

package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func getCalibrationValue(input string) int {
firstIdx := strings.IndexAny(input, "0123456789")
lastIdx := strings.LastIndexAny(input, "0123456789")
first := string([]rune(input)[firstIdx])
last := string([]rune(input)[lastIdx])
output, _ := strconv.Atoi(first + last)
return output
}
func ScanFile(file *os.File) (int, error) {
scanner := bufio.NewScanner(file);
sum := 0;
for scanner.Scan() {
sum += getCalibrationValue(scanner.Text());
}
if err := scanner.Err(); err != nil {
return 0, err
}
return sum, nil
}
func main() {
sum, err := ScanFile(os.Stdin)
if err != nil {
fmt.Fprintf(os.Stderr, "Invalid input: %s\n", err)
return
}
fmt.Println(sum)
}