Решение на Concurrent Retry Executor от Стефани Стоянова

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

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

Резултати

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

Код

package main
func getMessages(log chan string, result chan string) {
for {
msg, ok := <-log
if !ok {
break
} else {
result <- msg
}
}
}
func OrderedLogDrainer(logs chan (chan string)) chan string {
result := make(chan string)
for log := range logs {
go getMessages(log, result)
}
return result
}

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

--- FAIL: TestWithOneMessage (0.50s)
	solution_test.go:27: Test exceeded allowed time of 500 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.503s
--- FAIL: TestWithExample1 (0.50s)
	solution_test.go:27: Test exceeded allowed time of 500 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.503s
--- FAIL: TestWithExample2 (0.50s)
	solution_test.go:27: Test exceeded allowed time of 500 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.503s
--- FAIL: TestWithNoLogs (0.50s)
	solution_test.go:27: Test exceeded allowed time of 500 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.503s
--- FAIL: TestWithTwoEmptyLogs (0.50s)
	solution_test.go:27: Test exceeded allowed time of 500 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.503s
--- FAIL: TestWithDelays (0.90s)
	solution_test.go:27: Test exceeded allowed time of 900 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.903s
--- FAIL: TestTheLimits (0.50s)
	solution_test.go:27: Test exceeded allowed time of 500 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.503s
--- FAIL: TestWithManyLogs (0.80s)
	solution_test.go:27: Test exceeded allowed time of 800 milliseconds
FAIL
exit status 1
FAIL	_/tmp/d20151110-19113-1frk3kl	0.803s

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

Стефани обнови решението на 10.11.2015 00:16 (преди над 2 години)

+package main
+
+func getMessages(log chan string, result chan string) {
+ for {
+ msg, ok := <-log
+ if !ok {
+ break
+ } else {
+ result <- msg
+ }
+ }
+}
+
+func OrderedLogDrainer(logs chan (chan string)) chan string {
+ result := make(chan string)
+
+ for log := range logs {
+ go getMessages(log, result)
+ }
+
+ return result
+}
+
+func main() {
+
+}

Махни празната функция main(), ще пречи при автоматичната проверка на решенията.

Относно задачата: в момента изглежда нямаш строга подредба на резултатите. Ако вземем примера от условието на задачата, нямаш гаранция, че резултата ще излезе подреден, може при теб да бъде по в някакъв разбъркан ред, примерно:

1   test message 1 in first
2   test message 1 in second
1   test message 2 in first
1   test message 3 in first
2   test message 2 in second
3   test message 1 in third
1   test message 4 in first
...

Стефани обнови решението на 10.11.2015 09:18 (преди над 2 години)

package main
func getMessages(log chan string, result chan string) {
for {
msg, ok := <-log
if !ok {
break
} else {
result <- msg
}
}
}
func OrderedLogDrainer(logs chan (chan string)) chan string {
result := make(chan string)
for log := range logs {
go getMessages(log, result)
}
return result
-}
-
+}
-func main() {
-
-}