Piotr Czajkowski преди 2 години
родител
ревизия
593b02a310
променени са 1 файла, в които са добавени 32 реда и са изтрити 0 реда
  1. 32 0
      07/code.go

+ 32 - 0
07/code.go

@@ -63,6 +63,37 @@ func part1(crabs map[int]int, orderedCrabs []int) int {
 	return shortest
 }
 
+func part2(crabs map[int]int, orderedCrabs []int) int {
+	shortest := 1000000000
+
+	max := orderedCrabs[len(orderedCrabs)-1]
+	for crab := orderedCrabs[0]; crab <= max; crab++ {
+		route := 0
+		for key, value := range crabs {
+			if key == crab {
+				continue
+			}
+
+			steps := 0
+			if key < crab {
+				steps = crab - key
+			} else {
+				steps = key - crab
+			}
+
+			for i := 0; i < steps; i++ {
+				route += (i + 1) * value
+			}
+		}
+
+		if route < shortest {
+			shortest = route
+		}
+	}
+
+	return shortest
+}
+
 func main() {
 	if len(os.Args) < 2 {
 		log.Fatal("Please provide a file name as argument")
@@ -70,4 +101,5 @@ func main() {
 
 	crabs, orderedCrabs := readInput(os.Args[1])
 	fmt.Println("Part1: ", part1(crabs, orderedCrabs))
+	fmt.Println("Part2: ", part2(crabs, orderedCrabs))
 }