package bob_box_utils import "sort" type ParcelDimensions struct { Height float64 `json:"height"` Width float64 `json:"width"` Length float64 `json:"length"` } // GetStackedParcelDimensions sorts the parcels so and stacks them func GetStackedParcelDimensions(parcels []ParcelDimensions) ParcelDimensions { var totalParcelHeight, maxParcelWidth, maxParcelLength float64 // Stack the parcels for _, parcel := range parcels { parcelHeight, parcelWidth, parcelLength := SortDimensionsInIncreasingOrder(parcel.Height, parcel.Width, parcel.Length) // To stack, sum all the heights totalParcelHeight += parcelHeight // Get the max width if parcelWidth > maxParcelWidth { maxParcelWidth = parcelWidth } //Get the max length if parcelLength > maxParcelLength { maxParcelLength = parcelLength } } return ParcelDimensions{totalParcelHeight, maxParcelWidth, maxParcelLength} } // SortDimensionsInIncreasingOrder sorts the given dimensions in increasing order func SortDimensionsInIncreasingOrder(dim1, dim2, dim3 float64) (float64, float64, float64) { dims := []float64{dim1, dim2, dim3} sort.Float64s(dims) return dims[0], dims[1], dims[2] }