diff options
author | Alexander Kiryukhin <a.kiryukhin@mail.ru> | 2022-05-01 21:50:12 +0300 |
---|---|---|
committer | Alexander Kiryukhin <a.kiryukhin@mail.ru> | 2022-05-01 21:50:12 +0300 |
commit | 9fcf8e29214210612d545bed50d7f889800ac639 (patch) | |
tree | 3a99d2cd37fb8158d49abc1de6298758d205c9dd /math/mimax.go |
Initial
Diffstat (limited to 'math/mimax.go')
-rw-r--r-- | math/mimax.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/math/mimax.go b/math/mimax.go new file mode 100644 index 0000000..546afba --- /dev/null +++ b/math/mimax.go @@ -0,0 +1,63 @@ +package math + +import "go.neonxp.dev/extra/utils" + +// MinScalar возвращает минимальное из переданных скалярных значений +func MinScalar[T utils.Scalar](a ...T) T { + i := -1 + for j, v := range a { + if i == -1 { + i = j + continue + } + if v < a[i] { + i = j + } + } + return a[i] +} + +// MaxScalar возвращает максимальное из переданных скалярных значений +func MaxScalar[T utils.Scalar](a ...T) T { + i := -1 + for j, v := range a { + if i == -1 { + i = j + continue + } + if v > a[i] { + i = j + } + } + return a[i] +} + +// Min возвращает минимальное из переданных Sortable значений +func Min[T utils.Sortable[T]](a ...T) T { + i := -1 + for j, v := range a { + if i == -1 { + i = j + continue + } + if v.Less(a[i]) { + i = j + } + } + return a[i] +} + +// Max возвращает максимальное из переданных Sortable значений +func Max[T utils.Sortable[T]](a ...T) T { + i := -1 + for j, v := range a { + if i == -1 { + i = j + continue + } + if a[i].Less(v) { + i = j + } + } + return a[i] +} |