From 691f32954979d617ed65135a8a3bd6b86cfd117f Mon Sep 17 00:00:00 2001 From: jano3 <jano@bob.co.za> Date: Fri, 23 Jun 2023 13:30:08 +0200 Subject: [PATCH] Add packing functions for Bob Box --- bob_box_utils/bob_box_utils.go | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 bob_box_utils/bob_box_utils.go diff --git a/bob_box_utils/bob_box_utils.go b/bob_box_utils/bob_box_utils.go new file mode 100644 index 0000000..1fb51b9 --- /dev/null +++ b/bob_box_utils/bob_box_utils.go @@ -0,0 +1,39 @@ +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] +} -- GitLab