New similarity.CompareTracks function

This commit is contained in:
Philipp Wolfer 2024-01-14 17:14:05 +01:00
parent bace31471e
commit b2b5c69278
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
4 changed files with 110 additions and 2 deletions

View file

@ -32,3 +32,19 @@ func Min[T constraints.Ordered](m, n T) T {
return m
}
}
func Sum[T constraints.Integer | constraints.Float](v ...T) T {
var sum T
for _, i := range v {
sum += i
}
return sum
}
func Average[T constraints.Integer | constraints.Float](v ...T) float64 {
length := len(v)
if length == 0 {
return 0.0
}
return float64(Sum(v...)) / float64(length)
}

View file

@ -17,7 +17,9 @@ package util_test
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"go.uploadedlobster.com/scotty/internal/util"
)
@ -32,3 +34,31 @@ func ExampleMin() {
fmt.Print(v)
// Output: 2
}
func ExampleSum() {
values := []float64{1.4, 2.2}
sum := util.Sum(values...)
fmt.Print(sum)
// Output: 3.6
}
func TestSumEmpty(t *testing.T) {
assert.Equal(t, 0, util.Sum([]int{}...))
}
func ExampleAverage() {
values := []float64{1.4, 2.2, 0.9}
sum := util.Average(values...)
fmt.Print(sum)
// Output: 1.5
}
func TestAverageEmpty(t *testing.T) {
assert.Equal(t, 0.0, util.Average([]int{}...))
}
func TestAverageInt(t *testing.T) {
assert := assert.New(t)
assert.Equal(3.0, util.Average([]int{2, 4, 3}...))
assert.Equal(1.5, util.Average([]int{2, 1, 1, 2}...))
}