From 0d8a41e58cbe0eefe5c08ce63655608ec705a8b1 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Thu, 2 Dec 2021 07:25:31 +0100 Subject: [PATCH] Day 02 --- 02/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ 02/main.go | 66 ++++ 02/main_test.go | 14 + 3 files changed, 1080 insertions(+) create mode 100644 02/input.txt create mode 100644 02/main.go create mode 100644 02/main_test.go diff --git a/02/input.txt b/02/input.txt new file mode 100644 index 0000000..f357be9 --- /dev/null +++ b/02/input.txt @@ -0,0 +1,1000 @@ +forward 3 +down 9 +forward 6 +down 3 +forward 8 +down 3 +down 4 +forward 3 +forward 5 +up 7 +forward 1 +forward 1 +forward 5 +down 8 +down 5 +forward 3 +forward 2 +forward 4 +down 7 +up 2 +up 2 +down 5 +down 5 +down 8 +down 2 +down 4 +forward 8 +forward 8 +up 2 +down 2 +up 8 +up 4 +forward 7 +up 8 +down 6 +forward 9 +forward 6 +forward 5 +up 1 +forward 6 +forward 8 +down 4 +forward 6 +up 8 +down 9 +forward 1 +down 1 +up 8 +down 5 +down 7 +forward 7 +up 8 +forward 4 +forward 5 +up 9 +down 4 +forward 4 +up 5 +down 6 +forward 3 +forward 2 +forward 3 +forward 6 +up 4 +up 7 +forward 6 +forward 2 +down 1 +forward 3 +forward 3 +forward 2 +down 6 +forward 2 +forward 4 +forward 9 +forward 1 +up 6 +forward 7 +down 6 +down 7 +forward 6 +up 4 +down 7 +up 9 +up 2 +down 6 +down 6 +forward 9 +down 2 +forward 5 +up 3 +up 6 +forward 3 +forward 3 +up 8 +forward 1 +forward 9 +forward 9 +up 6 +forward 3 +forward 2 +forward 8 +up 8 +forward 5 +up 6 +forward 9 +down 4 +down 5 +forward 7 +down 6 +forward 8 +up 9 +forward 2 +down 8 +up 4 +forward 7 +down 9 +forward 5 +forward 7 +down 4 +forward 3 +forward 7 +forward 4 +forward 7 +forward 4 +up 1 +down 1 +down 6 +up 4 +forward 2 +down 5 +down 8 +down 1 +up 2 +down 6 +down 3 +forward 5 +forward 5 +down 5 +forward 3 +forward 3 +down 9 +down 9 +up 5 +down 5 +down 3 +forward 2 +down 1 +up 6 +down 1 +down 3 +down 7 +forward 3 +forward 5 +forward 7 +up 9 +up 9 +down 1 +forward 2 +up 4 +down 1 +up 4 +forward 3 +forward 5 +down 2 +forward 7 +down 6 +down 2 +forward 7 +forward 7 +down 9 +up 4 +down 6 +down 1 +down 5 +down 5 +down 3 +down 1 +forward 9 +forward 4 +up 8 +down 1 +up 7 +down 7 +down 8 +up 2 +down 9 +down 2 +forward 3 +forward 6 +forward 5 +forward 2 +forward 6 +down 4 +forward 5 +up 5 +forward 3 +down 4 +forward 3 +down 4 +forward 9 +forward 7 +forward 9 +forward 7 +up 4 +down 3 +forward 5 +forward 9 +forward 9 +down 5 +forward 9 +down 1 +down 3 +forward 2 +forward 5 +forward 8 +down 6 +down 4 +forward 1 +up 6 +down 8 +up 4 +up 8 +forward 3 +down 3 +down 2 +forward 3 +forward 4 +down 9 +down 4 +forward 6 +up 5 +forward 6 +up 1 +down 3 +forward 9 +down 5 +down 4 +forward 9 +up 6 +forward 9 +forward 2 +down 1 +forward 7 +forward 5 +down 4 +forward 6 +down 6 +up 3 +up 8 +down 6 +forward 8 +forward 3 +down 6 +down 3 +down 3 +up 6 +up 6 +up 1 +forward 7 +up 2 +forward 5 +forward 5 +up 3 +forward 7 +up 3 +down 7 +down 1 +forward 9 +forward 7 +down 1 +forward 7 +forward 8 +forward 2 +down 1 +up 3 +down 6 +forward 5 +forward 4 +forward 2 +down 8 +forward 3 +down 9 +down 4 +up 9 +down 2 +down 6 +up 2 +up 9 +forward 1 +down 8 +forward 3 +down 4 +down 2 +forward 9 +forward 2 +down 3 +down 8 +down 7 +down 7 +up 2 +down 7 +down 2 +down 4 +forward 8 +forward 1 +down 5 +forward 2 +forward 1 +forward 6 +down 7 +forward 1 +down 4 +forward 1 +up 7 +down 7 +forward 2 +down 4 +forward 9 +up 1 +forward 7 +forward 3 +forward 3 +down 2 +down 6 +up 1 +down 1 +down 7 +forward 2 +forward 6 +down 5 +up 4 +down 9 +up 6 +forward 1 +forward 4 +down 9 +up 7 +down 8 +up 6 +down 8 +down 5 +down 5 +down 2 +forward 7 +forward 2 +up 2 +up 9 +forward 6 +down 9 +down 6 +forward 3 +down 8 +forward 3 +forward 2 +down 9 +forward 5 +up 3 +forward 5 +down 1 +up 1 +down 3 +forward 1 +forward 5 +down 7 +forward 8 +forward 6 +down 4 +down 9 +forward 5 +forward 2 +down 8 +down 3 +down 6 +down 2 +down 1 +forward 6 +forward 1 +forward 6 +up 9 +down 4 +up 7 +forward 5 +up 6 +down 3 +forward 6 +forward 3 +forward 2 +forward 2 +up 1 +down 9 +forward 2 +forward 3 +up 1 +forward 3 +forward 2 +down 4 +down 8 +up 9 +up 1 +forward 4 +up 2 +down 6 +forward 3 +down 5 +up 5 +up 7 +down 1 +forward 1 +forward 7 +down 4 +forward 4 +forward 2 +forward 8 +down 7 +down 8 +down 8 +forward 5 +forward 8 +down 5 +forward 3 +down 3 +down 1 +forward 2 +forward 7 +forward 2 +forward 6 +forward 3 +forward 7 +up 6 +down 5 +forward 6 +down 5 +down 7 +forward 6 +up 5 +down 9 +down 3 +forward 1 +forward 1 +forward 3 +down 9 +forward 1 +down 9 +down 9 +down 4 +down 2 +down 5 +up 6 +forward 1 +down 7 +down 2 +forward 9 +down 8 +down 2 +forward 7 +down 8 +forward 2 +up 8 +up 6 +forward 9 +down 7 +forward 1 +down 4 +down 7 +forward 1 +forward 4 +down 1 +forward 9 +down 1 +up 2 +up 4 +forward 3 +down 4 +forward 7 +forward 1 +up 7 +up 4 +forward 7 +forward 2 +forward 5 +down 7 +down 9 +forward 4 +forward 6 +down 9 +forward 6 +up 8 +forward 3 +forward 2 +forward 3 +forward 9 +down 7 +down 4 +down 7 +down 7 +down 5 +forward 7 +down 1 +forward 3 +up 3 +down 1 +up 7 +up 7 +up 4 +forward 9 +down 8 +up 4 +forward 6 +forward 8 +down 8 +forward 1 +down 6 +forward 1 +forward 4 +up 8 +forward 3 +up 6 +up 1 +down 4 +up 1 +forward 8 +up 1 +forward 7 +down 1 +up 9 +down 3 +forward 4 +down 6 +down 7 +forward 7 +forward 4 +down 1 +up 3 +forward 3 +up 7 +up 9 +up 9 +forward 7 +down 8 +forward 5 +up 2 +forward 7 +forward 8 +down 2 +down 6 +down 1 +down 1 +down 5 +down 5 +up 5 +forward 1 +forward 3 +down 9 +down 6 +forward 9 +forward 1 +down 4 +forward 7 +forward 6 +up 4 +down 8 +down 9 +forward 3 +down 9 +up 5 +forward 3 +up 1 +forward 3 +forward 1 +forward 8 +up 6 +down 6 +forward 9 +forward 7 +forward 8 +down 1 +forward 9 +forward 1 +forward 3 +forward 6 +down 1 +down 9 +down 9 +forward 1 +down 2 +down 5 +forward 7 +forward 6 +down 5 +forward 8 +forward 1 +forward 5 +forward 6 +down 6 +down 9 +down 7 +forward 7 +down 2 +down 2 +up 2 +forward 9 +forward 4 +forward 2 +up 9 +forward 3 +forward 1 +forward 6 +down 4 +down 9 +down 9 +down 1 +down 3 +down 1 +forward 5 +down 7 +forward 9 +forward 7 +forward 4 +forward 7 +forward 8 +forward 5 +down 8 +down 1 +up 1 +forward 9 +forward 9 +down 4 +up 7 +up 3 +down 1 +forward 5 +forward 2 +down 6 +down 6 +up 3 +down 6 +up 7 +forward 2 +forward 2 +forward 8 +down 3 +up 5 +down 4 +forward 5 +down 4 +forward 8 +down 5 +down 2 +forward 6 +down 2 +down 3 +down 5 +up 6 +down 7 +forward 6 +forward 2 +down 8 +up 1 +up 1 +forward 2 +down 3 +forward 3 +down 8 +down 4 +forward 1 +down 2 +forward 6 +up 3 +forward 8 +down 6 +up 7 +forward 2 +forward 9 +forward 4 +forward 4 +up 7 +forward 6 +up 1 +forward 1 +forward 3 +down 4 +up 7 +forward 8 +forward 4 +down 8 +forward 4 +down 8 +forward 9 +down 3 +down 4 +up 6 +up 1 +forward 7 +up 3 +forward 5 +forward 4 +forward 5 +forward 7 +forward 1 +down 3 +up 5 +forward 7 +forward 4 +down 9 +down 6 +down 7 +up 3 +up 7 +up 8 +up 9 +down 4 +up 1 +forward 1 +up 3 +forward 6 +down 8 +forward 4 +down 7 +down 5 +down 4 +forward 7 +forward 5 +down 4 +down 7 +up 5 +down 2 +down 1 +down 8 +forward 7 +down 4 +forward 5 +up 9 +down 3 +up 2 +down 3 +forward 2 +forward 2 +forward 8 +down 2 +down 3 +forward 2 +down 6 +forward 9 +down 6 +down 1 +down 8 +down 3 +forward 4 +forward 4 +forward 4 +up 8 +forward 8 +up 4 +down 1 +forward 5 +down 9 +forward 7 +up 9 +up 3 +down 9 +down 8 +forward 3 +forward 4 +forward 5 +forward 4 +up 7 +down 2 +up 5 +forward 6 +down 3 +forward 6 +down 8 +down 3 +down 3 +down 4 +forward 8 +down 9 +down 2 +forward 2 +down 7 +forward 3 +up 2 +forward 4 +down 8 +forward 2 +forward 9 +forward 3 +down 6 +forward 9 +down 7 +forward 1 +forward 2 +forward 4 +forward 4 +up 4 +up 2 +down 7 +forward 9 +forward 9 +forward 7 +up 7 +down 2 +down 9 +forward 8 +down 5 +up 2 +down 6 +forward 9 +up 3 +down 5 +down 4 +forward 9 +forward 3 +down 6 +down 8 +up 5 +up 3 +down 2 +forward 9 +down 3 +forward 6 +down 9 +forward 5 +down 6 +up 6 +down 6 +forward 6 +forward 1 +down 3 +down 3 +up 8 +forward 1 +forward 4 +up 2 +forward 3 +forward 1 +forward 8 +forward 7 +down 7 +down 4 +down 6 +down 2 +forward 3 +down 2 +forward 6 +up 3 +down 9 +down 2 +forward 6 +down 6 +forward 5 +forward 2 +up 4 +forward 5 +up 5 +up 5 +up 3 +forward 9 +down 7 +forward 4 +down 7 +up 5 +down 3 +forward 5 +forward 3 +down 7 +up 2 +down 5 +forward 9 +forward 7 +up 7 +forward 5 +up 5 +down 1 +up 7 +forward 9 +down 8 +forward 2 +forward 8 +down 7 +down 3 +down 1 +up 7 +forward 4 +down 3 +forward 1 +forward 1 +forward 6 +up 7 +up 1 +forward 2 +down 8 +down 4 +down 2 +down 6 +forward 5 +down 7 +down 8 +down 7 +down 5 +down 5 +forward 1 +down 9 +forward 5 +down 6 +down 9 +up 3 +down 4 +forward 3 +down 6 +up 6 +forward 8 +forward 8 +forward 2 +down 2 +up 1 +forward 6 +forward 6 +up 9 +up 4 +forward 9 +up 7 +up 6 +down 2 +down 3 +up 7 +down 7 +forward 4 +forward 8 +down 3 +forward 1 +down 2 +forward 9 +forward 4 +forward 6 +down 7 +up 9 +forward 9 +forward 1 +forward 2 +down 1 +down 8 +down 7 +forward 3 +down 4 +down 9 +forward 2 +up 2 +forward 3 +up 3 +down 9 +down 2 +forward 3 +down 3 +forward 7 +forward 6 +down 6 +down 7 +forward 2 +down 9 +up 3 +down 6 +forward 3 +down 2 +down 1 +up 6 +down 3 +down 3 +down 1 +down 5 +down 3 +up 4 +down 2 +forward 5 +down 2 +down 8 +down 2 +down 5 +forward 9 +forward 4 +down 4 +down 2 +down 8 +forward 9 +down 8 +forward 1 +up 6 +forward 6 +down 7 +down 1 +down 2 +down 8 +down 8 +up 8 +forward 6 +forward 8 +forward 9 +forward 2 +forward 5 \ No newline at end of file diff --git a/02/main.go b/02/main.go new file mode 100644 index 0000000..62419ff --- /dev/null +++ b/02/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "log" + "os" + "strconv" + "strings" +) + +func main() { + inputBytes, _ := os.ReadFile("input.txt") + inputs := strings.Split(string(inputBytes), "\n") + + log.Println("Puzzle 1:", puzzle1(inputs)) + log.Println("Puzzle 2:", puzzle2(inputs)) +} + +func puzzle1(input []string) int { + // "forward X" increases the horizontal position by X units. + // "down X" increases the depth by X units. + // "up X" decreases the depth by X units. + horizontal := 0 + depth := 0 + for _, instruction := range input { + instructionParts := strings.Split(instruction, " ") + direction := instructionParts[0] + distance, _ := strconv.Atoi(instructionParts[1]) + switch direction { + case "forward": + horizontal += distance + case "down": + depth += distance + case "up": + depth -= distance + } + } + // Multiply horizontal position and depth together to get the final answer. + return horizontal * depth +} + +func puzzle2(input []string) int { + // down X increases your aim by X units. + // up X decreases your aim by X units. + // forward X does two things: + // - It increases your horizontal position by X units. + // - It increases your depth by your aim multiplied by X. + horizontal := 0 + depth := 0 + aim := 0 + for _, instruction := range input { + instructionParts := strings.Split(instruction, " ") + direction := instructionParts[0] + distance, _ := strconv.Atoi(instructionParts[1]) + switch direction { + case "down": + aim += distance + case "up": + aim -= distance + case "forward": + horizontal += distance + depth += aim * distance + } + } + // Multiply horizontal position and depth together to get the final answer. + return horizontal * depth +} diff --git a/02/main_test.go b/02/main_test.go new file mode 100644 index 0000000..a1f5593 --- /dev/null +++ b/02/main_test.go @@ -0,0 +1,14 @@ +package main + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test(t *testing.T) { + input := `forward 5,down 5,forward 8,up 3,down 8,forward 2` + assert.Equal(t, 150, puzzle1(strings.Split(input, ","))) + assert.Equal(t, 900, puzzle2(strings.Split(input, ","))) +}