VM4DH3Y74MPA3G3DVNXT2FALH6XVC45DLKFL64ZZD3LXNJWPFVIAC
package main
import (
"bufio"
"log"
"os"
"strconv"
"strings"
)
type Move struct {
dir string
length int
}
func main() {
if err := myMain(); err != nil {
log.Println(err)
}
}
func myMain() error {
// parse input.txt
data, err := parseInput()
if err != nil {
return err
}
log.Println("Part1:", SolveFirst(data))
return nil
}
func SolveFirst(data []Move) int {
var depth, fwd int
for _, d := range data {
switch d.dir {
case "forward":
fwd += d.length
case "down":
depth += d.length
case "up":
depth -= d.length
default:
panic("no way!")
}
}
return depth * fwd
}
func parseInput() ([]Move, error) {
fd, err := os.Open("input.txt")
if err != nil {
return nil, err
}
defer fd.Close()
buf := bufio.NewScanner(fd)
var ret []Move
for buf.Scan() {
tmp := strings.Split(buf.Text(), " ")
l, err := strconv.Atoi(tmp[1])
if err != nil {
return nil, err
}
ret = append(ret, Move{tmp[0], l})
}
return ret, nil
}
forward 4
down 9
forward 2
forward 2
down 7
up 2
down 9
up 8
down 7
down 9
forward 4
up 6
down 2
down 5
down 1
down 5
forward 2
up 4
forward 2
forward 3
up 2
forward 6
up 8
forward 8
down 8
up 8
down 7
down 2
down 9
forward 2
forward 9
down 4
forward 8
up 6
down 3
up 9
forward 1
forward 6
up 3
forward 8
up 9
forward 1
down 9
down 3
down 7
up 2
up 7
down 5
forward 3
down 1
up 6
down 2
forward 4
down 6
down 8
forward 2
down 5
forward 6
down 5
down 7
forward 8
forward 2
down 9
up 4
forward 6
forward 4
up 6
down 9
down 7
down 9
forward 9
forward 8
down 7
up 7
forward 9
forward 8
up 1
up 4
down 3
forward 6
up 6
down 2
up 3
down 6
down 5
forward 8
forward 3
forward 8
down 4
down 4
down 5
forward 6
down 5
forward 6
down 2
down 5
up 4
down 8
up 5
forward 5
forward 6
down 9
up 5
down 2
forward 5
down 7
up 7
down 9
forward 2
down 3
down 3
forward 8
up 5
up 1
forward 1
forward 3
down 5
forward 8
forward 7
forward 8
down 5
down 8
up 2
forward 8
forward 8
down 7
forward 1
forward 7
down 6
up 4
forward 7
forward 7
down 3
up 7
forward 2
down 7
down 4
forward 5
down 8
forward 9
down 7
forward 5
up 6
up 6
down 8
down 3
forward 5
forward 3
down 8
up 7
forward 8
up 6
down 2
forward 4
up 3
up 3
down 9
down 9
up 1
up 7
forward 2
down 1
forward 9
up 7
up 6
down 2
down 3
forward 4
down 3
down 3
down 1
forward 4
forward 8
forward 6
forward 3
up 4
up 5
up 4
forward 1
up 3
down 9
up 6
forward 2
down 5
down 1
forward 8
forward 2
down 6
up 5
up 3
forward 7
forward 2
forward 7
up 9
forward 3
up 9
forward 1
down 9
forward 9
down 3
down 3
down 2
forward 9
forward 2
up 3
forward 3
down 7
down 3
forward 2
forward 1
forward 6
up 9
forward 4
down 9
down 8
up 3
up 5
forward 8
down 9
forward 5
forward 4
down 5
up 4
forward 7
forward 3
down 9
forward 7
down 2
down 7
forward 3
up 3
forward 7
down 9
down 4
down 8
forward 8
down 6
forward 9
forward 4
up 9
down 9
down 6
up 7
up 2
forward 2
forward 7
down 7
forward 9
down 6
down 2
forward 4
forward 8
down 4
forward 4
forward 4
forward 6
up 6
down 9
down 3
down 7
up 2
up 2
forward 4
down 4
forward 6
down 2
down 2
forward 1
down 1
forward 7
up 5
forward 9
forward 8
down 4
forward 8
down 5
up 4
down 8
forward 4
forward 7
down 9
down 3
forward 6
down 6
forward 6
down 9
down 6
forward 5
forward 5
up 9
down 9
down 9
down 1
down 5
forward 5
down 7
forward 3
down 6
forward 5
forward 8
down 6
forward 7
down 5
forward 4
down 4
down 9
forward 3
down 9
down 9
down 1
up 7
forward 4
up 1
up 1
forward 1
down 9
up 8
down 8
down 3
down 7
forward 4
down 5
down 5
forward 7
forward 7
forward 6
up 2
down 4
forward 8
forward 3
forward 3
forward 2
forward 4
up 9
up 1
forward 2
forward 2
forward 6
down 9
up 8
forward 4
forward 5
forward 4
down 4
down 8
forward 6
down 8
forward 9
forward 8
down 1
down 2
forward 2
up 4
up 7
forward 5
down 7
down 5
down 3
up 7
down 4
forward 8
up 8
down 1
down 2
up 6
up 8
forward 9
down 5
down 2
forward 5
forward 4
up 6
forward 7
down 3
up 5
up 9
forward 5
forward 1
down 6
down 7
forward 9
down 8
down 2
forward 9
forward 2
down 3
forward 9
down 3
down 9
up 3
forward 7
up 2
up 5
forward 3
down 9
up 1
down 2
down 4
down 6
forward 5
forward 5
up 7
up 3
down 1
down 1
up 8
down 4
forward 1
down 4
down 5
down 9
forward 7
up 2
up 1
down 7
forward 9
forward 9
forward 8
forward 9
down 5
forward 9
forward 9
up 9
down 7
down 8
forward 2
forward 9
down 1
forward 3
forward 8
up 4
down 4
forward 4
forward 3
down 7
down 3
forward 6
forward 9
forward 1
down 2
up 3
down 9
forward 5
forward 6
forward 8
up 2
up 1
down 3
up 4
forward 1
up 9
forward 4
down 1
up 2
down 8
down 9
forward 3
down 2
up 5
forward 2
down 6
down 5
down 8
down 3
down 7
down 2
forward 8
down 9
up 7
down 7
down 7
down 7
forward 4
forward 1
forward 9
up 9
forward 5
forward 8
forward 7
forward 7
down 1
forward 3
down 7
forward 2
forward 4
up 7
forward 1
down 5
forward 5
forward 1
down 8
forward 7
forward 2
up 3
down 1
up 7
down 1
down 2
forward 9
forward 6
forward 3
forward 2
down 4
forward 7
forward 7
forward 5
forward 7
forward 2
down 9
down 8
forward 8
forward 9
down 3
up 7
up 1
down 4
forward 2
forward 7
forward 3
forward 9
up 2
down 3
forward 4
down 8
down 6
down 4
down 6
down 7
forward 9
down 9
forward 8
down 1
down 1
forward 1
forward 1
down 7
down 3
down 3
forward 2
down 7
forward 8
up 7
down 5
forward 7
forward 9
down 2
forward 9
forward 3
forward 9
forward 9
down 3
forward 1
forward 7
up 8
forward 7
forward 4
forward 5
forward 6
down 4
up 3
down 5
up 8
up 5
up 6
forward 1
down 1
up 8
down 8
down 5
forward 8
up 9
down 8
forward 2
up 6
forward 3
down 3
down 8
down 4
forward 6
forward 2
down 9
up 9
down 2
down 9
up 1
down 6
up 2
down 9
forward 8
forward 3
forward 6
down 6
up 9
up 8
forward 4
down 2
forward 5
up 4
up 4
down 5
down 9
forward 3
down 1
forward 1
forward 6
forward 2
down 7
forward 7
up 5
forward 2
down 8
forward 5
down 1
down 7
forward 7
down 4
forward 7
forward 2
down 6
forward 9
forward 4
up 3
forward 8
forward 2
up 6
up 3
forward 9
forward 4
down 2
forward 6
down 1
forward 5
down 2
up 1
down 1
forward 2
forward 4
down 7
up 6
forward 4
forward 7
up 8
forward 3
down 8
forward 7
down 2
down 5
forward 3
forward 7
down 5
forward 2
forward 8
up 6
forward 8
down 7
up 3
down 2
forward 2
down 8
down 2
up 5
up 1
forward 6
down 1
forward 2
down 1
forward 6
forward 9
down 9
down 8
down 3
forward 5
forward 3
down 3
down 1
forward 4
forward 8
forward 2
down 7
forward 9
forward 4
down 4
forward 6
down 4
forward 8
down 8
down 2
up 7
down 9
down 5
up 4
down 3
up 5
forward 8
down 4
down 6
forward 1
up 2
down 6
forward 4
down 8
forward 1
up 7
forward 6
up 2
forward 1
down 8
down 2
forward 3
down 3
down 2
up 9
down 3
down 4
down 3
forward 9
down 6
forward 8
forward 8
down 1
forward 8
down 5
up 9
up 5
up 5
forward 5
forward 4
down 7
down 6
forward 9
up 4
forward 7
up 5
forward 7
down 5
down 3
forward 5
down 8
up 3
forward 4
up 2
down 1
down 6
down 6
up 3
forward 5
forward 8
down 2
forward 6
down 5
down 4
forward 9
down 6
forward 6
up 5
forward 4
forward 5
forward 1
up 6
up 2
down 8
up 4
up 2
down 3
forward 4
down 5
forward 8
up 5
forward 6
forward 9
down 6
down 3
up 3
down 2
up 9
forward 5
up 5
forward 3
forward 2
down 5
up 2
down 5
forward 8
forward 2
down 1
up 2
down 6
up 8
down 3
down 2
forward 2
down 1
forward 8
forward 2
up 6
forward 6
up 3
up 8
up 2
up 4
down 7
forward 6
down 3
down 2
forward 5
down 7
down 6
forward 1
down 4
forward 4
up 1
down 3
up 3
down 4
forward 1
down 2
forward 6
down 7
forward 3
forward 1
forward 5
down 7
down 9
forward 7
forward 2
forward 7
forward 8
down 1
down 1
up 6
forward 2
up 7
down 9
up 4
up 9
forward 9
forward 6
down 3
down 9
forward 1
forward 1
up 8
forward 6
forward 1
forward 9
down 2
down 1
forward 2
forward 9
down 9
down 6
forward 5
down 6
forward 4
down 3
forward 1
down 4
up 5
forward 6
forward 3
down 2
up 3
down 9
down 2
forward 1
down 4
up 2
down 6
forward 6
forward 7
forward 3
forward 9
up 7
up 2
forward 2
up 2
forward 1
up 2
forward 8
forward 5
down 6
up 7
down 4
down 1
up 8
forward 1
down 3
up 8
forward 8
down 6
down 1
down 6
forward 1
forward 7
up 3
forward 6
forward 1
up 3
down 5
down 1
forward 5
down 5
up 7
up 3
down 6
forward 6
up 7
forward 5
forward 2
forward 1
down 8
forward 3
down 3
forward 5
down 4
up 4
down 8
down 7
down 7
up 9
up 2
down 4
down 1
down 4
forward 9
up 8
up 4
down 2
forward 8
forward 1
down 2
up 5
down 3
down 8
down 8
down 6
down 5
forward 7
down 3
forward 5
down 6
down 9
down 2
forward 8
down 4
up 2
forward 4
down 8
down 5
down 4
forward 2
up 3
forward 4
up 3
down 8
down 2
up 8
forward 4
forward 6
down 3
forward 9
forward 6
forward 8
forward 5
forward 1
forward 5
down 3
up 2
forward 4
down 4
down 3
forward 1
forward 3
forward 7
forward 9
down 2
up 4
down 3
up 8
forward 9
down 5
up 9
down 1
up 4
forward 7
forward 2
forward 4
up 8
down 4
down 1
forward 8
down 4
down 7
up 1
down 3
down 2
forward 5
up 6
down 7
forward 2
module main
go 1.17