Решение на Първа задача от Габриела Лухова

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

Към профила на Габриела Лухова

Резултати

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

Код

def fibonacci(number)
number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
if number == 1
2
elsif number == 2
1
else
lucas(number - 1) + lucas(number - 2)
end
end
def series(sequence, number)
if sequence == 'fibonacci'
fibonacci(number)
elsif sequence == 'lucas'
lucas(number)
else
fibonacci(number) + lucas(number)
end
end

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

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

Finished in 0.02164 seconds
12 examples, 0 failures

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

Габриела обнови решението на 11.10.2014 14:41 (преди над 9 години)

+def fibonacci(number)
+ number <= 1 ? number : fibonacci(number - 1) + fibonacci(number - 2)
+end
+
+def lucas(number)
+ if number == 1
+ 2
+ elsif number == 2
+ 1
+ else
+ lucas(number - 1) + lucas(number - 2)
+ end
+end
+
+def series(string, number)
+ if (string == 'fibonacci')
+ fibonacci(number)
+ elsif (string == 'lucas')
+ lucas(number)
+ else
+ fibonacci(number) + lucas(number)
+ end
+end

Като цяло доста хубаво решение. Няколко забележки:

  • Не ограждай в скоби условията на if. Можеш да се консултираш със style guide-a за повече яснота.
  • string е generic име. Опитай се когато именуваш неща да изразяваш семантиката, която стои зад тях. Всеки string може да е string. Какво значение има точно този string, в този контекст?
  • Може да експериментираш дали ще изглежда естетически по-добре, ако използваш case (when - then). Така няма да имаш "назъбено" изглеждащ код (редуване на редове със съдържание и почти празни такива) в lucas.
  • Леко си разширила дефиниционното множество на нашия fibonacci. Няма проблем да връщаш или гърмиш както си искаш за недефинираните стойности, но се опитвай имплементацията на дефинираните такива да не разчита на тях.

Здравейте, при опит да кача ново (поправено) решение на задачата ми изписва: We're sorry, but something went wrong. Това означава ли, че нямам право да кача друго решение или просто трябва да го кача тук като коментар?

Габриела обнови решението на 12.10.2014 23:34 (преди над 9 години)

def fibonacci(number)
- number <= 1 ? number : fibonacci(number - 1) + fibonacci(number - 2)
+ number < 2 ? number : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
if number == 1
2
elsif number == 2
1
else
lucas(number - 1) + lucas(number - 2)
end
end
-def series(string, number)
- if (string == 'fibonacci')
+def series(sequence, number)
+ if sequence == 'fibonacci'
fibonacci(number)
- elsif (string == 'lucas')
+ elsif sequence == 'lucas'
lucas(number)
else
fibonacci(number) + lucas(number)
end
end

Габриела обнови решението на 13.10.2014 23:17 (преди над 9 години)

def fibonacci(number)
- number < 2 ? number : fibonacci(number - 1) + fibonacci(number - 2)
+ number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
if number == 1
2
elsif number == 2
1
else
lucas(number - 1) + lucas(number - 2)
end
end
def series(sequence, number)
if sequence == 'fibonacci'
fibonacci(number)
elsif sequence == 'lucas'
lucas(number)
else
fibonacci(number) + lucas(number)
end
end