Александра обнови решението на 24.10.2018 11:50 (преди 10 месеца)
+package main
+
+import "fmt"
+
+func Generator(gen func(int) int, initial int) func() int {
+ i := initial
+ return func() (ret int) {
+ ret = i
+ i = gen(i)
+ return
+ }
+}
+
+func Repeater(s, sep string) func(int) string {
+ cat := s + sep
+ return func(cnt int) string {
+ var rep_res string
+ for i := 0; i < cnt; i++ {
+ if i+1 < cnt {
+ rep_res += cat
+ } else {
+ rep_res += s
+ }
+ }
+ return rep_res
+ }
+}
+
+func MapReducer(mapper func(int) int, reducer func(int, int) int, initial int) func(...int) int {
+ return func(elements ...int) (res int) {
+ res = initial
+ for i := 0; i < len(elements); i++ {
+ elements[i] = mapper(elements[i])
+ res = reducer(elements[i], res)
+ }
+ return res
+ }
+}
+func main() {
Няма нужда добавяш main
функция в решението си. Ако искаш да тестваш с такава, може да си я сложиш в съседен файл и да пускаш всичко с go run .
.
+ fmt.Println("Repeater:")
+ fmt.Println(Repeater("foo", ":")(3)) // foo:foo:foo
+
+ fmt.Println("Generator:")
+ counter := Generator(
+ func(v int) int { return v + 1 },
+ 0,
+ )
+ power := Generator(
+ func(v int) int { return v * v },
+ 2,
+ )
+ 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("MapReducer:")
+ powerSum := MapReducer(
+ func(v int) int { return v * v },
+ func(a, v int) int { return a + v },
+ 0,
+ )
+
+ fmt.Println(powerSum(1, 2, 3, 4)) // 30
+}
Помисли дали си направила всичко, което условието ти казва. Има ли неща, които само си се надявала да спазиш и все пак не си проверила изрично?
Няма нужда добавяш
main
функция в решението си. Ако искаш да тестваш с такава, може да си я сложиш в съседен файл и да пускаш всичко сgo run .
.