Методи обнови решението на 09.10.2014 11:41 (преди около 10 години)
+def sequence_member(previous, current, index)
+ sequence_array = [previous, current]
+ index.times do
+ previous, current = current, previous + current
+ sequence_array << current
+ end
+ sequence_array[index - 1]
+end
+
+def fibonacci(index)
+ sequence_member(1, 1, index)
+end
+
+def lucas(index)
+ sequence_member(2, 1, index)
+end
+
+def summed(index)
+ fibonacci(index) + lucas(index)
+end
+
+def series(generator_type, index)
+ send generator_type.to_sym, index
+end
- Супер е, че си разгледал и видял
send
. Все пак очаквахме да използвате базови инструменти за базова задача. Ако отсега метапрограмираме се чудя какво ще стане със следващите задачи. :) Използван в глобалния контекст може да има пагубни последствия ако не си напълно наясно как работи. Още една малка забележка -send
може да приема и string-ове, не е нужно да cast-ваш експлицитно към символ. - Имплементацията ти на
sequence_member
е доста процедурна. Кога множественото присвояване на един ред е ok е малко fuzzy. Също съм убеден, че ще успееш да намериш по-красиви алтернативи за често използвани операции като получаване на последния елемент на масив. Погледни документацията наEnumerable
иArray
, за да почерпиш вдъхновение :) - Какво всъщност трябва да значи
generator_type
?