package main import ( "fmt" "io/ioutil" "log" "math" "sort" "strconv" "strings" ) func main() { file, err := ioutil.ReadFile("input.txt") if err != nil { log.Fatal(err) } inputStrs := strings.Split(strings.Trim(string(file), "\n"), ",") var positions []int for _, v := range inputStrs { num, _ := strconv.Atoi(v) positions = append(positions, num) } sort.Ints(positions) med := (len(positions)) / 2 fuelPartOne, fuelPartTwo := 0, math.MaxInt for i := 0; i < len(positions); i++ { currentFuel := 0 for j := 0; j < len(positions); j++ { if i == med { horizontalDistance := int(math.Abs(float64(positions[j]) - float64(positions[i]))) fuelPartOne += horizontalDistance } horizontalDistance := int(math.Abs(float64(i) - float64(positions[j]))) currentFuel += (horizontalDistance + 1) * horizontalDistance / 2 } if currentFuel < fuelPartTwo { fuelPartTwo = currentFuel } } fmt.Println(fuelPartOne, fuelPartTwo) }