45 lines
810 B
Go
45 lines
810 B
Go
package day2
|
|
|
|
import (
|
|
"bytes"
|
|
"strconv"
|
|
)
|
|
|
|
func Run(dat []byte) (int, int) {
|
|
|
|
dat = dat[:len(dat) - 1]
|
|
|
|
lines := bytes.Split(dat, []byte("\n"))
|
|
|
|
vertical := 0
|
|
horizontal := 0
|
|
|
|
part2vertical := 0
|
|
part2horizontal := 0
|
|
aim := 0
|
|
|
|
for _, value := range lines {
|
|
|
|
splitInstruction := bytes.Split(value, []byte(" "))
|
|
|
|
direction := string(splitInstruction[0])
|
|
scale, _ := strconv.Atoi(string(splitInstruction[1]))
|
|
|
|
if direction == "forward" {
|
|
horizontal += scale
|
|
part2horizontal += scale
|
|
part2vertical += aim * scale
|
|
} else if direction == "up" {
|
|
vertical -= scale
|
|
aim -= scale
|
|
} else if direction == "down" {
|
|
vertical += scale
|
|
aim += scale
|
|
}
|
|
|
|
}
|
|
|
|
return vertical * horizontal, part2vertical * part2horizontal
|
|
|
|
}
|