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

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

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

Резултати

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

Код

def fibonacci(number)
number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
case number
when 1 then 2
when 2 then 1
else lucas(number - 1) + lucas(number -2)
end
end
def series(name, number)
case name
when 'fibonacci' then fibonacci(number)
when 'lucas' then lucas(number)
when 'summed' then fibonacci(number) + lucas(number)
end
end

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

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

Finished in 0.0216 seconds
12 examples, 0 failures

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

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

+def fibonacci(number)
+ number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
+end
+
+def lucas(number)
+ if number <= 2
+ number == 1 ? 2 : 1
+ else
+ lucas(number - 1) + lucas(number - 2)
+ end
+end
+
+def series(string, number)
+ case string
+ when 'fibonacci' then fibonacci(number)
+ when 'lucas' then lucas(number)
+ when 'summed' then fibonacci(number) + lucas(number)
+ end
+end
  • Никой не харесва дълбоко вложени if-ове. Просто са много трудни за разбиране. Опитай се да 'изгладиш' този if в lucas използвайки case. И така е ок, но мисля че с case ще бъде по-четимо.
  • string не е добро име. Какво съхранява този string?
  • Индентирай when в case един спейс по-навътре. Също е приятно, когато then клаузите са подравнени една под друга. Така :

    when 'morning'   then ..
    when 'noon'      then ..
    when 'afternoon' then ..
    

Георги обнови решението на 14.10.2014 21:32 (преди над 9 години)

def fibonacci(number)
number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
if number <= 2
number == 1 ? 2 : 1
else
lucas(number - 1) + lucas(number - 2)
end
end
-def series(string, number)
- case string
- when 'fibonacci' then fibonacci(number)
- when 'lucas' then lucas(number)
- when 'summed' then fibonacci(number) + lucas(number)
+def series(name, number)
+ case name
+ when 'fibonacci' then fibonacci(number)
+ when 'lucas' then lucas(number)
+ when 'summed' then fibonacci(number) + lucas(number)
end
-end
+end

Георги обнови решението на 14.10.2014 21:50 (преди над 9 години)

def fibonacci(number)
number <= 2 ? 1 : fibonacci(number - 1) + fibonacci(number - 2)
end
def lucas(number)
- if number <= 2
- number == 1 ? 2 : 1
- else
- lucas(number - 1) + lucas(number - 2)
+ case number
+ when 1 then 2
+ when 2 then 1
+ else lucas(number - 1) + lucas(number -2)
end
end
def series(name, number)
case name
when 'fibonacci' then fibonacci(number)
when 'lucas' then lucas(number)
when 'summed' then fibonacci(number) + lucas(number)
end
-end
+end