Решение на Първа задача от Георги Димов

Обратно към всички решения

Към профила на Георги Димов

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 12 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def n_member(first, second, n)
#reduce n, because first and second members are already calculated
(n - 1).times { second, first = first + second, second }
first
end
def fibonacci(n)
n_member 1, 1, n
end
def lucas(n)
n_member 2, 1, n
end
def series(sequence, n)
case sequence
when 'fibonacci' then fibonacci n
when 'lucas' then lucas n
when 'summed' then (fibonacci n) + (lucas n)
end
end

Лог от изпълнението

............

Finished in 0.01335 seconds
12 examples, 0 failures

История (3 версии и 1 коментар)

Георги обнови решението на 15.10.2014 12:21 (преди около 10 години)

+def n_member(first, second, n)
+ (n - 1).times do
+ second, first = first + second, second
+ end
+
+ first
+end
+
+def fibonacci(n)
+ n_member 1, 1, n
+end
+
+def lucas(n)
+ n_member 2, 1, n
+end
+
+def series(sequence, n)
+ case sequence
+ when 'fibonacci' then fibonacci n
+ when 'lucas' then lucas n
+ when 'summed' then (fibonacci n) + (lucas n)
+ end
+end

Георги обнови решението на 15.10.2014 12:30 (преди около 10 години)

def n_member(first, second, n)
+ #reduce n, because first and second members are already calculated
(n - 1).times do
second, first = first + second, second
end
first
end
def fibonacci(n)
n_member 1, 1, n
end
def lucas(n)
n_member 2, 1, n
end
def series(sequence, n)
case sequence
when 'fibonacci' then fibonacci n
when 'lucas' then lucas n
when 'summed' then (fibonacci n) + (lucas n)
end
-end
+end

Георги обнови решението на 15.10.2014 12:33 (преди около 10 години)

def n_member(first, second, n)
#reduce n, because first and second members are already calculated
- (n - 1).times do
- second, first = first + second, second
- end
+ (n - 1).times { second, first = first + second, second }
first
end
def fibonacci(n)
n_member 1, 1, n
end
def lucas(n)
n_member 2, 1, n
end
def series(sequence, n)
case sequence
when 'fibonacci' then fibonacci n
when 'lucas' then lucas n
when 'summed' then (fibonacci n) + (lucas n)
end
end

Като цяло, решението ти е прилично. Малко бележки:

  • Когато имаш методи с аргументи, слагай скобите (например, ред 9, 13, 18-19).
  • На ред 20 скобите не трябва да са така. Трябва да са fibonacci(n) + lucas(n).
  • В series би било приятно да подравниш then клаузите вертикално, ще се подобри четимостта.
  • Методът n_member е лошо именуван. По-добро име би било nth_member, или дори nth_series_member.
  • Избягвай коментарите. Ако се налага да слагаш коментари, значи дизайнът на кода е недостатъчно ясен. Много рядко коментарите имат смисъл. Опитвай се да ги правиш ненужни, като използваш по-ясни и описателни имена на методи, на променливи и прочее.
  • first, second може би ще е по-добре ако са first_member и second_member, за да е максимално ясно за какво "първо" и "второ" нещо става дума.