From 141bc3098ca086b43834b637eb57db5f56625304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krejczinger=20=C3=81rp=C3=A1d?= Date: Mon, 16 Mar 2026 00:38:21 +0100 Subject: [PATCH] SumAllTails implemented, refactor tests --- arrays/sum.go | 15 +++++++++++++++ arrays/sum_test.go | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/arrays/sum.go b/arrays/sum.go index 2c94226..7a82a57 100644 --- a/arrays/sum.go +++ b/arrays/sum.go @@ -18,3 +18,18 @@ func SumAll(numbersToSum ...[]int) []int { return sums } + +func SumAllTails(numbersToSum ...[]int) []int { + var sums []int + + for _, numbers := range numbersToSum { + if len(numbers) == 0 { + sums = append(sums, 0) + } else { + tail := numbers[1:] + sums = append(sums, Sum(tail)) + } + } + + return sums +} diff --git a/arrays/sum_test.go b/arrays/sum_test.go index 8640a9e..4774892 100644 --- a/arrays/sum_test.go +++ b/arrays/sum_test.go @@ -1,6 +1,7 @@ package main import ( + "reflect" "slices" "testing" ) @@ -37,3 +38,23 @@ func TestSumAll(t *testing.T) { t.Errorf("got %d want %v", got, want) } } + +func TestSumAllTails(t *testing.T) { + checkSums := func(t testing.TB, got, want []int) { + t.Helper() + if !reflect.DeepEqual(got, want) { + t.Errorf("got %v want %v", got, want) + } + } + + t.Run("sums of slices", func(t *testing.T) { + got := SumAllTails([]int{1, 2}, []int{0, 9}) + want := []int{2, 9} + checkSums(t, got, want) + }) + t.Run("sums with some empty slices", func(t *testing.T) { + got := SumAllTails([]int{}, []int{3, 4, 5}) + want := []int{0, 9} + checkSums(t, got, want) + }) +}