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  }