Христо обнови решението на 20.10.2018 18:53 (преди 10 месеца)
+package main
+
+import "fmt"
+
+func Repeater(s, sep string) func(int) string {
+ return func(numberOfRepeats int) string {
+ if numberOfRepeats < 1 {
+ return ""
+ }
+ var result string
+ for i := 0; i < numberOfRepeats-1; i++ {
+ result += s + sep
+ }
+ return result + s
+ }
+}
+
+func Generator(gen func(int) int, initial int) func() int {
+ return func() int {
+ initial = gen(initial)
+ return initial
+ }
+}
+
+func MapReducer(mapper func(int) int, reducer func(int, int) int, initial int) func(...int) int {
+ return func(numbers ...int) int {
+ for i := range numbers {
+ numbers[i] = mapper(numbers[i])
+ }
+
+ for _, number := range numbers {
+ initial = reducer(initial, number)
+ }
+ return initial
+ }
+}
+
+func main() {
+ power := Generator(
+ func(v int) int { return v * v },
+ 2,
+ )
+ increaser := Generator(
+ func(v int) int { return v + 1 },
+ 0,
+ )
+ fmt.Printf("%d %d %d \n", power(), power(), power())
+ fmt.Printf("%d %d %d \n", increaser(), increaser(), increaser())
+
+ powerSum := MapReducer(
+ func(v int) int { return v * v },
+ func(a, v int) int { return a + v },
+ 0,
+ )
+
+ fmt.Printf("%d", powerSum(1, 2, 3, 4))
+}
Ако се пробвам да го предам с празна функция main ми казва, че не мога да го предам, защото имам синтактична грешка? Някъде бях чел, че едно от условията за предаване е да е без тази функция, нещо не съм разбрал правилно ли?
Просто махни изцяло main. Също така, опитай си решението с примерите от условието.
Пробвах и без main(), пак ми дава синтактична грешка. Може би не изтривам правилните неща ли, ддз.
Вече съм си изпробвал решението с дадените примери.