Files
obitools4/pkg/obiutils/minmax.go
Eric Coissac 65f5109957 Plenty of small bugs
Former-commit-id: 42c7fab7d65906c80ab4cd32da6867ff21842ea8
2024-06-04 16:49:12 +02:00

50 lines
702 B
Go

package obiutils
import (
log "github.com/sirupsen/logrus"
"golang.org/x/exp/constraints"
)
func MinMax[T constraints.Ordered](x, y T) (T, T) {
if x < y {
return x, y
}
return y, x
}
func MinMaxSlice[T constraints.Ordered](vec []T) (min, max T) {
if len(vec) == 0 {
panic("empty slice")
}
min = vec[0]
max = vec[0]
for _, v := range vec {
if v > max {
max = v
}
if v < min {
min = v
}
}
return
}
func MaxMap[K comparable, T constraints.Ordered](values map[K]T) (K, T) {
if len(values) == 0 {
log.Panicf("empty map")
}
var maxKey K
var maxValue T
for k, v := range values {
if v > maxValue {
maxValue = v
maxKey = k
}
}
return maxKey, maxValue
}