Averages/Arithmetic mean: Difference between revisions

Go solution
(Add Brat solution)
(Go solution)
Line 465:
Mean([3, 1, 4, 1, 5, 9]);
# 23/6</lang>
=={{header|Go}}==
<lang go>package main
 
import (
"fmt"
"math"
)
 
func mean(v []float64) float64 {
if len(v) == 0 {
return 0
}
var parts []float64
for _, x := range v {
var i int
for _, p := range parts {
sum := p + x
var err float64
if math.Fabs(x) < math.Fabs(p) {
err = x - (sum - p)
} else {
err = p - (sum - x)
}
if err != 0 {
parts[i] = err
i++
}
x = sum
}
parts = append(parts[:i], x)
}
var sum float64
for _, x := range parts {
sum += x
}
return sum / float64(len(v))
}
 
func main() {
for _, v := range [][]float64{
[]float64{}, // answer is 0 per task description
[]float64{3, 1, 4, 1, 5, 9},
[]float64{1e20, 3, 1, 4, 1, 5, 9, -1e20},
[]float64{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, .11},
[]float64{10, 20, 30, 40, 50, -100, 4.7, -11e2},
} {
fmt.Println("Vector:", v)
fmt.Printf("Mean of %d numbers is %g\n\n", len(v), mean(v))
}
}</lang>
Output:
<pre>Vector: []
Mean of 0 numbers is 0
 
Vector: [3 1 4 1 5 9]
Mean of 6 numbers is 3.8333333333333335
 
Vector: [1e+20 3 1 4 1 5 9 -1e+20]
Mean of 8 numbers is 2.875
 
Vector: [10 9 8 7 6 5 4 3 2 1 0 0 0 0 0.11]
Mean of 15 numbers is 3.674
 
Vector: [10 20 30 40 50 -100 4.7 -1100]
Mean of 8 numbers is -130.6625</pre>
 
=={{header|Groovy}}==
1,707

edits