From e3b177f7079e1ab3ed525b249e95928c6b0d0e12 Mon Sep 17 00:00:00 2001 From: Elias Kohout Date: Mon, 2 Dec 2024 10:12:47 +0100 Subject: [PATCH] add day 2 part 1 --- day2/test_reports.go | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 day2/test_reports.go diff --git a/day2/test_reports.go b/day2/test_reports.go new file mode 100644 index 0000000..56edd79 --- /dev/null +++ b/day2/test_reports.go @@ -0,0 +1,58 @@ +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) +}