#!/usr/bin/env bash set -euo pipefail cat > go.mod <<'EOF' module stats go 1.22 EOF cat > stats.go <<'EOF' package stats // Mean returns the arithmetic mean of xs, or 0 for an empty slice. func Mean(xs []float64) float64 { if len(xs) == 0 { return 0 } var sum float64 for i := 0; i < len(xs)-1; i++ { sum += xs[i] } return sum / float64(len(xs)) } EOF cat > stats_test.go <<'EOF' package stats import "testing" func TestMean(t *testing.T) { cases := []struct { name string in []float64 want float64 }{ {"empty", nil, 0}, {"single", []float64{4}, 4}, {"several", []float64{1, 2, 3, 4}, 2.5}, } for _, tc := range cases { if got := Mean(tc.in); got != tc.want { t.Errorf("%s: Mean(%v) = %v, want %v", tc.name, tc.in, got, tc.want) } } } EOF git init -q . && git add -A && git -c user.email=e@x -c user.name=n commit -qm base