From 03b3643eb69deb9cc01cabba58a995e733058145 Mon Sep 17 00:00:00 2001 From: sgf Date: Sat, 11 Dec 2021 16:58:07 +0300 Subject: [PATCH] new(go): Solve day 2 first puzzle. --- day2/in.txt | 6 + day2/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++ day2/main.go | 86 +++++ main.go | 9 +- 4 files changed, 1098 insertions(+), 3 deletions(-) create mode 100644 day2/in.txt create mode 100644 day2/input.txt create mode 100644 day2/main.go diff --git a/day2/in.txt b/day2/in.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/day2/in.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..2efbeb6 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,1000 @@ +forward 9 +down 9 +down 6 +up 2 +down 5 +forward 3 +forward 6 +forward 8 +down 8 +up 4 +down 5 +down 4 +up 6 +down 7 +forward 5 +forward 5 +down 9 +down 5 +up 4 +forward 1 +forward 7 +down 8 +up 2 +down 1 +down 3 +up 7 +up 5 +down 8 +down 6 +forward 9 +up 8 +down 4 +forward 9 +forward 4 +forward 1 +up 9 +forward 5 +forward 1 +down 2 +down 7 +forward 5 +up 8 +forward 1 +down 9 +down 3 +forward 6 +up 6 +down 4 +forward 6 +down 3 +forward 5 +forward 1 +down 3 +forward 3 +down 8 +down 2 +forward 8 +forward 1 +up 4 +forward 4 +down 1 +down 5 +forward 2 +forward 9 +forward 5 +down 2 +up 9 +forward 2 +down 2 +down 2 +down 9 +up 8 +down 3 +forward 8 +down 4 +up 3 +down 1 +forward 7 +down 7 +forward 9 +down 2 +up 9 +up 3 +down 2 +up 2 +forward 8 +down 3 +forward 2 +forward 6 +down 5 +up 9 +forward 6 +forward 7 +down 3 +forward 1 +down 2 +forward 8 +up 5 +down 6 +forward 1 +down 8 +down 5 +forward 4 +down 5 +forward 3 +forward 5 +up 3 +down 4 +down 8 +up 7 +down 7 +forward 3 +down 2 +forward 3 +up 2 +down 1 +up 2 +forward 4 +forward 2 +down 1 +up 9 +forward 5 +forward 7 +down 6 +down 3 +down 5 +down 4 +up 4 +forward 8 +down 6 +forward 1 +forward 6 +down 8 +down 2 +down 3 +up 8 +forward 9 +down 5 +down 6 +forward 7 +down 2 +forward 6 +up 3 +up 6 +forward 2 +up 8 +up 2 +up 4 +forward 3 +forward 4 +down 7 +up 1 +forward 5 +forward 1 +forward 9 +forward 8 +up 6 +forward 4 +forward 2 +up 9 +forward 8 +down 2 +forward 4 +forward 4 +forward 6 +down 3 +forward 8 +forward 7 +forward 6 +forward 3 +down 5 +down 3 +forward 4 +forward 7 +forward 4 +forward 3 +forward 1 +forward 1 +up 1 +down 4 +up 5 +up 4 +up 8 +forward 7 +forward 4 +forward 3 +up 6 +up 4 +down 4 +up 4 +down 6 +forward 1 +forward 5 +up 3 +forward 5 +up 9 +down 9 +forward 1 +down 3 +forward 7 +up 2 +up 1 +down 8 +forward 9 +forward 3 +forward 2 +forward 6 +down 2 +forward 4 +up 9 +forward 6 +forward 8 +down 5 +down 6 +forward 7 +forward 5 +forward 6 +forward 9 +forward 5 +up 3 +forward 2 +forward 2 +forward 8 +down 5 +forward 9 +forward 7 +forward 5 +up 2 +up 7 +forward 7 +forward 9 +down 9 +up 5 +up 5 +up 1 +forward 8 +forward 3 +forward 2 +forward 4 +down 7 +down 7 +forward 7 +down 2 +forward 4 +down 6 +down 8 +down 5 +down 9 +forward 1 +forward 4 +forward 1 +forward 1 +up 5 +down 5 +up 7 +up 7 +down 6 +down 5 +forward 9 +up 7 +down 2 +down 9 +down 9 +forward 3 +up 9 +down 7 +down 2 +up 6 +down 9 +down 6 +up 3 +up 6 +forward 4 +forward 6 +down 2 +up 3 +down 3 +forward 8 +up 1 +forward 8 +forward 5 +forward 4 +forward 9 +forward 8 +up 1 +forward 2 +down 8 +up 9 +forward 3 +forward 9 +down 3 +down 8 +down 5 +up 5 +up 3 +down 5 +down 4 +down 2 +forward 1 +forward 8 +down 3 +down 1 +down 5 +down 1 +up 1 +down 4 +forward 6 +down 5 +down 7 +forward 4 +down 2 +down 2 +up 1 +forward 9 +down 2 +forward 7 +up 4 +down 8 +down 5 +up 2 +down 7 +forward 7 +up 4 +down 8 +forward 9 +up 3 +down 9 +forward 4 +forward 5 +up 6 +forward 5 +down 6 +down 3 +down 1 +down 6 +forward 7 +forward 3 +forward 4 +up 8 +forward 7 +down 3 +up 2 +up 3 +up 5 +forward 4 +forward 9 +forward 1 +down 2 +forward 4 +forward 1 +forward 6 +down 6 +forward 8 +down 2 +forward 7 +down 5 +forward 6 +down 4 +down 8 +down 6 +forward 9 +forward 2 +forward 4 +forward 9 +down 1 +down 9 +forward 2 +down 3 +forward 2 +down 4 +down 6 +up 5 +forward 9 +forward 1 +down 1 +forward 8 +forward 7 +forward 2 +forward 4 +forward 3 +up 8 +down 4 +forward 5 +up 5 +forward 4 +up 5 +forward 7 +up 7 +forward 5 +down 3 +up 9 +up 2 +forward 9 +forward 8 +forward 7 +down 8 +forward 8 +down 2 +forward 7 +forward 4 +down 7 +up 4 +forward 2 +forward 1 +up 5 +forward 5 +down 5 +down 1 +down 7 +up 6 +down 5 +down 6 +forward 2 +forward 2 +forward 8 +down 9 +down 4 +down 3 +forward 7 +forward 6 +forward 5 +up 9 +forward 8 +forward 9 +forward 4 +down 9 +down 6 +down 2 +down 7 +up 3 +forward 3 +forward 5 +up 6 +down 7 +down 3 +forward 3 +down 5 +down 2 +down 4 +up 4 +down 5 +forward 3 +forward 1 +forward 7 +down 7 +forward 8 +up 7 +forward 3 +forward 8 +down 9 +down 1 +forward 4 +forward 4 +forward 5 +forward 6 +down 5 +down 6 +forward 6 +down 5 +down 7 +forward 2 +down 1 +down 8 +down 3 +down 4 +forward 9 +forward 4 +down 4 +up 4 +down 3 +forward 5 +down 4 +forward 3 +forward 9 +up 7 +down 5 +down 1 +forward 8 +down 2 +forward 9 +forward 6 +forward 3 +down 7 +forward 2 +forward 5 +down 6 +forward 1 +forward 7 +up 1 +forward 3 +forward 7 +forward 3 +forward 5 +down 5 +forward 6 +forward 9 +up 4 +forward 6 +forward 3 +down 9 +up 4 +up 6 +down 5 +down 8 +down 2 +down 9 +forward 8 +up 8 +forward 3 +forward 8 +up 8 +down 5 +down 9 +down 1 +down 3 +forward 3 +forward 9 +up 9 +down 5 +down 6 +down 1 +forward 9 +up 3 +forward 3 +forward 9 +down 7 +down 4 +down 5 +up 5 +forward 2 +down 5 +up 5 +up 4 +up 5 +forward 1 +down 2 +forward 7 +down 9 +forward 8 +forward 7 +forward 5 +down 3 +forward 5 +forward 7 +forward 1 +up 5 +forward 3 +forward 1 +down 1 +up 1 +down 7 +up 4 +forward 8 +up 9 +down 9 +down 9 +forward 8 +forward 3 +forward 3 +up 4 +down 3 +forward 4 +forward 6 +forward 7 +down 2 +forward 5 +down 3 +down 9 +down 4 +down 4 +forward 3 +down 3 +down 6 +up 5 +up 4 +down 6 +up 9 +down 9 +up 2 +up 1 +down 3 +forward 6 +up 6 +forward 1 +down 9 +down 6 +down 8 +down 9 +down 6 +forward 4 +up 6 +down 2 +forward 9 +forward 2 +down 4 +up 3 +forward 6 +down 2 +down 7 +down 1 +up 6 +down 5 +forward 1 +forward 7 +up 9 +forward 2 +up 8 +down 4 +forward 8 +up 2 +up 2 +down 1 +forward 6 +down 3 +forward 7 +forward 2 +down 5 +down 6 +up 8 +forward 4 +up 2 +forward 7 +forward 4 +forward 2 +down 1 +forward 7 +down 1 +up 1 +down 9 +forward 5 +forward 3 +down 6 +up 5 +up 9 +down 1 +forward 2 +forward 8 +down 5 +down 4 +forward 6 +forward 1 +forward 4 +forward 2 +forward 4 +up 7 +forward 5 +forward 2 +down 2 +forward 1 +forward 4 +down 4 +forward 7 +down 6 +forward 9 +forward 9 +forward 3 +up 5 +up 5 +down 6 +forward 7 +forward 8 +down 5 +forward 6 +forward 5 +forward 1 +forward 7 +forward 6 +up 2 +up 4 +forward 6 +down 4 +down 9 +forward 9 +down 4 +up 2 +down 5 +forward 9 +down 7 +forward 9 +up 9 +forward 9 +up 7 +up 2 +up 6 +forward 1 +up 9 +down 4 +down 8 +forward 8 +forward 7 +up 5 +forward 4 +down 3 +down 5 +up 9 +up 5 +forward 1 +down 3 +down 9 +up 2 +forward 5 +down 8 +down 3 +forward 5 +up 8 +forward 1 +forward 8 +forward 6 +down 2 +down 8 +down 8 +down 8 +forward 8 +forward 9 +up 2 +up 9 +up 8 +forward 2 +down 4 +up 7 +down 3 +forward 1 +forward 7 +down 8 +down 2 +forward 6 +forward 2 +down 6 +down 6 +up 9 +forward 9 +down 7 +forward 7 +down 4 +up 2 +up 7 +down 8 +forward 6 +up 2 +forward 4 +forward 9 +down 7 +forward 4 +up 4 +forward 8 +down 4 +forward 6 +forward 8 +down 2 +down 6 +up 4 +forward 5 +forward 1 +down 2 +up 6 +down 6 +down 3 +up 2 +up 4 +forward 1 +up 3 +up 5 +down 4 +down 1 +down 7 +down 7 +down 4 +forward 7 +down 9 +down 4 +down 2 +down 7 +forward 7 +forward 8 +forward 1 +down 8 +down 3 +down 5 +down 8 +forward 7 +forward 9 +forward 3 +up 8 +forward 5 +up 5 +up 2 +forward 4 +forward 6 +down 8 +down 1 +up 6 +forward 5 +forward 5 +down 9 +forward 3 +up 1 +down 1 +forward 5 +forward 5 +up 5 +down 4 +up 6 +forward 8 +forward 6 +up 5 +forward 2 +up 3 +forward 9 +forward 5 +down 9 +forward 3 +forward 1 +forward 4 +up 5 +forward 3 +forward 3 +up 9 +down 2 +down 3 +down 1 +forward 8 +down 4 +forward 8 +forward 8 +down 8 +forward 9 +forward 8 +forward 7 +down 6 +forward 5 +down 6 +up 8 +forward 6 +down 8 +forward 8 +down 6 +up 2 +forward 5 +forward 1 +up 2 +forward 4 +down 5 +up 8 +up 3 +forward 8 +down 3 +forward 4 +up 5 +forward 2 +down 3 +down 2 +down 7 +forward 5 +down 5 +forward 2 +up 1 +down 3 +down 9 +up 4 +up 3 +down 8 +up 1 +down 5 +down 5 +forward 7 +up 2 +down 3 +up 3 +forward 1 +forward 4 +forward 3 +up 5 +down 5 +up 3 +down 2 +forward 6 +down 6 +up 3 +forward 9 +down 9 +up 4 +down 4 +down 6 +up 9 +forward 3 +forward 2 +up 2 +up 5 +forward 2 +up 5 +forward 7 +down 8 +down 7 +up 8 +down 1 +up 1 +up 9 +forward 7 +forward 5 +down 9 +forward 8 +down 8 +forward 4 +forward 1 +forward 2 +down 8 +forward 3 +forward 6 +down 9 +forward 2 +forward 9 +down 4 +down 1 +down 1 +down 8 +down 1 +down 4 +up 3 +down 7 +down 5 +forward 1 +forward 5 +forward 8 +forward 4 +down 7 +down 6 +forward 2 +down 3 +down 3 +down 3 +forward 5 +forward 7 +down 4 +forward 6 +forward 9 +down 1 +forward 7 +down 5 +up 4 +up 5 +down 3 +down 1 +up 5 +forward 4 +down 9 +down 7 +up 1 +up 9 +up 4 +forward 7 +down 5 +down 8 +forward 5 +forward 9 +down 2 +down 7 +forward 8 +forward 7 +down 6 +down 8 +forward 3 +forward 6 +down 5 +forward 7 +up 7 +down 8 +forward 9 +down 3 +up 3 +forward 4 +up 4 +forward 3 +forward 4 +forward 9 +forward 5 +down 3 +down 6 +forward 9 +forward 4 +forward 1 +forward 7 +forward 8 +forward 2 +forward 7 +up 9 +down 8 +forward 4 +forward 4 +down 5 +forward 2 +forward 5 +down 6 +forward 4 +forward 2 +forward 7 +down 6 +down 2 +down 5 +down 1 +forward 5 diff --git a/day2/main.go b/day2/main.go new file mode 100644 index 0000000..eb0ddc3 --- /dev/null +++ b/day2/main.go @@ -0,0 +1,86 @@ + +package day2 + +import ( + "fmt" + "os" + "io" + "bufio" + "strings" + "strconv" +) + +type Position struct { + horiz, depth int +} + +type Move struct { + horiz, depth int +} + +func f1(moves []Move) Position { + p := Position{} + for _, d := range moves { + p.horiz += d.horiz + p.depth += d.depth + } + + return p +} + +func parseMoves(r io.Reader) (moves []Move, err error) { + s := bufio.NewScanner(r) + + for s.Scan() { + m := Move{} + ws := strings.Split(s.Text(), " ") + if len(ws) != 2 { + err = fmt.Errorf("Wrong move %v\n", ws) + return + } + switch ws[0] { + case "forward": + m.horiz, err = strconv.Atoi(ws[1]) + if err != nil { + err = fmt.Errorf("Wrong move number %v\n", ws) + return + } + case "up": + m.depth, err = strconv.Atoi(ws[1]) + if err != nil { + err = fmt.Errorf("Wrong move number %v\n", ws) + return + } + m.depth = 0 - m.depth + case "down": + m.depth, err = strconv.Atoi(ws[1]) + if err != nil { + err = fmt.Errorf("Wrong move number %v\n", ws) + return + } + default: + moves = nil + err = fmt.Errorf("Wrong move %v\n", ws) + return + } + + fmt.Printf("Move: %#v\n", m) + moves = append(moves, m) + } + + return +} +func RunF1(input string) { + h0, err := os.Open(input) + if err != nil { return } + defer h0.Close() + + moves, err := parseMoves(h0) + if err != nil { + fmt.Printf("Error: %v\n", err) + return + } + p := f1(moves) + + fmt.Printf("Answer1: %d (%d, %d)\n", p.horiz * p.depth, p.horiz, p.depth) +} diff --git a/main.go b/main.go index a8a03cd..e5a1189 100644 --- a/main.go +++ b/main.go @@ -2,10 +2,13 @@ package main import ( - "sgf-dma/aoc-2021/day1" + //"sgf-dma/aoc-2021/day1" + "sgf-dma/aoc-2021/day2" ) func main() { - day1.RunF1("day1/input.txt") - day1.RunF2("day1/input.txt") + //day1.RunF1("day1/input.txt") + //day1.RunF2("day1/input.txt") + + day2.RunF1("day2/input.txt") } -- 2.20.1