65 lines
923 B
Go
65 lines
923 B
Go
package day01
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func Part1(input string) int {
|
|
lines := strings.Split(input, "\n")
|
|
|
|
position := 50
|
|
output := 0
|
|
|
|
for _, line := range lines {
|
|
direction := line[0]
|
|
amount, _ := strconv.Atoi(line[1:])
|
|
|
|
if direction == 'R' {
|
|
position += amount
|
|
for position > 99 {
|
|
position -= 100
|
|
}
|
|
} else if direction == 'L' {
|
|
position -= amount
|
|
for position < 0 {
|
|
position += 100
|
|
}
|
|
}
|
|
|
|
if position == 0 {
|
|
output++
|
|
}
|
|
}
|
|
|
|
return output
|
|
}
|
|
|
|
func Part2(input string) int {
|
|
lines := strings.Split(input, "\n")
|
|
position := 50
|
|
output := 0
|
|
|
|
for _, line := range lines {
|
|
direction := line[0]
|
|
amount, _ := strconv.Atoi(line[1:])
|
|
|
|
step := 1
|
|
if direction == 'L' {
|
|
step = -1
|
|
}
|
|
|
|
for i := 0; i < amount; i++ {
|
|
position = (position + step) % 100
|
|
if position < 0 {
|
|
position += 100
|
|
}
|
|
if position == 0 {
|
|
output++
|
|
}
|
|
}
|
|
}
|
|
|
|
return output
|
|
}
|