Дамян обнови решението на 10.10.2014 16:54 (преди около 11 години)
+def series_start_values(series_name)
+ series_name == 'fibonacci' ? [1, 1] : [2, 1]
+end
+
+def series_nth_member(series_name, n)
+ series_n = series_start_values(series_name)
+ (2..n).each do |i|
+ series_n[i] = series_n[i - 1] + series_n[i - 2]
+ end
+ series_n[n - 1]
+end
+
+def series(series_name, n)
+ case series_name
+ when 'summed'
+ series_nth_member('fibonacci', n) + series_nth_member('lucas', n)
+ else
+ series_nth_member(series_name, n)
+ end
+end
Като цяло добре.
- Опитай се да измислиш по-добри имена от
series_nиi.series_start_valuesе може би малко borderline. - Имаш лек проблем с индентацията на
caseспоред нашата версия на style guide-а. Принципно ако имам само два случая бих използвал обикновенif-else. - Остави един празен ред между изчисленията и връщането на стойност във
series_nth_memberза по-добра четимост. - В Ruby
(x..y)най-често идва в комбинация с===илиwhen. Тук би било по-добре да конструирашRangeсx.upto(y).
