50 lines
909 B
Go
50 lines
909 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
|
|
fmt.Println("Day 9")
|
|
start := time.Now()
|
|
|
|
inputString := "1113122113"
|
|
input := []int64{}
|
|
|
|
for _, c := range inputString {
|
|
stringChar, _ := strconv.Atoi(string(c))
|
|
input = append(input, int64(stringChar))
|
|
}
|
|
|
|
//Change 40 to 50 for part 2
|
|
for rounds := 0; rounds < 40; rounds++ {
|
|
|
|
lastNum := input[0]
|
|
var counter int64 = 1
|
|
|
|
newNumbers := []int64{}
|
|
|
|
for i := 1; i < len(input); i++ {
|
|
if input[i] != lastNum {
|
|
newNumbers = append(newNumbers, counter)
|
|
newNumbers = append(newNumbers, lastNum)
|
|
counter = 1
|
|
lastNum = input[i]
|
|
} else {
|
|
counter++
|
|
}
|
|
}
|
|
newNumbers = append(newNumbers, counter)
|
|
newNumbers = append(newNumbers, lastNum)
|
|
input = newNumbers
|
|
}
|
|
|
|
elapsed := time.Since(start)
|
|
fmt.Printf("Part 1: %v %v \n", len(input), elapsed)
|
|
fmt.Printf("Part 2: %v %v \n", len(input), elapsed)
|
|
|
|
}
|