This commit is contained in:
Gabriel Bizdoc 2025-12-08 19:21:40 +02:00
parent 8cf000940c
commit 0ef0ffc515
No known key found for this signature in database
GPG Key ID: 3F0EDAECA5BE9ED9

View File

@ -72,24 +72,16 @@ func Day8Part1(ctx aoc.Context, steps int) (int, error) {
return 0, fmt.Errorf("day8: failed to parse input %w", err)
}
sm := NewClustersDB(boxes)
var distances = SortedDistances(boxes)
for _, d := range distances[:steps] {
el1Id, el2Id, distance := d.E1, d.E2, d.Distance
if distance != 0 && (sm.GetClusterId(el1Id) != sm.GetClusterId(el2Id)) {
sm.JoinClustersByElements(el1Id, el2Id)
db := NewClustersDB(boxes)
for _, d := range SortedDistances(boxes)[:steps] {
if d.Distance != 0 && (db.GetClusterId(d.E1) != db.GetClusterId(d.E2)) {
db.JoinClustersByElements(d.E1, d.E2)
}
}
ints := slices.Clone(sm.clusterToSize)
ints := slices.Clone(db.clusterToSize)
slices.Sort(ints)
sol := 1
for _, i := range ints[len(ints)-3:] {
sol *= i
}
return sol, nil
return aoc.Prod(ints[len(ints)-3:]), nil
}
func Day8Part2(ctx aoc.Context) (int, error) {
@ -99,15 +91,13 @@ func Day8Part2(ctx aoc.Context) (int, error) {
return 0, fmt.Errorf("day8: failed to parse input %w", err)
}
sm := NewClustersDB(boxes)
var distances = SortedDistances(boxes)
db := NewClustersDB(boxes)
for _, d := range distances {
el1Id, el2Id, distance := d.E1, d.E2, d.Distance
if distance != 0 && (sm.GetClusterId(el1Id) != sm.GetClusterId(el2Id)) {
sm.JoinClustersByElements(el1Id, el2Id)
if sm.clusterToSize[sm.GetClusterId(el1Id)] == len(boxes) {
return int(boxes[el1Id][0]) * int(boxes[el2Id][0]), nil
for _, d := range SortedDistances(boxes) {
if d.Distance != 0 && (db.GetClusterId(d.E1) != db.GetClusterId(d.E2)) {
db.JoinClustersByElements(d.E1, d.E2)
if db.clusterToSize[db.GetClusterId(d.E1)] == len(boxes) {
return int(boxes[d.E1][0]) * int(boxes[d.E2][0]), nil
}
}
}