Решение на Трета задача от Александър Дражев
Към профила на Александър Дражев
Резултати
- 6 точки от тестове
- 0 бонус точки
- 6 точки общо
- 20 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
.................... Finished in 0.0124 seconds 20 examples, 0 failures
История (3 версии и 3 коментара)
Александър обнови решението на 23.10.2015 07:36 (преди над 9 години)
Александър обнови решението на 23.10.2015 19:01 (преди над 9 години)
На места имаш дребни стилови проблеми.
Като цяло, решението ти е една идея по-умно, отколкото може да бъде. За задачи с педагогическа цел е приемливо, но в реален, продукционен код, ако има по-семпло решение, удовлетворяващо функционалните и времеви изисквания, по-добре да се ползва то.
EDIT: Като цяло, решението е добро. Да не ме разбереш погрешно :)
Не съм сигурен, че разбирам забележката. Може ли пример с конкретна част от кода, която би могла да се направи по-семпло, без това да е за значителна сметка на performance-a?
Намирам за по-удачни за случая следните неща:
-
Integer#prime?
от нашето примерно решение -
Алтернативен
FibonacciSequence#each
(сходно и за другите):def each current, previous = @first, @second - @first @count.times do yield current current, previous = current + previous, current end end
- по-добре да беше преизползвал
FibonacciSequence
вworthless
Идеята на задачите е по-скоро да се упражни този стил на писане, използващ много Enumerable
и Enumerator
и който е като цяло по-семпъл, включително използване на Array#first/last
, вместо [0]
или [1]
, избягване на неща като (sum += r) <= limit
и т.н.
Ако ограниченията ти са дребни числа и рядко изпълнение на кода, какъв ще е смисълът от fibonacci
, дефиниран по този начин в един реален проект (ако допуснем, че би имал случай да ти трябва fibonacci
там)? Определено бих заложил на наивната имплементация там, защото ще е много по-лесно за поддръжка от колегите ми, включително и от бъдещото ми "аз".
За такива имплементации определено има място, дори в produciton код, просто в тези задачи целта е да покажем една друга гледна точка.
P.S. current_prime
е всъщност current_number
.