58 lines
832 B
Go
58 lines
832 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
|
)
|
|
|
|
func main() {
|
|
inp := h.StdinToStringSlice()
|
|
part1(inp)
|
|
part2(inp)
|
|
}
|
|
|
|
func part1(inp []string) {
|
|
var hit int
|
|
dial := 50
|
|
for i := range inp {
|
|
dir, snum := inp[i][0], inp[i][1:]
|
|
num := h.Atoi(snum)
|
|
switch dir {
|
|
case 'R':
|
|
dial += num
|
|
case 'L':
|
|
dial -= num
|
|
}
|
|
dial = (dial + 100) % 100
|
|
if dial == 0 {
|
|
hit++
|
|
}
|
|
}
|
|
fmt.Println("# Part 1")
|
|
fmt.Println(hit)
|
|
}
|
|
|
|
func part2(inp []string) {
|
|
var hit int
|
|
dial := 50
|
|
for i := range inp {
|
|
dir, snum := inp[i][0], inp[i][1:]
|
|
num := h.Atoi(snum)
|
|
for j := 0; j < num; j++ {
|
|
switch dir {
|
|
case 'R':
|
|
dial = (dial + 1) % 100
|
|
case 'L':
|
|
dial = (dial - 1 + 100) % 100
|
|
}
|
|
if dial == 0 {
|
|
hit++
|
|
}
|
|
}
|
|
}
|
|
|
|
fmt.Println("# Part 2")
|
|
fmt.Println(hit)
|
|
}
|