Дамян обнови решението на 10.10.2014 16:54 (преди около 10 години)
+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)
.