package main import ( "fmt" "strings" h "git.bullercodeworks.com/brian/adventofcode/helpers" ) func main() { inp := strings.Split(h.StdinToString(), ",") part1(inp) fmt.Println() part2(inp) } func part1(inp []string) { fmt.Println("# Part 1") var crabs []int min := h.MAX_INT max := h.MIN_INT crabMap := make(map[int]int) for i := range inp { c := h.Atoi(inp[i]) if c < min { min = c } if c > max { max = c } crabMap[c] = crabMap[c] + 1 crabs = append(crabs, c) } fuelMap := make(map[int]int) var minFuelMov int minFuelVal := h.MAX_INT for i := min; i <= max; i++ { for c := range crabMap { fuelMap[i] += crabMap[c] * h.Abs(i-c) } if fuelMap[i] < minFuelVal { minFuelMov = i minFuelVal = fuelMap[i] } } fmt.Println("Minimum Fuel Requirement:", minFuelVal, "at", minFuelMov) } func part2(inp []string) { fmt.Println("# Part 2") var crabs []int min := h.MAX_INT max := h.MIN_INT crabMap := make(map[int]int) for i := range inp { c := h.Atoi(inp[i]) if c < min { min = c } if c > max { max = c } crabMap[c] = crabMap[c] + 1 crabs = append(crabs, c) } fuelMap := make(map[int]int) var minFuelMov int minFuelVal := h.MAX_INT for i := min; i <= max; i++ { for c := range crabMap { fuelMap[i] += crabMap[c] * h.Fact(h.Abs(i-c)) } if fuelMap[i] < minFuelVal { minFuelMov = i minFuelVal = fuelMap[i] } } fmt.Println("Minimum Fuel Requirement:", minFuelVal, "at", minFuelMov) }