Piotr Czajkowski 1 неделя назад
Родитель
Сommit
97a042d683
1 измененных файлов с 10 добавлено и 42 удалено
  1. 10 42
      08/code.go

+ 10 - 42
08/code.go

@@ -50,55 +50,23 @@ type circuit struct {
 	boxes         []box
 }
 
+type distance struct {
+	first, second int
+	value         float64
+}
+
 func part1(boxes []box) int {
 	var result int
+	var distances []distance
 
 	for i := range boxes {
-		bestDistance := math.MaxFloat64
-		best := -1
-		for j := range boxes {
-			if j == i {
-				continue
-			}
-
-			distance := boxes[j].DistanceTo(boxes[i])
-			if distance < bestDistance {
-				bestDistance = distance
-				best = j
-			}
-		}
-
-		boxes[i].best = boxes[best].id
-	}
-
-	var circuits []circuit
-	for i := range boxes {
-		if boxes[i].inCircuit {
-			continue
+		for j := i + 1; j < len(boxes); j++ {
+			howFar := boxes[j].DistanceTo(boxes[i])
+			distances = append(distances, distance{first: boxes[i].id, second: boxes[j].id, value: howFar})
 		}
 
-		if boxes[boxes[i].best].best == boxes[i].id {
-			boxes[i].inCircuit = true
-			boxes[boxes[i].best].inCircuit = true
-
-			set := circuit{first: boxes[i].id, second: boxes[i].best, boxes: []box{boxes[i], boxes[boxes[i].best]}}
-			circuits = append(circuits, set)
-		}
-	}
-
-	for _, item := range boxes {
-		if item.inCircuit {
-			continue
-		}
-
-		for i := range circuits {
-			if item.best == circuits[i].first || item.best == circuits[i].second {
-				circuits[i].boxes = append(circuits[i].boxes, item)
-				break
-			}
-		}
 	}
-	fmt.Println(circuits)
+	fmt.Println(distances)
 
 	return result
 }