Commit 29fc03f
Changed files (2)
sum.go
@@ -16,3 +16,16 @@ func SumAll(numbers ...[]int) []int {
}
return sums
}
+
+func SumAllTails(numbers ...[]int) []int {
+ var sums []int
+ for _, numbers := range numbers {
+ if len(numbers) == 0 {
+ sums = append(sums, 0)
+ } else {
+ tail := numbers[1:]
+ sums = append(sums, Sum(tail))
+ }
+ }
+ return sums
+}
sum_test.go
@@ -33,3 +33,26 @@ func TestSumAll(t *testing.T) {
t.Errorf("got %v want %v", got, want)
}
}
+
+func TestSumAllTails(t *testing.T) {
+ checkSums := func(t *testing.T, got, want []int) {
+ t.Helper()
+ if !reflect.DeepEqual(got, want) {
+ t.Errorf("got %v want %v", got, want)
+ }
+ }
+
+ t.Run("make the sums of some slices", func(t *testing.T) {
+ got := SumAllTails([]int{1, 2}, []int{0, 9})
+ want := []int{2, 9}
+
+ checkSums(t, got, want)
+ })
+
+ t.Run("safely sum empty slices", func(t *testing.T) {
+ got := SumAllTails([]int{}, []int{3, 4, 5})
+ want := []int{0, 9}
+
+ checkSums(t, got, want)
+ })
+}