Решение на Първа задача от Велислав Симеонов

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

Към профила на Велислав Симеонов

Резултати

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

Код

def fibonacci(number)
return 1 if (1..2).include? number
fibonacci(number-1) + fibonacci(number-2) if number > 2
end
def lucas(number)
return 2 if number.eql?1
return 1 if number.eql?2
lucas(number-1)+ lucas(number-2) if number>2
end
def series (name , number)
return fibonacci(number) if name.eql? "fibonacci"
return lucas(number) if name.eql? "lucas"
return fibonacci(number) + lucas(number) if name.eql? "summed"
end

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

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

Finished in 0.04277 seconds
12 examples, 0 failures

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

Велислав обнови решението на 13.10.2014 17:09 (преди около 10 години)

+def fibonacci(number)
+ return 1 if (1..2).include? number
+ fibonacci(number-1) + fibonacci(number-2) if number > 2
+end
+
+def lucas(number)
+ return 2 if number.eql?1
+ return 1 if number.eql?2
+ lucas(number-1)+ lucas(number-2) if number>1
+end
+
+def series (name , number)
+ return fibonacci(number) if name.eql? "fibonacci"
+ return lucas(number) if name.eql? "lucas"
+ return fibonacci(number) + lucas(number) if name.eql? "summed"
+end

Велислав обнови решението на 13.10.2014 19:30 (преди около 10 години)

def fibonacci(number)
- return 1 if (1..2).include? number
+ return 1 if (1..2).include? 1
fibonacci(number-1) + fibonacci(number-2) if number > 2
end
def lucas(number)
return 2 if number.eql?1
return 1 if number.eql?2
lucas(number-1)+ lucas(number-2) if number>1
end
def series (name , number)
return fibonacci(number) if name.eql? "fibonacci"
return lucas(number) if name.eql? "lucas"
return fibonacci(number) + lucas(number) if name.eql? "summed"
end

Велислав обнови решението на 13.10.2014 19:31 (преди около 10 години)

def fibonacci(number)
- return 1 if (1..2).include? 1
+ return 1 if (1..2).include? number
fibonacci(number-1) + fibonacci(number-2) if number > 2
end
def lucas(number)
return 2 if number.eql?1
return 1 if number.eql?2
lucas(number-1)+ lucas(number-2) if number>1
end
def series (name , number)
return fibonacci(number) if name.eql? "fibonacci"
return lucas(number) if name.eql? "lucas"
return fibonacci(number) + lucas(number) if name.eql? "summed"
end

Велислав обнови решението на 13.10.2014 22:30 (преди около 10 години)

def fibonacci(number)
return 1 if (1..2).include? number
fibonacci(number-1) + fibonacci(number-2) if number > 2
end
def lucas(number)
- return 2 if number.eql?1
- return 1 if number.eql?2
- lucas(number-1)+ lucas(number-2) if number>1
+ return 2 if number.eql?1
+ return 1 if number.eql?2
+ lucas(number-1)+ lucas(number-2) if number>1
end
def series (name , number)
- return fibonacci(number) if name.eql? "fibonacci"
- return lucas(number) if name.eql? "lucas"
- return fibonacci(number) + lucas(number) if name.eql? "summed"
+ return fibonacci(number) if name.eql? "fibonacci"
+ return lucas(number) if name.eql? "lucas"
+ return fibonacci(number) + lucas(number) if name.eql? "summed"
end

Велислав обнови решението на 14.10.2014 19:56 (преди около 10 години)

def fibonacci(number)
return 1 if (1..2).include? number
fibonacci(number-1) + fibonacci(number-2) if number > 2
end
def lucas(number)
return 2 if number.eql?1
return 1 if number.eql?2
- lucas(number-1)+ lucas(number-2) if number>1
+ lucas(number-1)+ lucas(number-2) if number>2
end
def series (name , number)
return fibonacci(number) if name.eql? "fibonacci"
return lucas(number) if name.eql? "lucas"
return fibonacci(number) + lucas(number) if name.eql? "summed"
end
  • Имаш известно количество whitespace проблеми. Погледни style guide-a, за да ги адресираш.
  • Не прави излишни проверки дали на последните редове си в единствената останала част от дефиниционното множество. Не трябва да се грижиш какво става, ако входът е невалиден.
  • В series няма изключения и общ случай. Използвай case (switch-ът в Ruby) или обикновен if - elsif - else.
  • Употребявай ==, а не eql?, освен ако нямаш изрична причина. Често са синоними, понякога с някаква малка разлика. Тук някой е описал какво представляват четирите равенства в езика.
  • Слагай празен ред между връщането при изключителните случаи и главната логика, за да подобриш четимостта на кода.
  • (x..y) и (x...y) принципно вървят ръка за ръка с when или ===. За създаване на Range в другите ситуации използвай x.upto(y). В конкретния случай изобщо не ти трябва. Ако имаш само два елемента сложи масив или сравни директно.