feat: solve day 8 part 1...twice
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
// Package estimator provides model and methods
|
||||
// for answering questions about cable needs
|
||||
// for connecting junction boxes.
|
||||
package estimator
|
||||
|
||||
import (
|
||||
"slices"
|
||||
|
||||
"github.com/StevanFreeborn/advent-of-code-2025/cmd/08/box"
|
||||
"github.com/StevanFreeborn/advent-of-code-2025/cmd/08/circuitMap"
|
||||
"github.com/StevanFreeborn/advent-of-code-2025/cmd/08/connection"
|
||||
)
|
||||
|
||||
type Estimator interface {
|
||||
PossibleConnections() []connection.Connection
|
||||
CreateMap() circuitMap.CircuitMap
|
||||
}
|
||||
|
||||
type estimator struct {
|
||||
possibleConnections []connection.Connection
|
||||
boxes []box.Box
|
||||
}
|
||||
|
||||
func From(boxes []box.Box) Estimator {
|
||||
return estimator{
|
||||
boxes: boxes,
|
||||
possibleConnections: createAllPossibleConnections(boxes),
|
||||
}
|
||||
}
|
||||
|
||||
func (e estimator) PossibleConnections() []connection.Connection {
|
||||
return e.possibleConnections
|
||||
}
|
||||
|
||||
func (e estimator) CreateMap() circuitMap.CircuitMap {
|
||||
return circuitMap.From(e.boxes)
|
||||
}
|
||||
|
||||
func createAllPossibleConnections(boxes []box.Box) []connection.Connection {
|
||||
connections := []connection.Connection{}
|
||||
numOfBoxes := len(boxes)
|
||||
|
||||
for i := range numOfBoxes {
|
||||
for j := i + 1; j < numOfBoxes; j++ {
|
||||
start := boxes[i]
|
||||
end := boxes[j]
|
||||
conn := connection.From(start, end)
|
||||
connections = append(connections, conn)
|
||||
}
|
||||
}
|
||||
|
||||
slices.SortFunc(connections, func(a connection.Connection, b connection.Connection) int {
|
||||
return int(a.Distance() - b.Distance())
|
||||
})
|
||||
|
||||
return connections
|
||||
}
|
||||
Reference in New Issue
Block a user