diff --git a/2021/2/1/go.mod b/2021/2/1/go.mod new file mode 100644 index 0000000..3154154 --- /dev/null +++ b/2021/2/1/go.mod @@ -0,0 +1,3 @@ +module AoC/2021/2/1 + +go 1.17 diff --git a/2021/2/1/input b/2021/2/1/input new file mode 100644 index 0000000..1b4c7de --- /dev/null +++ b/2021/2/1/input @@ -0,0 +1,1000 @@ +forward 5 +down 7 +forward 8 +forward 1 +forward 1 +down 1 +down 9 +up 4 +down 5 +down 3 +up 1 +up 1 +forward 1 +up 2 +forward 5 +forward 4 +forward 7 +down 4 +up 9 +forward 5 +down 5 +forward 2 +forward 1 +forward 3 +down 6 +up 8 +up 8 +forward 8 +up 7 +down 3 +down 4 +forward 2 +down 9 +forward 9 +down 7 +down 9 +forward 8 +down 5 +forward 9 +forward 2 +forward 7 +down 4 +forward 8 +down 4 +up 7 +forward 7 +forward 7 +forward 5 +forward 1 +down 1 +down 5 +forward 9 +forward 9 +down 2 +down 2 +down 2 +forward 4 +forward 3 +forward 2 +down 7 +down 7 +forward 8 +forward 3 +forward 1 +up 4 +forward 9 +down 1 +up 2 +forward 3 +forward 7 +up 6 +up 9 +forward 4 +down 8 +down 5 +down 9 +forward 9 +forward 4 +forward 5 +forward 3 +down 9 +forward 1 +forward 7 +down 5 +forward 5 +forward 3 +down 6 +down 5 +down 8 +forward 6 +down 2 +forward 2 +down 6 +forward 1 +up 5 +up 3 +forward 7 +down 2 +forward 2 +forward 1 +forward 9 +up 9 +up 3 +forward 5 +down 5 +forward 9 +up 9 +down 7 +down 1 +up 9 +down 7 +up 4 +forward 1 +up 2 +up 5 +down 2 +forward 1 +down 3 +forward 5 +down 4 +down 1 +down 2 +down 4 +down 5 +forward 3 +forward 2 +forward 6 +forward 8 +forward 6 +down 4 +up 7 +forward 2 +down 3 +down 7 +down 1 +forward 7 +forward 1 +forward 9 +forward 8 +forward 3 +up 8 +forward 4 +up 7 +up 8 +forward 2 +forward 5 +down 2 +down 1 +forward 1 +up 6 +down 7 +forward 2 +up 6 +up 2 +forward 5 +down 5 +forward 5 +forward 3 +up 7 +forward 1 +down 3 +forward 4 +up 5 +forward 6 +forward 1 +up 6 +up 7 +forward 1 +forward 2 +up 6 +up 6 +forward 1 +forward 5 +up 9 +down 4 +down 9 +down 2 +down 5 +down 7 +down 3 +down 2 +down 7 +forward 8 +down 1 +forward 6 +forward 4 +up 8 +up 6 +forward 5 +forward 3 +forward 3 +down 9 +up 1 +up 3 +up 1 +up 8 +up 9 +down 5 +down 5 +forward 2 +forward 5 +down 9 +down 1 +down 4 +forward 5 +up 9 +forward 2 +forward 8 +up 1 +down 9 +down 9 +down 2 +down 9 +up 5 +forward 7 +down 3 +forward 3 +down 2 +forward 4 +forward 9 +forward 6 +down 1 +down 4 +down 4 +down 7 +down 6 +down 7 +forward 8 +forward 1 +forward 6 +forward 8 +up 1 +down 2 +down 8 +forward 4 +forward 2 +down 1 +down 1 +down 9 +forward 4 +down 3 +down 5 +down 7 +down 8 +forward 9 +forward 9 +forward 4 +down 9 +down 5 +up 3 +up 2 +forward 9 +down 6 +forward 4 +down 9 +forward 9 +up 6 +up 3 +forward 3 +down 1 +up 1 +forward 1 +forward 8 +up 4 +up 9 +forward 9 +down 9 +up 4 +down 4 +up 7 +forward 1 +down 7 +forward 9 +down 3 +forward 5 +forward 4 +down 1 +down 6 +down 5 +down 2 +forward 7 +down 2 +forward 1 +down 6 +forward 8 +down 3 +down 7 +down 1 +down 8 +up 4 +forward 7 +forward 9 +forward 1 +forward 9 +forward 8 +forward 9 +down 4 +up 6 +down 2 +up 8 +down 7 +down 5 +up 2 +up 7 +down 9 +up 1 +forward 1 +down 9 +forward 9 +forward 2 +forward 1 +up 9 +down 5 +down 1 +forward 7 +down 5 +forward 6 +down 3 +forward 2 +up 4 +down 8 +down 9 +down 9 +forward 6 +forward 6 +down 2 +forward 7 +up 2 +forward 4 +down 6 +down 4 +up 1 +up 5 +up 2 +down 7 +down 4 +down 4 +up 7 +forward 8 +up 5 +down 3 +forward 9 +forward 8 +down 5 +forward 2 +up 5 +down 6 +down 8 +forward 2 +forward 7 +up 8 +forward 3 +up 4 +up 8 +forward 8 +forward 2 +forward 8 +down 4 +down 9 +down 1 +down 4 +down 3 +forward 9 +forward 5 +down 8 +forward 7 +down 4 +up 1 +down 4 +down 9 +forward 4 +forward 9 +down 8 +down 4 +down 2 +forward 5 +forward 2 +forward 4 +forward 4 +forward 5 +down 4 +up 4 +up 9 +down 7 +forward 2 +up 5 +forward 3 +down 5 +down 8 +down 8 +down 4 +forward 9 +forward 4 +forward 3 +down 4 +down 4 +down 3 +up 6 +up 2 +forward 4 +up 8 +down 1 +forward 2 +forward 4 +down 7 +forward 7 +forward 3 +down 3 +down 1 +up 6 +up 7 +down 9 +up 7 +forward 9 +forward 6 +forward 4 +down 2 +forward 4 +forward 4 +forward 9 +down 5 +forward 4 +down 9 +up 9 +up 6 +forward 6 +down 6 +forward 4 +down 3 +forward 4 +down 9 +up 1 +down 5 +down 4 +forward 4 +down 7 +down 3 +down 6 +down 5 +forward 4 +forward 3 +down 5 +forward 6 +down 3 +up 2 +down 2 +up 5 +down 4 +forward 9 +forward 1 +down 8 +forward 8 +up 9 +down 3 +down 4 +forward 1 +forward 2 +up 3 +down 9 +up 9 +forward 3 +down 8 +forward 7 +forward 4 +forward 2 +up 9 +forward 5 +forward 7 +forward 9 +up 4 +forward 2 +forward 7 +down 6 +down 2 +up 5 +forward 3 +down 8 +up 9 +forward 1 +forward 9 +down 1 +up 3 +down 5 +up 8 +down 1 +forward 1 +forward 8 +forward 7 +up 9 +forward 6 +forward 5 +forward 9 +down 2 +forward 4 +down 9 +forward 1 +up 4 +forward 2 +down 9 +down 8 +down 5 +up 9 +forward 6 +down 7 +up 8 +forward 9 +up 5 +down 3 +forward 2 +forward 5 +forward 6 +up 5 +forward 6 +down 7 +down 4 +forward 3 +down 8 +forward 9 +down 2 +forward 7 +down 5 +down 2 +forward 5 +forward 9 +forward 3 +up 3 +up 7 +down 4 +forward 3 +up 8 +forward 8 +forward 1 +down 4 +forward 4 +forward 2 +forward 6 +up 1 +down 7 +forward 3 +down 6 +down 7 +forward 4 +forward 5 +up 9 +forward 3 +forward 6 +down 2 +down 1 +forward 5 +up 6 +down 3 +forward 9 +down 8 +up 3 +up 5 +up 6 +down 7 +forward 1 +down 8 +forward 7 +down 3 +forward 1 +up 9 +down 4 +up 9 +forward 9 +down 4 +forward 3 +up 3 +down 1 +up 3 +up 6 +forward 9 +forward 6 +down 9 +down 8 +forward 9 +up 8 +down 8 +forward 4 +forward 3 +forward 2 +down 6 +down 7 +down 1 +down 2 +down 2 +down 5 +forward 8 +forward 2 +down 4 +forward 4 +down 5 +forward 9 +forward 1 +down 9 +up 4 +up 5 +up 9 +forward 5 +down 6 +up 7 +forward 1 +up 8 +up 3 +forward 2 +down 1 +forward 3 +up 8 +up 7 +down 8 +down 9 +forward 7 +down 2 +up 5 +up 8 +down 3 +forward 3 +forward 1 +up 7 +down 3 +up 9 +down 8 +up 5 +forward 1 +down 8 +up 4 +up 7 +down 2 +down 9 +forward 3 +up 4 +forward 4 +down 9 +forward 1 +forward 3 +forward 9 +up 6 +forward 7 +up 8 +forward 5 +down 2 +down 2 +forward 4 +down 6 +forward 7 +forward 9 +up 8 +forward 2 +up 6 +forward 6 +forward 1 +forward 5 +forward 9 +forward 5 +forward 1 +forward 8 +forward 4 +forward 1 +down 2 +forward 3 +forward 8 +forward 6 +forward 1 +down 7 +forward 1 +up 2 +forward 6 +up 2 +up 8 +down 3 +down 9 +forward 2 +forward 3 +up 9 +down 7 +forward 6 +up 3 +forward 4 +forward 1 +up 4 +down 1 +down 3 +down 7 +down 4 +forward 4 +forward 5 +up 6 +down 4 +down 9 +down 2 +forward 4 +down 6 +forward 4 +forward 5 +forward 3 +down 9 +down 3 +up 8 +down 2 +down 8 +up 3 +down 1 +forward 1 +forward 3 +down 8 +up 3 +up 8 +up 1 +down 3 +down 9 +down 9 +down 6 +forward 9 +down 7 +down 7 +down 4 +forward 3 +forward 3 +down 2 +down 6 +up 9 +forward 9 +down 9 +forward 9 +down 8 +down 1 +up 3 +forward 4 +up 2 +forward 8 +up 9 +forward 8 +up 5 +forward 9 +down 7 +forward 9 +forward 7 +down 9 +down 6 +down 5 +forward 5 +forward 1 +forward 8 +up 1 +up 7 +up 5 +forward 3 +down 1 +forward 4 +up 6 +up 3 +down 1 +forward 4 +down 4 +forward 4 +forward 5 +down 2 +down 7 +down 1 +forward 5 +forward 2 +forward 5 +forward 1 +forward 1 +down 7 +up 7 +forward 8 +down 7 +forward 6 +forward 2 +down 9 +forward 2 +down 7 +down 5 +up 1 +down 6 +down 7 +down 6 +down 1 +forward 5 +down 5 +forward 6 +up 9 +forward 9 +up 1 +down 9 +forward 4 +down 6 +down 2 +forward 3 +down 9 +up 6 +forward 1 +down 2 +forward 8 +forward 7 +forward 4 +forward 2 +forward 7 +forward 1 +down 9 +forward 7 +down 4 +up 6 +down 7 +forward 1 +up 8 +forward 5 +up 3 +up 1 +down 6 +forward 9 +up 7 +up 5 +down 2 +up 9 +up 4 +forward 1 +forward 1 +forward 9 +down 3 +down 6 +forward 1 +up 6 +up 9 +down 9 +forward 7 +forward 8 +up 9 +up 4 +down 8 +up 3 +down 8 +forward 9 +down 3 +down 6 +forward 7 +up 4 +forward 7 +down 2 +down 6 +up 4 +down 8 +down 4 +down 2 +up 5 +down 4 +down 2 +forward 9 +up 9 +forward 3 +down 9 +up 1 +down 8 +down 5 +forward 5 +forward 3 +up 3 +forward 9 +down 1 +forward 1 +up 2 +down 9 +forward 5 +forward 6 +up 3 +forward 2 +forward 8 +down 9 +up 7 +down 8 +up 5 +forward 9 +forward 3 +down 7 +forward 9 +down 8 +forward 7 +down 6 +down 6 +down 1 +up 4 +up 1 +forward 3 +down 7 +up 3 +down 3 +forward 5 +down 8 +forward 2 +down 9 +forward 6 +down 6 +down 6 +forward 9 +down 2 +forward 6 +up 7 +down 3 +up 5 +forward 4 +down 7 +forward 8 +forward 9 +forward 7 +down 3 +forward 7 +forward 2 +down 6 +forward 6 +down 2 +down 1 +forward 4 +forward 5 +up 6 +forward 7 +up 3 +up 5 +forward 2 +forward 8 +forward 9 +down 2 +forward 4 +forward 5 +down 7 +up 8 +forward 9 +forward 9 +down 3 +down 1 +forward 2 +forward 2 +down 9 +up 5 +down 5 +up 5 +down 2 +forward 1 +down 2 +down 9 +down 1 +forward 2 +down 9 +down 1 +forward 7 +down 8 +down 5 +down 1 +up 5 +forward 4 +down 8 +down 6 +down 6 +forward 9 +up 7 +up 2 +up 8 +down 1 +forward 9 +down 9 +down 5 +forward 2 +down 7 +up 8 +forward 5 +up 2 +down 1 +down 8 +up 5 +forward 1 +forward 1 +down 7 +up 2 +down 3 +up 6 +down 6 +forward 7 +down 3 +forward 8 +down 1 +down 4 +down 3 +up 8 +down 9 +up 2 +up 5 +forward 2 +forward 5 +forward 8 +up 7 +forward 4 +forward 2 +forward 2 +forward 3 +up 4 +down 3 +forward 7 +forward 9 +forward 7 diff --git a/2021/2/1/main.go b/2021/2/1/main.go new file mode 100644 index 0000000..b7a8820 --- /dev/null +++ b/2021/2/1/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "regexp" + "strconv" + "strings" +) + +func main() { + horizontal := 0 + depth := 0 + + input, err := os.Open("input") + if err != nil { + panic(err) + } + defer input.Close() + + scanner := bufio.NewScanner(input) + + for scanner.Scan() { + line := scanner.Text() + re := regexp.MustCompile("[0-9]+") + if !re.MatchString(line) { + panic("Instruction does not contain number") + } + + number, err := strconv.Atoi(re.FindString(line)) + + if err != nil { + panic(err) + } + + + if strings.HasPrefix(line, "forward") { + horizontal += number + } else if strings.HasPrefix(line, "up") { + depth -= number + } else if strings.HasPrefix(line, "down") { + depth += number + } else { + panic("Unknown instruction") + } + } + + fmt.Println(horizontal, depth, horizontal*depth) + + if err := scanner.Err(); err != nil { + panic(err) + } +} + diff --git a/2021/2/2/go.mod b/2021/2/2/go.mod new file mode 100644 index 0000000..3154154 --- /dev/null +++ b/2021/2/2/go.mod @@ -0,0 +1,3 @@ +module AoC/2021/2/1 + +go 1.17 diff --git a/2021/2/2/input b/2021/2/2/input new file mode 100644 index 0000000..1b4c7de --- /dev/null +++ b/2021/2/2/input @@ -0,0 +1,1000 @@ +forward 5 +down 7 +forward 8 +forward 1 +forward 1 +down 1 +down 9 +up 4 +down 5 +down 3 +up 1 +up 1 +forward 1 +up 2 +forward 5 +forward 4 +forward 7 +down 4 +up 9 +forward 5 +down 5 +forward 2 +forward 1 +forward 3 +down 6 +up 8 +up 8 +forward 8 +up 7 +down 3 +down 4 +forward 2 +down 9 +forward 9 +down 7 +down 9 +forward 8 +down 5 +forward 9 +forward 2 +forward 7 +down 4 +forward 8 +down 4 +up 7 +forward 7 +forward 7 +forward 5 +forward 1 +down 1 +down 5 +forward 9 +forward 9 +down 2 +down 2 +down 2 +forward 4 +forward 3 +forward 2 +down 7 +down 7 +forward 8 +forward 3 +forward 1 +up 4 +forward 9 +down 1 +up 2 +forward 3 +forward 7 +up 6 +up 9 +forward 4 +down 8 +down 5 +down 9 +forward 9 +forward 4 +forward 5 +forward 3 +down 9 +forward 1 +forward 7 +down 5 +forward 5 +forward 3 +down 6 +down 5 +down 8 +forward 6 +down 2 +forward 2 +down 6 +forward 1 +up 5 +up 3 +forward 7 +down 2 +forward 2 +forward 1 +forward 9 +up 9 +up 3 +forward 5 +down 5 +forward 9 +up 9 +down 7 +down 1 +up 9 +down 7 +up 4 +forward 1 +up 2 +up 5 +down 2 +forward 1 +down 3 +forward 5 +down 4 +down 1 +down 2 +down 4 +down 5 +forward 3 +forward 2 +forward 6 +forward 8 +forward 6 +down 4 +up 7 +forward 2 +down 3 +down 7 +down 1 +forward 7 +forward 1 +forward 9 +forward 8 +forward 3 +up 8 +forward 4 +up 7 +up 8 +forward 2 +forward 5 +down 2 +down 1 +forward 1 +up 6 +down 7 +forward 2 +up 6 +up 2 +forward 5 +down 5 +forward 5 +forward 3 +up 7 +forward 1 +down 3 +forward 4 +up 5 +forward 6 +forward 1 +up 6 +up 7 +forward 1 +forward 2 +up 6 +up 6 +forward 1 +forward 5 +up 9 +down 4 +down 9 +down 2 +down 5 +down 7 +down 3 +down 2 +down 7 +forward 8 +down 1 +forward 6 +forward 4 +up 8 +up 6 +forward 5 +forward 3 +forward 3 +down 9 +up 1 +up 3 +up 1 +up 8 +up 9 +down 5 +down 5 +forward 2 +forward 5 +down 9 +down 1 +down 4 +forward 5 +up 9 +forward 2 +forward 8 +up 1 +down 9 +down 9 +down 2 +down 9 +up 5 +forward 7 +down 3 +forward 3 +down 2 +forward 4 +forward 9 +forward 6 +down 1 +down 4 +down 4 +down 7 +down 6 +down 7 +forward 8 +forward 1 +forward 6 +forward 8 +up 1 +down 2 +down 8 +forward 4 +forward 2 +down 1 +down 1 +down 9 +forward 4 +down 3 +down 5 +down 7 +down 8 +forward 9 +forward 9 +forward 4 +down 9 +down 5 +up 3 +up 2 +forward 9 +down 6 +forward 4 +down 9 +forward 9 +up 6 +up 3 +forward 3 +down 1 +up 1 +forward 1 +forward 8 +up 4 +up 9 +forward 9 +down 9 +up 4 +down 4 +up 7 +forward 1 +down 7 +forward 9 +down 3 +forward 5 +forward 4 +down 1 +down 6 +down 5 +down 2 +forward 7 +down 2 +forward 1 +down 6 +forward 8 +down 3 +down 7 +down 1 +down 8 +up 4 +forward 7 +forward 9 +forward 1 +forward 9 +forward 8 +forward 9 +down 4 +up 6 +down 2 +up 8 +down 7 +down 5 +up 2 +up 7 +down 9 +up 1 +forward 1 +down 9 +forward 9 +forward 2 +forward 1 +up 9 +down 5 +down 1 +forward 7 +down 5 +forward 6 +down 3 +forward 2 +up 4 +down 8 +down 9 +down 9 +forward 6 +forward 6 +down 2 +forward 7 +up 2 +forward 4 +down 6 +down 4 +up 1 +up 5 +up 2 +down 7 +down 4 +down 4 +up 7 +forward 8 +up 5 +down 3 +forward 9 +forward 8 +down 5 +forward 2 +up 5 +down 6 +down 8 +forward 2 +forward 7 +up 8 +forward 3 +up 4 +up 8 +forward 8 +forward 2 +forward 8 +down 4 +down 9 +down 1 +down 4 +down 3 +forward 9 +forward 5 +down 8 +forward 7 +down 4 +up 1 +down 4 +down 9 +forward 4 +forward 9 +down 8 +down 4 +down 2 +forward 5 +forward 2 +forward 4 +forward 4 +forward 5 +down 4 +up 4 +up 9 +down 7 +forward 2 +up 5 +forward 3 +down 5 +down 8 +down 8 +down 4 +forward 9 +forward 4 +forward 3 +down 4 +down 4 +down 3 +up 6 +up 2 +forward 4 +up 8 +down 1 +forward 2 +forward 4 +down 7 +forward 7 +forward 3 +down 3 +down 1 +up 6 +up 7 +down 9 +up 7 +forward 9 +forward 6 +forward 4 +down 2 +forward 4 +forward 4 +forward 9 +down 5 +forward 4 +down 9 +up 9 +up 6 +forward 6 +down 6 +forward 4 +down 3 +forward 4 +down 9 +up 1 +down 5 +down 4 +forward 4 +down 7 +down 3 +down 6 +down 5 +forward 4 +forward 3 +down 5 +forward 6 +down 3 +up 2 +down 2 +up 5 +down 4 +forward 9 +forward 1 +down 8 +forward 8 +up 9 +down 3 +down 4 +forward 1 +forward 2 +up 3 +down 9 +up 9 +forward 3 +down 8 +forward 7 +forward 4 +forward 2 +up 9 +forward 5 +forward 7 +forward 9 +up 4 +forward 2 +forward 7 +down 6 +down 2 +up 5 +forward 3 +down 8 +up 9 +forward 1 +forward 9 +down 1 +up 3 +down 5 +up 8 +down 1 +forward 1 +forward 8 +forward 7 +up 9 +forward 6 +forward 5 +forward 9 +down 2 +forward 4 +down 9 +forward 1 +up 4 +forward 2 +down 9 +down 8 +down 5 +up 9 +forward 6 +down 7 +up 8 +forward 9 +up 5 +down 3 +forward 2 +forward 5 +forward 6 +up 5 +forward 6 +down 7 +down 4 +forward 3 +down 8 +forward 9 +down 2 +forward 7 +down 5 +down 2 +forward 5 +forward 9 +forward 3 +up 3 +up 7 +down 4 +forward 3 +up 8 +forward 8 +forward 1 +down 4 +forward 4 +forward 2 +forward 6 +up 1 +down 7 +forward 3 +down 6 +down 7 +forward 4 +forward 5 +up 9 +forward 3 +forward 6 +down 2 +down 1 +forward 5 +up 6 +down 3 +forward 9 +down 8 +up 3 +up 5 +up 6 +down 7 +forward 1 +down 8 +forward 7 +down 3 +forward 1 +up 9 +down 4 +up 9 +forward 9 +down 4 +forward 3 +up 3 +down 1 +up 3 +up 6 +forward 9 +forward 6 +down 9 +down 8 +forward 9 +up 8 +down 8 +forward 4 +forward 3 +forward 2 +down 6 +down 7 +down 1 +down 2 +down 2 +down 5 +forward 8 +forward 2 +down 4 +forward 4 +down 5 +forward 9 +forward 1 +down 9 +up 4 +up 5 +up 9 +forward 5 +down 6 +up 7 +forward 1 +up 8 +up 3 +forward 2 +down 1 +forward 3 +up 8 +up 7 +down 8 +down 9 +forward 7 +down 2 +up 5 +up 8 +down 3 +forward 3 +forward 1 +up 7 +down 3 +up 9 +down 8 +up 5 +forward 1 +down 8 +up 4 +up 7 +down 2 +down 9 +forward 3 +up 4 +forward 4 +down 9 +forward 1 +forward 3 +forward 9 +up 6 +forward 7 +up 8 +forward 5 +down 2 +down 2 +forward 4 +down 6 +forward 7 +forward 9 +up 8 +forward 2 +up 6 +forward 6 +forward 1 +forward 5 +forward 9 +forward 5 +forward 1 +forward 8 +forward 4 +forward 1 +down 2 +forward 3 +forward 8 +forward 6 +forward 1 +down 7 +forward 1 +up 2 +forward 6 +up 2 +up 8 +down 3 +down 9 +forward 2 +forward 3 +up 9 +down 7 +forward 6 +up 3 +forward 4 +forward 1 +up 4 +down 1 +down 3 +down 7 +down 4 +forward 4 +forward 5 +up 6 +down 4 +down 9 +down 2 +forward 4 +down 6 +forward 4 +forward 5 +forward 3 +down 9 +down 3 +up 8 +down 2 +down 8 +up 3 +down 1 +forward 1 +forward 3 +down 8 +up 3 +up 8 +up 1 +down 3 +down 9 +down 9 +down 6 +forward 9 +down 7 +down 7 +down 4 +forward 3 +forward 3 +down 2 +down 6 +up 9 +forward 9 +down 9 +forward 9 +down 8 +down 1 +up 3 +forward 4 +up 2 +forward 8 +up 9 +forward 8 +up 5 +forward 9 +down 7 +forward 9 +forward 7 +down 9 +down 6 +down 5 +forward 5 +forward 1 +forward 8 +up 1 +up 7 +up 5 +forward 3 +down 1 +forward 4 +up 6 +up 3 +down 1 +forward 4 +down 4 +forward 4 +forward 5 +down 2 +down 7 +down 1 +forward 5 +forward 2 +forward 5 +forward 1 +forward 1 +down 7 +up 7 +forward 8 +down 7 +forward 6 +forward 2 +down 9 +forward 2 +down 7 +down 5 +up 1 +down 6 +down 7 +down 6 +down 1 +forward 5 +down 5 +forward 6 +up 9 +forward 9 +up 1 +down 9 +forward 4 +down 6 +down 2 +forward 3 +down 9 +up 6 +forward 1 +down 2 +forward 8 +forward 7 +forward 4 +forward 2 +forward 7 +forward 1 +down 9 +forward 7 +down 4 +up 6 +down 7 +forward 1 +up 8 +forward 5 +up 3 +up 1 +down 6 +forward 9 +up 7 +up 5 +down 2 +up 9 +up 4 +forward 1 +forward 1 +forward 9 +down 3 +down 6 +forward 1 +up 6 +up 9 +down 9 +forward 7 +forward 8 +up 9 +up 4 +down 8 +up 3 +down 8 +forward 9 +down 3 +down 6 +forward 7 +up 4 +forward 7 +down 2 +down 6 +up 4 +down 8 +down 4 +down 2 +up 5 +down 4 +down 2 +forward 9 +up 9 +forward 3 +down 9 +up 1 +down 8 +down 5 +forward 5 +forward 3 +up 3 +forward 9 +down 1 +forward 1 +up 2 +down 9 +forward 5 +forward 6 +up 3 +forward 2 +forward 8 +down 9 +up 7 +down 8 +up 5 +forward 9 +forward 3 +down 7 +forward 9 +down 8 +forward 7 +down 6 +down 6 +down 1 +up 4 +up 1 +forward 3 +down 7 +up 3 +down 3 +forward 5 +down 8 +forward 2 +down 9 +forward 6 +down 6 +down 6 +forward 9 +down 2 +forward 6 +up 7 +down 3 +up 5 +forward 4 +down 7 +forward 8 +forward 9 +forward 7 +down 3 +forward 7 +forward 2 +down 6 +forward 6 +down 2 +down 1 +forward 4 +forward 5 +up 6 +forward 7 +up 3 +up 5 +forward 2 +forward 8 +forward 9 +down 2 +forward 4 +forward 5 +down 7 +up 8 +forward 9 +forward 9 +down 3 +down 1 +forward 2 +forward 2 +down 9 +up 5 +down 5 +up 5 +down 2 +forward 1 +down 2 +down 9 +down 1 +forward 2 +down 9 +down 1 +forward 7 +down 8 +down 5 +down 1 +up 5 +forward 4 +down 8 +down 6 +down 6 +forward 9 +up 7 +up 2 +up 8 +down 1 +forward 9 +down 9 +down 5 +forward 2 +down 7 +up 8 +forward 5 +up 2 +down 1 +down 8 +up 5 +forward 1 +forward 1 +down 7 +up 2 +down 3 +up 6 +down 6 +forward 7 +down 3 +forward 8 +down 1 +down 4 +down 3 +up 8 +down 9 +up 2 +up 5 +forward 2 +forward 5 +forward 8 +up 7 +forward 4 +forward 2 +forward 2 +forward 3 +up 4 +down 3 +forward 7 +forward 9 +forward 7 diff --git a/2021/2/2/main.go b/2021/2/2/main.go new file mode 100644 index 0000000..9b2dfcc --- /dev/null +++ b/2021/2/2/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "regexp" + "strconv" + "strings" +) + +func main() { + horizontal := 0 + depth := 0 + aim := 0 + + input, err := os.Open("input") + if err != nil { + panic(err) + } + defer input.Close() + + scanner := bufio.NewScanner(input) + + for scanner.Scan() { + line := scanner.Text() + re := regexp.MustCompile("[0-9]+") + if !re.MatchString(line) { + panic("Instruction does not contain number") + } + + number, err := strconv.Atoi(re.FindString(line)) + if err != nil { + panic(err) + } + + if strings.HasPrefix(line, "forward") { + horizontal += number + depth += aim * number + } else if strings.HasPrefix(line, "up") { + aim -= number + } else if strings.HasPrefix(line, "down") { + aim += number + } else { + panic("Unknown instruction") + } + } + + fmt.Println(horizontal, depth, horizontal*depth) + + if err := scanner.Err(); err != nil { + panic(err) + } +} +