Files
advent-of-code-go/2015/day10/main.go
T
2020-12-26 15:45:58 -05:00

49 lines
853 B
Go

package main
import (
"flag"
"fmt"
"strings"
"github.com/alexchao26/advent-of-code-go/util"
)
func main() {
var part int
flag.IntVar(&part, "part", 1, "part 1 or 2")
flag.Parse()
fmt.Println("Running part", part)
ans := lookAndSay(util.ReadFile("./input.txt"), part)
fmt.Println("Output:", ans)
}
func lookAndSay(input string, part int) int {
lastSaid := input
rounds := 40
if part == 2 {
rounds = 50
}
for i := 0; i < rounds; i++ {
var runningCount int
var said strings.Builder
for i := 0; i < len(lastSaid); i++ {
if i == len(lastSaid)-1 || lastSaid[i] != lastSaid[i+1] {
// add to seen
said.WriteString(fmt.Sprintf("%d%s", runningCount+1, string(lastSaid[i])))
runningCount = 0
} else {
// build up running count
runningCount++
}
}
lastSaid = said.String()
}
return len(lastSaid)
}