Александър обнови решението на 19.10.2014 23:39 (преди над 3 години)
+package main
+
+func Map(data []string, mapper func(string) string) []string {
+ for i, v := range data {
+ data[i] = mapper(v)
+ }
+ return data
+}
+
+func Filter(data []string, predicate func(string) bool) []string {
+ slice := data[:0]
+ for _, v := range data {
+ if predicate(v) {
+ slice = append(slice, v)
+ }
+ }
+ return slice
+}
+
+func Reduce(data []string, combinator func(string, string) string) string {
+ slice := data[1:]
+ for _, v := range slice {
+ data[0] = combinator(data[0], v)
+ }
+ return data[0]
+}
+
+func Any(data []string, predicate func(string) bool) bool {
+ for _, v := range data {
+ if predicate(v) {
+ return true
+ }
+ }
+ return false
+}
+
+func All(data []string, predicate func(string) bool) bool {
+ for _, v := range data {
+ if !predicate(v) {
+ return false
+ }
+ }
+ return true
+}
Това с промяната на място не ми харесва - моля не ми променяй данните :)
Reduce
-а ти ще гърми при празни данни.