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
|
|
|
|
}
|