Решение на Poor Man's Currying от Здравко Георгиев

Обратно към всички решения

Към профила на Здравко Георгиев

Резултати

  • 8 точки от тестове
  • 0 бонус точки
  • 8 точки общо
  • 5 успешни тест(а)
  • 1 неуспешни тест(а)

Код

package main
import (
"bytes"
"strings"
)
func Repeater(s, sep string) func(int) string {
return func(reps int) string {
var result bytes.Buffer
for i := 0; i < reps; i++ {
result.WriteString(s)
result.WriteString(sep)
}
return strings.Trim(result.String(), sep)
}
}
func Generator(gen func(int) int, initial int) func() int {
current := initial
return func() int {
result := current
current = gen(current)
return result
}
}
func MapReducer(
mapper func(int) int,
reducer func(int, int) int,
initial int) func(...int) int {
return func(nums ...int) int {
result := initial
for _, next := range nums {
mapped := mapper(next)
result = reducer(result, mapped)
}
return result
}
}
func main() {
}

Лог от изпълнението

PASS
ok  	_/tmp/d20181024-53-kdju4o	0.002s
--- FAIL: TestRepeater (0.00s)
    --- FAIL: TestRepeater/empty_repeated_string (0.00s)
        solution_test.go:129: Expected `,,,,` but got ``
    --- FAIL: TestRepeater/s_and_sep_are_the_same (0.00s)
        solution_test.go:129: Expected `gophergophergopher` but got ``
FAIL
exit status 1
FAIL	_/tmp/d20181024-53-kdju4o	0.002s
PASS
ok  	_/tmp/d20181024-53-kdju4o	0.002s
PASS
ok  	_/tmp/d20181024-53-kdju4o	0.003s
PASS
ok  	_/tmp/d20181024-53-kdju4o	0.002s
PASS
ok  	_/tmp/d20181024-53-kdju4o	0.002s

История (1 версия и 0 коментара)

Здравко обнови решението на 23.10.2018 23:05 (преди 10 месеца)

+package main
+
+import (
+ "bytes"
+ "strings"
+)
+
+func Repeater(s, sep string) func(int) string {
+ return func(reps int) string {
+ var result bytes.Buffer
+ for i := 0; i < reps; i++ {
+ result.WriteString(s)
+ result.WriteString(sep)
+ }
+ return strings.Trim(result.String(), sep)
+ }
+}
+
+func Generator(gen func(int) int, initial int) func() int {
+ current := initial
+ return func() int {
+ result := current
+ current = gen(current)
+ return result
+ }
+}
+
+func MapReducer(
+ mapper func(int) int,
+ reducer func(int, int) int,
+ initial int) func(...int) int {
+ return func(nums ...int) int {
+ result := initial
+ for _, next := range nums {
+ mapped := mapper(next)
+ result = reducer(result, mapped)
+ }
+ return result
+ }
+}
+
+func main() {
+}