new(go): Solve day 2 first puzzle.
authorsgf <sgf.dma@gmail.com>
Sat, 11 Dec 2021 13:58:07 +0000 (16:58 +0300)
committersgf <sgf.dma@gmail.com>
Sat, 11 Dec 2021 13:58:07 +0000 (16:58 +0300)
day2/in.txt [new file with mode: 0644]
day2/input.txt [new file with mode: 0644]
day2/main.go [new file with mode: 0644]
main.go

diff --git a/day2/in.txt b/day2/in.txt
new file mode 100644 (file)
index 0000000..b7172ac
--- /dev/null
@@ -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 (file)
index 0000000..2efbeb6
--- /dev/null
@@ -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 (file)
index 0000000..eb0ddc3
--- /dev/null
@@ -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 (file)
--- 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")
 }