Милуш обнови решението на 21.10.2018 14:37 (преди 10 месеца)
+package main
+
+import (
+ "strings"
+)
+
+func Repeater(s, sep string) func(int) string {
+ return func(i int) string {
+ var strBuilder strings.Builder
+
+ for index := 0; index < i; index++ {
+ strBuilder.WriteString(s)
+ if index+1 < i {
+ strBuilder.WriteString(sep)
+ }
+
+ }
+ return strBuilder.String()
+ }
+}
+
+func Generator(gen func(int) int, initial int) func() int {
+ return func() int {
+ defer func() { initial = gen(initial) }()
+ return initial
+ }
+}
+
+func MapReducer(mapper func(int) int, reducer func(int, int) int, initial int) func(...int) int {
+ return func(args ...int) int {
+ for index := 0; index < len(args); index++ {
+ args[index] = mapper(args[index])
+ }
+
+ var resultReducer int
+ for _, v := range args {
+ resultReducer = reducer(initial, v)
+ initial = resultReducer
+ }
+
+ return resultReducer
+ }
+}
Съветвам те да обърнеш вминание на всички крайни случай (corner cases) при тестването си :)