Решение на Poor Man's Currying от Станимира Влаева

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

Към профила на Станимира Влаева

Резултати

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

Код

package main
func Repeater(s, sep string) func(int) string {
return func(count int) string {
if count < 1 {
return ""
}
text := s
for i := 1; i < count; i += 1 {
text += sep + s
}
return text
}
}
func Generator(gen func(int) int, initial int) func() int {
firstRun := true
current := initial
return func() int {
if firstRun {
firstRun = false
return current
} else {
current = gen(current)
}
return current
}
}
func MapReducer(mapper func(int) int, reducer func(int, int) int, initial int) func(...int) int {
return func(args ...int) int {
sum := initial
for _, current := range args {
current := mapper(current)
sum = reducer(current, sum)
}
return sum
}
}

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

PASS
ok  	_/tmp/d20181024-53-97g36r	0.002s
PASS
ok  	_/tmp/d20181024-53-97g36r	0.002s
PASS
ok  	_/tmp/d20181024-53-97g36r	0.002s
PASS
ok  	_/tmp/d20181024-53-97g36r	0.002s
--- FAIL: TestMapReducer (0.00s)
    --- FAIL: TestMapReducer/left_shift_all_the_way (0.00s)
        solution_test.go:291: Expected 88080384 but got 0
    --- FAIL: TestMapReducer/left_foldedness (0.00s)
        solution_test.go:291: Expected 64 but got 0
FAIL
exit status 1
FAIL	_/tmp/d20181024-53-97g36r	0.002s
PASS
ok  	_/tmp/d20181024-53-97g36r	0.002s

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

Станимира обнови решението на 22.10.2018 20:38 (преди 10 месеца)

+package main
+
+func Repeater(s, sep string) func(int) string {
+ return func(count int) string {
+ if count < 1 {
+ return ""
+ }
+
+ text := s
+ for i := 1; i < count; i += 1 {
+ text += sep + s
+ }
+
+ return text
+ }
+}
+
+func Generator(gen func(int) int, initial int) func() int {
+ firstRun := true
+ current := initial
+
+ return func() int {
+ if firstRun {
+ firstRun = false
+ return current
+ } else {
+ current = gen(current)
+ }
+ return current
+ }
+}
+
+func MapReducer(mapper func(int) int, reducer func(int, int) int, initial int) func(...int) int {
+ return func(args ...int) int {
+ sum := initial
+ for _, current := range args {
+ current := mapper(current)
+ sum = reducer(current, sum)
+ }
+
+ return sum
+ }
+}

Прочети по - внимателно условието на задачата. Има ли информация там, която не си използвала? Или пък има ли условие което се надяваш да си спазила, но все пак не си проверила?