From 5e5fc243c5b143aeb21496dce324bdeac33b5e84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorben=20G=C3=BCnther?= Date: Sat, 4 Dec 2021 20:02:59 +0100 Subject: [PATCH] Solve day 2 part 1 --- data/day02.dat | 1000 +++++++++++++++++++++++++++++++++++++++++++ data/day02_test.dat | 6 + day02/day02_test.go | 14 + day02/main.go | 45 ++ day02/utils.go | 25 ++ main.go | 6 +- 6 files changed, 1095 insertions(+), 1 deletion(-) create mode 100644 data/day02.dat create mode 100644 data/day02_test.dat create mode 100644 day02/day02_test.go create mode 100644 day02/main.go create mode 100644 day02/utils.go diff --git a/data/day02.dat b/data/day02.dat new file mode 100644 index 0000000..26e4fc2 --- /dev/null +++ b/data/day02.dat @@ -0,0 +1,1000 @@ +forward 4 +down 7 +down 4 +forward 2 +down 4 +down 9 +down 1 +forward 1 +down 4 +up 5 +forward 5 +down 3 +forward 5 +forward 6 +down 5 +down 3 +forward 8 +up 7 +forward 1 +forward 5 +forward 7 +up 2 +up 7 +down 1 +down 6 +forward 7 +forward 6 +down 7 +up 9 +down 8 +down 3 +down 1 +down 4 +down 3 +forward 7 +down 1 +forward 6 +down 3 +forward 3 +down 6 +forward 5 +down 7 +up 5 +forward 7 +forward 9 +up 1 +forward 5 +down 5 +down 2 +forward 1 +up 7 +down 8 +down 2 +forward 8 +forward 1 +up 1 +up 5 +forward 9 +up 9 +down 5 +down 5 +forward 6 +forward 1 +down 1 +down 3 +up 6 +up 9 +down 6 +down 1 +forward 1 +down 8 +down 3 +down 8 +up 6 +forward 2 +up 8 +down 2 +down 6 +forward 1 +down 2 +down 1 +down 5 +down 8 +forward 8 +down 8 +down 2 +up 1 +up 3 +forward 1 +down 6 +up 5 +forward 5 +up 7 +forward 3 +forward 3 +down 9 +forward 1 +forward 7 +down 1 +down 1 +down 3 +forward 4 +down 4 +forward 2 +up 8 +forward 2 +down 4 +down 2 +up 1 +forward 6 +forward 6 +down 9 +forward 5 +down 3 +forward 5 +down 6 +down 9 +forward 9 +up 6 +down 8 +up 5 +up 2 +forward 5 +down 4 +forward 8 +up 1 +forward 2 +down 9 +down 4 +up 7 +down 1 +down 6 +down 7 +down 7 +down 2 +down 2 +up 7 +down 1 +up 7 +up 4 +forward 9 +down 6 +up 3 +down 5 +forward 8 +up 4 +forward 5 +forward 8 +forward 4 +forward 7 +forward 2 +down 3 +up 4 +forward 7 +forward 3 +down 7 +up 4 +forward 8 +forward 9 +forward 9 +up 6 +up 5 +forward 7 +down 7 +up 5 +down 9 +down 8 +forward 5 +forward 2 +down 1 +down 2 +down 9 +up 5 +down 3 +down 8 +up 6 +forward 9 +down 9 +up 3 +up 9 +forward 3 +forward 9 +down 5 +up 3 +down 6 +forward 5 +down 6 +down 9 +forward 3 +down 7 +down 5 +down 9 +forward 8 +down 8 +forward 8 +forward 2 +up 6 +down 9 +down 7 +down 4 +down 2 +down 9 +forward 7 +up 1 +forward 6 +forward 7 +down 3 +down 5 +down 3 +forward 4 +down 9 +forward 2 +down 1 +forward 4 +up 9 +down 8 +down 9 +forward 5 +up 2 +down 7 +down 2 +down 7 +forward 8 +up 8 +forward 9 +up 8 +down 3 +down 8 +forward 2 +up 7 +forward 4 +up 8 +forward 6 +forward 6 +forward 4 +forward 3 +down 4 +up 7 +down 8 +forward 1 +forward 9 +forward 8 +forward 8 +down 6 +down 6 +down 4 +down 8 +forward 9 +down 8 +down 4 +forward 2 +forward 7 +down 4 +up 1 +down 4 +down 5 +up 5 +up 9 +down 5 +up 5 +forward 2 +down 8 +forward 7 +forward 2 +up 4 +forward 8 +up 7 +down 5 +forward 5 +down 5 +down 6 +down 7 +forward 1 +down 8 +up 8 +up 9 +up 6 +forward 2 +forward 7 +forward 4 +down 6 +up 4 +up 3 +down 3 +forward 7 +up 9 +down 9 +up 5 +forward 1 +up 7 +down 7 +down 7 +up 8 +down 3 +forward 6 +down 6 +down 7 +down 2 +forward 5 +up 8 +up 5 +up 1 +down 5 +forward 9 +forward 9 +forward 2 +forward 6 +up 8 +forward 8 +down 1 +forward 6 +up 7 +up 3 +forward 3 +up 5 +down 8 +forward 2 +down 5 +down 5 +forward 8 +forward 8 +forward 6 +up 7 +up 1 +forward 1 +down 7 +down 1 +up 9 +forward 7 +up 6 +down 2 +down 5 +forward 1 +down 1 +up 1 +forward 7 +forward 7 +forward 1 +up 2 +forward 2 +down 9 +down 8 +forward 9 +forward 8 +up 9 +down 1 +down 3 +up 1 +down 3 +up 9 +down 7 +up 6 +down 1 +down 2 +down 2 +down 4 +forward 4 +forward 3 +down 7 +forward 9 +forward 1 +down 2 +down 2 +down 4 +down 7 +up 7 +forward 6 +forward 2 +down 6 +down 3 +down 3 +down 8 +up 8 +forward 6 +down 8 +down 3 +forward 7 +down 4 +down 4 +up 1 +up 8 +forward 5 +forward 6 +down 8 +down 9 +up 7 +forward 2 +forward 4 +down 4 +forward 6 +forward 5 +down 4 +up 5 +down 5 +forward 1 +down 2 +up 9 +forward 9 +forward 6 +forward 8 +down 2 +down 9 +up 1 +forward 6 +down 3 +forward 6 +forward 7 +down 9 +forward 1 +forward 1 +forward 5 +up 5 +up 6 +forward 8 +forward 6 +forward 6 +forward 8 +down 6 +down 8 +forward 5 +forward 7 +forward 3 +forward 3 +up 5 +forward 8 +up 3 +forward 6 +forward 4 +forward 3 +up 8 +down 1 +down 3 +down 7 +up 8 +forward 5 +down 9 +up 7 +down 2 +down 4 +down 5 +down 2 +up 3 +down 4 +down 4 +forward 4 +forward 6 +up 4 +forward 5 +forward 3 +up 2 +up 3 +down 4 +down 7 +forward 7 +forward 2 +down 2 +forward 5 +up 4 +forward 2 +down 8 +up 5 +up 6 +forward 2 +forward 3 +up 3 +down 2 +forward 7 +down 6 +forward 3 +forward 6 +up 9 +forward 7 +up 1 +forward 1 +forward 2 +down 3 +forward 9 +down 1 +up 5 +up 7 +up 8 +down 5 +up 4 +down 9 +forward 4 +up 8 +forward 3 +forward 7 +down 7 +down 9 +down 5 +up 4 +down 2 +up 5 +down 4 +forward 3 +down 7 +up 5 +forward 9 +forward 9 +forward 7 +up 5 +forward 7 +up 3 +forward 8 +down 1 +down 5 +up 5 +forward 4 +forward 9 +forward 9 +up 5 +down 9 +up 7 +up 3 +forward 5 +down 4 +down 7 +forward 9 +down 9 +up 3 +forward 4 +forward 7 +down 9 +forward 2 +down 2 +forward 1 +down 2 +up 7 +down 6 +forward 9 +forward 1 +down 5 +forward 9 +forward 7 +up 4 +forward 9 +forward 7 +up 4 +down 1 +down 3 +down 3 +down 1 +down 9 +forward 3 +forward 5 +forward 2 +down 1 +forward 9 +down 6 +up 6 +down 7 +down 1 +down 1 +up 1 +up 8 +down 6 +down 3 +down 9 +forward 3 +forward 9 +down 4 +forward 6 +forward 7 +down 3 +forward 5 +up 8 +up 6 +forward 3 +forward 2 +down 6 +up 7 +forward 3 +forward 1 +down 8 +down 1 +forward 1 +forward 2 +up 7 +down 3 +forward 9 +forward 6 +up 8 +forward 3 +down 3 +down 9 +down 3 +down 6 +down 6 +down 2 +forward 8 +down 3 +forward 2 +up 8 +forward 5 +up 6 +down 7 +down 4 +down 2 +up 9 +down 4 +down 9 +down 4 +down 9 +forward 2 +down 5 +down 5 +forward 7 +up 2 +forward 5 +forward 1 +down 4 +forward 6 +forward 9 +down 1 +down 2 +down 6 +forward 5 +up 9 +up 1 +up 9 +up 4 +down 1 +up 3 +down 5 +forward 4 +forward 3 +forward 1 +down 9 +down 9 +down 6 +forward 4 +forward 4 +forward 1 +down 9 +down 8 +down 7 +forward 2 +forward 7 +forward 1 +down 7 +forward 8 +forward 7 +up 4 +down 4 +forward 8 +forward 6 +down 6 +forward 9 +down 2 +forward 7 +forward 1 +down 5 +down 5 +down 3 +down 7 +forward 9 +down 2 +forward 3 +forward 6 +up 4 +up 9 +forward 6 +up 8 +up 2 +forward 9 +forward 3 +forward 9 +down 4 +down 8 +down 1 +down 1 +forward 4 +up 3 +forward 1 +forward 5 +down 5 +down 6 +down 7 +forward 5 +down 3 +up 9 +forward 5 +down 4 +up 9 +forward 1 +down 3 +down 5 +forward 2 +down 7 +up 7 +down 2 +forward 2 +down 2 +down 4 +down 3 +forward 6 +down 7 +down 2 +down 1 +forward 7 +forward 9 +forward 8 +up 8 +forward 5 +down 8 +forward 9 +forward 9 +up 5 +forward 9 +up 8 +up 6 +up 5 +up 3 +down 2 +down 8 +down 4 +up 3 +down 4 +up 8 +down 3 +up 1 +down 4 +down 7 +down 4 +up 7 +down 3 +up 3 +up 8 +forward 3 +down 2 +forward 7 +up 9 +forward 2 +down 1 +down 1 +forward 2 +forward 9 +up 6 +forward 3 +forward 2 +down 1 +down 3 +down 6 +forward 7 +down 4 +forward 2 +down 6 +up 3 +up 5 +forward 6 +up 7 +down 5 +up 5 +forward 5 +down 6 +forward 7 +up 2 +forward 3 +forward 4 +forward 9 +down 4 +down 5 +up 7 +up 1 +down 1 +down 5 +forward 4 +down 2 +down 8 +down 6 +down 3 +down 1 +down 9 +forward 5 +forward 7 +down 5 +forward 7 +down 6 +up 8 +up 9 +down 4 +forward 7 +up 1 +up 5 +down 8 +forward 5 +up 8 +forward 1 +forward 7 +forward 5 +forward 8 +forward 8 +up 1 +down 4 +up 6 +down 1 +down 4 +up 9 +forward 4 +forward 1 +forward 5 +up 7 +forward 5 +forward 7 +up 3 +up 6 +up 3 +forward 4 +down 5 +down 4 +down 2 +down 4 +forward 7 +down 5 +forward 9 +forward 2 +down 3 +up 7 +forward 9 +forward 3 +down 9 +up 8 +forward 1 +forward 3 +up 8 +down 3 +up 9 +down 4 +forward 6 +forward 8 +down 4 +forward 9 +up 1 +forward 3 +forward 1 +up 3 +down 3 +forward 1 +forward 2 +forward 8 +up 3 +down 9 +forward 1 +up 1 +forward 2 +down 4 +forward 7 +up 9 +forward 2 +down 6 +down 8 +up 1 +forward 1 +forward 7 +down 8 +forward 7 +up 9 +up 5 +down 6 +down 2 +down 9 +down 9 +down 7 +down 4 +forward 4 +up 2 +up 8 +forward 5 +down 9 +down 7 +forward 3 +forward 1 +down 3 +down 1 +forward 5 +up 2 +up 9 +up 2 +forward 4 +forward 3 +forward 8 +up 9 +up 6 +up 3 +forward 7 +forward 8 +forward 8 +forward 1 +forward 1 +forward 2 +down 2 +down 7 +forward 4 +up 2 +down 4 +forward 5 +down 3 +forward 1 +down 3 +up 2 +forward 9 +forward 7 +forward 5 +forward 1 +forward 6 +forward 9 +up 3 +down 8 +down 8 +forward 3 +up 4 +up 1 +down 4 +forward 8 +up 9 +down 4 +down 5 +forward 1 +forward 7 +up 2 +down 2 +down 2 +down 1 +up 6 +forward 7 +forward 7 +down 7 +down 8 +forward 1 +forward 8 +down 3 +up 5 +up 9 +down 2 +down 9 +forward 3 +up 8 +up 9 +up 3 +up 3 +forward 9 +up 6 +up 7 +down 6 +down 8 +forward 4 +down 8 +forward 4 +forward 9 +down 9 +forward 4 +up 6 +up 5 +down 2 +forward 6 +down 2 +up 2 +up 4 +forward 4 +forward 6 +down 7 +up 4 +down 8 +forward 1 +down 5 +forward 4 +down 3 +forward 3 +down 5 +forward 7 +down 8 +up 7 +down 7 +forward 1 +forward 6 +up 7 +up 8 +up 2 +forward 1 +forward 1 +down 5 +down 9 +forward 7 +forward 5 +down 7 +up 1 +forward 6 +forward 6 +down 6 +forward 1 +down 1 +down 2 +down 4 +forward 5 +up 7 +up 7 +forward 6 +down 1 +forward 7 diff --git a/data/day02_test.dat b/data/day02_test.dat new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/data/day02_test.dat @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/day02/day02_test.go b/day02/day02_test.go new file mode 100644 index 0000000..009ab8c --- /dev/null +++ b/day02/day02_test.go @@ -0,0 +1,14 @@ +package day02 + +import "testing" + +func Test1(t *testing.T) { + res, err := calc1("../data/day02_test.dat") + if err != nil { + t.Errorf("error calculating: %v", err) + } + + if res != 150 { + t.Errorf("wrong result, expected %d, got %d", 150, res) + } +} diff --git a/day02/main.go b/day02/main.go new file mode 100644 index 0000000..6a2eadf --- /dev/null +++ b/day02/main.go @@ -0,0 +1,45 @@ +package day02 + +import ( + "errors" + "fmt" + "log" + "strconv" +) + +func Run() { + res, err := calc1("data/day02.dat") + if err != nil { + log.Fatal(err) + } + + fmt.Printf("Part 1: %d\n", res) +} + +func calc1(path string) (int, error) { + lines, err := readFile(path) + if err != nil { + return 0, err + } + + var hor, depth int + for i := 0; i < len(lines); i++ { + v, err := strconv.Atoi(lines[i][1]) + if err != nil { + return 0, err + } + + switch lines[i][0] { + case "forward": + hor += v + case "down": + depth += v + case "up": + depth -= v + default: + return 0, errors.New("illegal direction command") + } + } + + return depth * hor, nil +} diff --git a/day02/utils.go b/day02/utils.go new file mode 100644 index 0000000..ee067bc --- /dev/null +++ b/day02/utils.go @@ -0,0 +1,25 @@ +package day02 + +import ( + "bufio" + "os" + "strings" +) + +func readFile(path string) ([][]string, error) { + var lines [][]string + + f, err := os.Open(path) + if err != nil { + return lines, err + } + defer f.Close() + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := strings.Split(scanner.Text(), " ") + lines = append(lines, line) + } + + return lines, nil +} diff --git a/main.go b/main.go index 93d573f..3fa6345 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,11 @@ package main -import "git.xenrox.net/~xenrox/aoc2021/day01" +import ( + "git.xenrox.net/~xenrox/aoc2021/day01" + "git.xenrox.net/~xenrox/aoc2021/day02" +) func main() { day01.Run() + day02.Run() } -- 2.44.0