package main import ( "fmt" "strings" h "git.bullercodeworks.com/brian/adventofcode/helpers" ) func main() { fmt.Println("# Day 15") inp := h.StdinToString() fmt.Println("## Part 1") dumbFind(inp, 2020) fmt.Println("## Part 2") dumbFind(inp, 30000000) } func dumbFind(inp string, num int) { start := strings.Split(inp, ",") rem := make(map[int][]int) turn := 1 var last int for k := range start { last = h.Atoi(start[k]) rem[last] = []int{turn} turn++ } for turn <= num { last = speakNext(last, turn, &rem) turn++ } fmt.Println("Answer:", last) } func speakNext(prev int, turn int, rem *map[int][]int) int { wrk := *rem if len(wrk[prev]) == 1 { wrk[0] = append(wrk[0], turn) return 0 } else { last := wrk[prev][len(wrk[prev])-2] diff := (turn - 1) - last wrk[diff] = append(wrk[diff], turn) return diff } }