Мартин обнови решението на 23.10.2018 11:14 (преди 10 месеца)
+package main
+
+import "fmt"
+
+func Repeater(s, sep string) func(int) string {
+
+        return func(count int) (result string) {
+                for i := 0; i < count; i++ {
+                        result += s
+                        if i != count-1 {
+                                result += sep
+                        }
+                }
+                return result
+        }
+}
+
+func Generator(gen func(int) int, initial int) func() int {
+
+        return func() int {
+                var old int = initial
+                initial = gen(initial)
+                return old
+        }
+}
+
+func MapReducer(mapper func(int) int, reducer func(int, int) int, initial int) func(...int) int {
+
+        return func(args ...int) (result int) {
+                for _, v := range args {
+                        mapVal := mapper(v)
+                        result = reducer(mapVal, result)
+                }
+                return result
+        }
+}
+
+func main() {
main функцията не ти трябва в предаденото решение. Ако искаш да имаш такава, може да си я сложиш в отделен файл когато си тестваш при себе си.
+
+        str := Repeater("foo", ":")(-1)
+
+        fmt.Println(str)
+
+        counter := Generator(
+                func(v int) int { return v + 1 },
+                0)
+
+        power := Generator(
+                func(v int) int { return v * v },
+                2,
+        )
+
+        fmt.Println("-------------------------")
+
+        fmt.Println(counter()) // 0
+        fmt.Println(counter()) // 1
+        fmt.Println(power())   // 2
+        fmt.Println(power())   // 4
+        fmt.Println(counter()) // 2
+        fmt.Println(power())   // 16
+        fmt.Println(counter()) // 3
+        fmt.Println(power())   // 256
+        // fmt.Println(res2)
+
+        powerSum := MapReducer(
+                func(v int) int { return v * v },
+                func(a, v int) int { return a + v },
+                0,
+        )
+
+        fmt.Println("-------------------------")
+
+        fmt.Println(powerSum(1, 2, 3, 4)) // 30
+
+        tripleSum := MapReducer(
+                func(v int) int { return v * v * v },
+                func(a, v int) int { return a + v },
+                0,
+        )
+        fmt.Println(tripleSum(1, 2, 3, 4))
+}
+
Пробвал ли си примерните тестове от Github хранилището ни? Има ли нещо от условието което не си проверил дали изпълняваш?
