Files
advent-of-code-2024/day2/test_reports.go

59 lines
1.3 KiB
Go
Raw Normal View History

2024-12-02 10:12:47 +01:00
package main
import (
"fmt"
"os"
"strings"
"strconv"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
// read in file as lines
dat, err := os.ReadFile("data.txt")
check(err)
lines := strings.Split(string(dat), "\n")
// valid reports
valid := 0
for i := range len(lines) - 1 {
str_levels := strings.Split(lines[i], " ")
// convert to integer
levels := make([]int, len(str_levels))
for j := range str_levels {
levels[j], err = strconv.Atoi(str_levels[j])
check(err)
}
// check for validity
if levels[0] > levels[1] {
// decreasing sequence
valid += 1
for j := range len(levels) - 1 {
if levels[j] - levels[j+1] <= 0 || levels[j] - levels[j+1] > 3 {
valid -= 1
break
}
}
} else if levels[0] < levels[1] {
// increasing sequence
valid += 1
for j := range len(levels) - 1 {
if levels[j+1] - levels[j] <= 0 || levels[j+1] - levels[j] > 3 {
valid -= 1
break
}
}
}
}
fmt.Println(valid)
}