github.com/agrigoryan/aoc_2023_go@v0.0.0-20231216221323-4ace361ec685/day6/d6p2.go (about) 1 package day6 2 3 import ( 4 "fmt" 5 "log" 6 "math" 7 "strconv" 8 "strings" 9 10 "github.com/agrigoryan/aoc_2023_go/aocutils" 11 ) 12 13 func d6p2(input string) int { 14 lines := strings.Split(input, "\n") 15 16 filterEmpty := aocutils.Filterer(func(str string) bool { return len(str) > 0 }) 17 18 t, err := strconv.Atoi(strings.Join(filterEmpty(strings.Split(strings.Split(lines[0], ":")[1], " ")), "")) 19 if err != nil { 20 log.Fatal(err) 21 } 22 d, err := strconv.Atoi(strings.Join(filterEmpty(strings.Split(strings.Split(lines[1], ":")[1], " ")), "")) 23 if err != nil { 24 log.Fatal(err) 25 } 26 27 x := t - 1 - 2*int((float64(t)-math.Sqrt(float64(t*t-4*d)))/2) 28 fmt.Println(x) 29 30 return x 31 }