You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
789 B
58 lines
789 B
package day12
|
|
|
|
import (
|
|
"log"
|
|
)
|
|
|
|
type State struct {
|
|
Dir, North, East int
|
|
}
|
|
|
|
func Solve1() {
|
|
state := State{Dir: 90, North: 0, East: 0}
|
|
|
|
for _, row := range rows {
|
|
switch row.Char {
|
|
case "N":
|
|
state.North += row.Arg
|
|
|
|
case "S":
|
|
state.North -= row.Arg
|
|
|
|
case "E":
|
|
state.East += row.Arg
|
|
|
|
case "W":
|
|
state.East -= row.Arg
|
|
|
|
case "R":
|
|
state.Dir += row.Arg
|
|
|
|
case "L":
|
|
state.Dir += 360 - row.Arg
|
|
|
|
case "F":
|
|
switch state.Dir % 360 {
|
|
case 0:
|
|
state.North += row.Arg
|
|
case 90:
|
|
state.East += row.Arg
|
|
case 180:
|
|
state.North -= row.Arg
|
|
case 270:
|
|
state.East -= row.Arg
|
|
}
|
|
}
|
|
}
|
|
|
|
if state.East < 0 {
|
|
state.East *= -1
|
|
}
|
|
|
|
if state.North < 0 {
|
|
state.North *= -1
|
|
}
|
|
|
|
log.Printf("2020-12-12.01: Answer: %d\n", state.North+state.East)
|
|
}
|