From d33f37336a3170d759de0df0302417c049bc5006 Mon Sep 17 00:00:00 2001 From: Daniel Aberger Date: Thu, 2 Dec 2021 12:47:13 +0100 Subject: [PATCH] add 2nd december solution --- cmd/main.go | 9 +- pkg/two/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++ pkg/two/two.go | 92 +++++ 3 files changed, 1100 insertions(+), 1 deletion(-) create mode 100644 pkg/two/input.txt create mode 100644 pkg/two/two.go diff --git a/cmd/main.go b/cmd/main.go index 6e8dee8..05518a9 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -1,7 +1,14 @@ package main -import "adventofcode/pkg/one" +import ( + "adventofcode/pkg/one" + "adventofcode/pkg/two" + "fmt" +) func main() { + fmt.Println("Day 1") one.Run() + fmt.Println("Day 2") + two.Run() } diff --git a/pkg/two/input.txt b/pkg/two/input.txt new file mode 100644 index 0000000..21b3be1 --- /dev/null +++ b/pkg/two/input.txt @@ -0,0 +1,1000 @@ +forward 7 +forward 9 +forward 9 +down 3 +down 8 +down 3 +forward 6 +down 7 +up 3 +forward 3 +up 3 +down 3 +down 9 +down 6 +forward 8 +down 3 +down 9 +forward 4 +forward 3 +down 1 +forward 2 +down 5 +forward 9 +forward 6 +up 1 +forward 8 +down 9 +forward 8 +down 7 +down 9 +down 4 +down 2 +forward 2 +down 6 +up 8 +forward 3 +forward 7 +down 2 +forward 4 +down 3 +down 1 +down 8 +forward 5 +forward 6 +down 3 +forward 1 +up 1 +down 8 +forward 5 +forward 2 +forward 9 +up 4 +down 1 +down 3 +up 5 +up 5 +forward 7 +up 1 +forward 8 +forward 4 +forward 3 +down 9 +forward 2 +forward 5 +down 5 +up 7 +forward 4 +up 5 +down 5 +down 4 +down 9 +forward 1 +up 3 +forward 6 +down 3 +forward 9 +down 1 +up 5 +down 7 +forward 3 +forward 3 +up 9 +down 2 +down 4 +forward 1 +forward 2 +down 4 +down 4 +up 5 +forward 9 +down 3 +down 1 +down 8 +down 2 +down 8 +forward 9 +forward 5 +down 2 +forward 8 +up 9 +down 8 +down 5 +down 6 +down 2 +down 4 +up 2 +forward 4 +down 9 +forward 4 +down 6 +down 9 +forward 9 +down 3 +down 1 +up 2 +down 6 +forward 2 +down 4 +down 6 +forward 5 +up 2 +up 8 +down 2 +up 9 +forward 6 +down 8 +down 7 +forward 3 +forward 5 +forward 4 +down 5 +forward 2 +up 1 +up 3 +up 7 +forward 2 +forward 2 +up 6 +down 3 +down 7 +down 8 +forward 5 +up 5 +down 9 +forward 7 +down 2 +down 6 +forward 8 +down 1 +down 7 +down 2 +forward 2 +forward 4 +down 5 +up 5 +down 6 +down 5 +down 8 +forward 5 +forward 4 +down 3 +up 7 +up 4 +forward 7 +down 9 +down 3 +down 7 +forward 6 +up 4 +down 2 +down 9 +up 1 +down 2 +up 7 +down 7 +down 1 +down 5 +forward 9 +down 5 +down 8 +down 4 +down 5 +forward 3 +down 5 +forward 5 +down 6 +forward 6 +up 7 +down 7 +down 3 +down 8 +down 8 +up 5 +down 3 +up 4 +down 1 +up 4 +up 2 +up 2 +forward 6 +forward 3 +forward 4 +down 9 +up 2 +forward 2 +down 2 +down 6 +up 2 +forward 1 +up 4 +forward 5 +up 5 +forward 3 +forward 7 +down 2 +up 6 +forward 1 +up 6 +down 8 +forward 1 +forward 7 +up 3 +up 5 +forward 4 +down 1 +forward 7 +up 7 +forward 5 +forward 6 +forward 6 +forward 2 +down 6 +down 1 +forward 4 +forward 2 +forward 2 +up 2 +forward 1 +down 2 +down 8 +forward 5 +forward 3 +up 1 +forward 5 +down 8 +down 6 +down 1 +up 2 +down 1 +down 3 +forward 3 +up 9 +forward 5 +down 6 +up 8 +down 9 +up 4 +down 8 +forward 2 +forward 9 +forward 6 +forward 2 +up 5 +down 5 +down 6 +forward 2 +forward 3 +forward 5 +forward 7 +down 8 +forward 1 +forward 1 +forward 4 +forward 5 +down 4 +forward 6 +forward 4 +forward 6 +down 5 +down 8 +down 7 +up 9 +down 8 +forward 2 +down 9 +forward 3 +down 4 +up 1 +down 6 +forward 4 +down 9 +down 5 +down 3 +up 6 +down 1 +down 3 +forward 2 +down 7 +down 9 +forward 6 +forward 1 +forward 8 +down 6 +down 2 +down 2 +forward 7 +up 8 +forward 5 +forward 7 +forward 7 +forward 3 +up 3 +forward 3 +up 4 +down 5 +forward 1 +forward 7 +forward 7 +down 9 +up 4 +forward 1 +down 9 +forward 3 +forward 8 +down 3 +forward 6 +down 7 +down 2 +forward 1 +down 4 +down 6 +down 2 +forward 7 +forward 7 +down 9 +forward 7 +down 8 +forward 7 +down 5 +down 7 +forward 1 +forward 7 +up 6 +down 5 +forward 9 +down 2 +forward 7 +up 4 +down 1 +down 7 +forward 4 +down 2 +down 4 +forward 4 +down 8 +forward 3 +forward 2 +down 3 +down 4 +forward 2 +forward 6 +down 9 +down 3 +forward 9 +up 4 +up 1 +forward 7 +up 3 +up 8 +down 2 +up 2 +up 6 +forward 8 +down 3 +up 4 +up 6 +down 8 +forward 5 +down 1 +up 2 +up 5 +forward 7 +down 6 +up 4 +forward 1 +up 9 +forward 8 +down 3 +up 8 +down 3 +down 5 +up 6 +up 8 +down 2 +up 4 +down 1 +down 2 +forward 4 +up 9 +up 1 +up 2 +forward 4 +forward 9 +up 8 +forward 8 +down 8 +up 9 +forward 3 +forward 2 +down 7 +up 1 +up 8 +up 1 +up 6 +up 9 +forward 6 +forward 8 +forward 8 +forward 6 +down 2 +down 4 +forward 8 +up 3 +forward 1 +down 3 +down 1 +down 9 +up 9 +down 4 +forward 7 +down 3 +forward 1 +down 6 +forward 7 +forward 3 +forward 2 +down 5 +forward 6 +up 8 +forward 6 +forward 8 +down 1 +up 3 +down 1 +down 7 +up 2 +down 8 +forward 7 +down 1 +forward 5 +forward 5 +up 9 +down 1 +forward 6 +up 1 +forward 1 +down 8 +down 5 +forward 7 +forward 5 +forward 3 +down 2 +down 4 +forward 3 +forward 2 +forward 3 +down 1 +down 6 +down 8 +down 5 +forward 6 +forward 5 +down 8 +forward 2 +forward 6 +forward 1 +down 3 +down 7 +down 1 +down 1 +down 6 +down 5 +forward 1 +up 9 +down 4 +down 8 +forward 4 +down 3 +down 6 +down 9 +up 4 +forward 6 +down 1 +down 3 +up 5 +up 7 +forward 6 +up 6 +down 6 +down 2 +up 1 +forward 1 +down 3 +forward 2 +down 6 +down 5 +down 1 +down 5 +up 2 +down 3 +up 1 +forward 7 +down 3 +forward 5 +down 4 +up 1 +down 7 +forward 3 +up 9 +down 2 +up 5 +forward 7 +up 8 +forward 8 +forward 8 +up 8 +forward 8 +forward 1 +forward 2 +down 8 +forward 6 +down 3 +down 9 +forward 9 +forward 4 +down 6 +down 4 +forward 3 +up 2 +up 7 +down 9 +down 2 +forward 8 +down 2 +down 3 +down 7 +forward 9 +down 4 +up 3 +down 4 +down 5 +forward 9 +down 9 +forward 4 +forward 3 +down 6 +forward 4 +down 5 +down 2 +forward 1 +down 4 +forward 2 +up 3 +up 3 +forward 4 +down 4 +up 2 +up 8 +forward 8 +down 5 +down 8 +down 7 +down 7 +forward 6 +forward 5 +up 4 +down 6 +down 9 +forward 1 +down 3 +forward 8 +down 4 +forward 3 +down 7 +forward 3 +forward 3 +forward 1 +forward 5 +down 7 +forward 4 +up 5 +down 9 +down 3 +down 6 +down 6 +forward 1 +down 2 +forward 8 +forward 5 +forward 9 +up 2 +forward 5 +down 1 +up 2 +forward 7 +down 9 +down 2 +up 9 +down 6 +forward 4 +down 8 +forward 4 +down 7 +down 6 +up 7 +up 3 +forward 6 +forward 7 +down 4 +down 6 +up 1 +forward 6 +down 6 +forward 5 +forward 9 +forward 5 +forward 7 +down 3 +down 9 +forward 7 +forward 6 +down 2 +down 9 +down 8 +down 5 +forward 3 +up 5 +down 4 +forward 5 +down 8 +forward 8 +up 3 +down 5 +up 8 +down 5 +down 1 +down 3 +down 1 +down 8 +up 9 +forward 1 +forward 5 +forward 9 +forward 9 +down 6 +forward 3 +up 6 +up 2 +down 6 +forward 4 +down 7 +up 1 +up 3 +down 3 +up 3 +up 1 +down 9 +down 2 +up 6 +down 6 +forward 8 +forward 3 +forward 1 +up 9 +down 2 +forward 6 +down 1 +forward 5 +up 8 +down 2 +forward 7 +forward 2 +down 1 +forward 6 +up 7 +down 7 +forward 3 +down 8 +down 6 +forward 3 +down 9 +down 7 +forward 5 +forward 5 +down 1 +forward 3 +up 8 +forward 8 +down 3 +up 4 +up 6 +up 5 +up 6 +down 8 +up 9 +down 6 +up 5 +down 6 +forward 4 +down 7 +forward 5 +forward 2 +down 1 +down 5 +forward 4 +forward 4 +down 9 +forward 6 +down 4 +forward 1 +forward 3 +down 5 +forward 2 +up 3 +forward 6 +down 2 +up 5 +down 6 +down 6 +forward 3 +up 5 +forward 4 +forward 3 +forward 6 +forward 5 +forward 7 +down 5 +down 8 +up 6 +up 3 +down 1 +forward 6 +down 4 +forward 7 +up 3 +forward 9 +down 3 +forward 2 +forward 8 +down 9 +down 2 +up 8 +down 3 +down 6 +forward 8 +forward 6 +up 5 +forward 9 +forward 7 +down 9 +forward 5 +down 1 +up 5 +down 4 +up 2 +forward 1 +up 9 +forward 1 +forward 2 +down 1 +forward 5 +forward 8 +down 8 +up 3 +down 4 +forward 6 +down 9 +down 9 +forward 7 +forward 3 +down 3 +down 7 +forward 8 +forward 1 +forward 6 +down 8 +up 2 +up 6 +forward 2 +down 6 +up 3 +down 5 +forward 9 +down 6 +down 9 +down 8 +down 5 +forward 3 +forward 3 +down 1 +forward 7 +forward 5 +down 3 +down 1 +down 9 +forward 4 +up 9 +up 8 +down 2 +down 1 +forward 6 +forward 5 +up 8 +up 4 +down 7 +forward 9 +forward 9 +up 4 +forward 3 +down 6 +forward 1 +down 2 +forward 2 +down 6 +forward 4 +down 2 +forward 9 +down 3 +down 4 +forward 9 +forward 4 +forward 7 +forward 8 +down 7 +up 5 +forward 3 +forward 1 +down 3 +forward 2 +forward 5 +forward 5 +down 5 +down 5 +down 6 +forward 3 +up 4 +forward 6 +down 1 +down 3 +down 5 +down 6 +up 1 +forward 3 +forward 2 +up 9 +forward 6 +up 1 +down 9 +up 3 +down 4 +forward 1 +down 4 +forward 3 +forward 5 +down 2 +forward 5 +down 5 +down 9 +down 8 +forward 5 +forward 7 +down 1 +forward 2 +up 5 +up 9 +forward 4 +up 7 +down 9 +forward 9 +up 9 +down 5 +up 8 +forward 1 +forward 8 +up 9 +down 1 +down 3 +down 6 +forward 8 +forward 9 +down 7 +forward 8 +down 9 +forward 7 +up 6 +forward 7 +forward 3 +forward 5 +down 4 +forward 3 +up 8 +up 3 +down 7 +up 3 +forward 6 +down 7 +forward 5 +down 5 +forward 8 +down 4 +up 1 +up 1 +forward 9 +forward 8 +up 3 +down 5 +forward 8 +forward 6 +forward 9 +forward 5 +forward 3 +down 5 +forward 4 +down 6 +forward 9 +up 6 +down 3 +down 8 +down 5 +down 8 +down 4 +down 5 +down 2 +down 4 +down 8 +down 2 +down 7 +down 9 +down 5 +up 3 +down 1 +forward 6 +forward 4 +forward 1 +forward 6 +forward 4 +down 1 +forward 3 +forward 1 +forward 1 +down 5 +down 4 +up 6 +forward 2 +up 6 +down 8 +forward 1 +up 7 +down 4 +up 2 +down 3 +forward 6 +forward 2 +up 5 +forward 7 +down 8 +forward 6 +up 6 +down 9 +down 6 +down 5 +down 8 +down 5 +down 8 +down 2 +down 7 +up 6 +up 9 +down 3 +down 5 +forward 3 +up 7 +down 7 +up 8 +forward 4 +forward 2 +down 1 +up 1 +up 6 +up 2 +down 1 +down 6 +down 1 +forward 4 +down 6 +forward 9 +forward 2 +forward 1 +forward 7 +forward 5 \ No newline at end of file diff --git a/pkg/two/two.go b/pkg/two/two.go new file mode 100644 index 0000000..2a785e1 --- /dev/null +++ b/pkg/two/two.go @@ -0,0 +1,92 @@ +package two + +import ( + "bufio" + "fmt" + "log" + "os" + "strconv" + "strings" +) + +var depth int = 0 +var horizontalPosition int = 0 +var aim int = 0 + +func Run() { + commands := readInput() + for _, v := range commands { + command := strings.Split(v, " ") + switch command[0] { + case "forward": + i, _ := strconv.Atoi(command[1]) + forward(i, false) + case "up": + i, _ := strconv.Atoi(command[1]) + up(i, false) + case "down": + i, _ := strconv.Atoi(command[1]) + down(i, false) + } + } + fmt.Printf("1st final position: %d\n", horizontalPosition*depth) + + depth = 0 + horizontalPosition = 0 + + for _, v := range commands { + command := strings.Split(v, " ") + switch command[0] { + case "forward": + i, _ := strconv.Atoi(command[1]) + forward(i, true) + case "up": + i, _ := strconv.Atoi(command[1]) + up(i, true) + case "down": + i, _ := strconv.Atoi(command[1]) + down(i, true) + } + } + fmt.Printf("2nd final position: %d\n", horizontalPosition*depth) +} + +func up(d int, alt bool) { + if !alt { + depth -= d + } else { + aim -= d + } +} + +func down(d int, alt bool) { + if !alt { + depth += d + } else { + aim += d + } +} + +func forward(d int, alt bool) { + horizontalPosition += d + if alt { + depth += aim * d + } +} + +func readInput() []string { + file, err := os.Open("./pkg/two/input.txt") + if err != nil { + log.Fatal(err) + } + defer file.Close() + commands := make([]string, 0) + scanner := bufio.NewScanner(file) + for scanner.Scan() { + commands = append(commands, scanner.Text()) + } + if err := scanner.Err(); err != nil { + log.Fatal(err) + } + return commands +}