Владимир обнови решението на 15.10.2014 16:33 (преди около 10 години)
+def series(type, n)
+ if type === 'fibonacci'
+ (0..n).inject([1, 0]){|(sum, item)| [item, sum + item]}[0]
+ elsif type === 'lucas'
+ (1..n).inject([-1, 2]){|(sum, item)| [item, sum + item]}[0]
+ else
+ series('fibonacci', n) + series('lucas', n)
+ end
+end
+
Имаш стилови проблеми. Непременно се запознай с конвенциите, които ръководството по стил препоръчва. От следващата задача ще отнемаме точки за грубото им неспазване.
- Не трябва да има два интервала след
if
-а на ред 2. - Ред 3 трябва да се форматира така:
(0..n).inject([1, 0]) { |(sum, item)| [item, sum + item] }[0]
- Тази употреба на
inject
не ми харесва. Твърде сложно за разбиране ми се струва. Има и по-прости начини да постигнеш същия ефект. - Не сравнявай с три равенства. Сравнява се с две:
==
. Виж първата презентаця, там е споменато за различните видове сравнения.===
е нещо специално, за него ще говорим по-натам.
И, най-важното – не предавай в последния момент, за да можем да ти оставим коментари и да реагираш на тях :)
Исках да използвам,нещо по-различно.Досега Фибоначи,съм правил на С++,PHP,на Матлаб и не ми се искаше да е толкова тривиално затова разучих inject(init),дори го имам решението и с Hash с метода update.Другият път от ранно ще предав.Мерси за feedback-a