Files
obitools4/pkg/obistats/minmax.go

46 lines
677 B
Go
Raw Normal View History

2022-08-20 18:01:07 +02:00
package obistats
2024-09-03 06:08:07 -03:00
func Max[T int64 | int32 | int16 | int8 | int | float32 | float64](data []T) T {
2022-08-20 18:01:07 +02:00
m := data[0]
2024-09-03 06:08:07 -03:00
for _, v := range data {
2022-08-20 18:01:07 +02:00
if v > m {
m = v
}
}
return m
}
2024-09-03 06:08:07 -03:00
func Min[T int64 | int32 | int16 | int8 | int | uint64 | uint32 | uint16 | uint8 | uint | float32 | float64](data []T) T {
2022-08-20 18:01:07 +02:00
m := data[0]
2024-09-03 06:08:07 -03:00
for _, v := range data {
2022-08-20 18:01:07 +02:00
if v < m {
m = v
}
}
return m
2024-09-03 06:08:07 -03:00
}
func Mode[T int64 | int32 | int16 | int8 | int | uint64 | uint32 | uint16 | uint8 | uint](data []T) T {
ds := make(map[T]int)
for _, v := range data {
ds[v]++
}
md := T(0)
maxocc := 0
for v, occ := range ds {
if occ > maxocc {
maxocc = occ
md = v
}
}
return md
}