Решение на Първа задача от Деян Боиклиев

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

Към профила на Деян Боиклиев

Резултати

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

Код

def series(type, index)
return fibonacci(index) if type == 'fibonacci'
return lucas(index) if type == 'lucas'
return fibonacci(index) + lucas(index) if type == 'summed'
end
def fibonacci(index)
return 1 if index <= 2
fibonacci(index - 1) + fibonacci(index - 2)
end
def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end

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

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

Finished in 0.02552 seconds
12 examples, 0 failures

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

Деян обнови решението на 14.10.2014 22:35 (преди около 10 години)

+def series type, index
+ return fibonacci(index) if type == "fibonacci"
+ return lucas(index) if type == "lucas"
+ return fibonacci(index) + lucas(index) if type == "summed"
+end
+
+def fibonacci index
+ index <= 2 ? 1 : fibonacci(index - 1) + fibonacci(index - 2)
+end
+
+def lucas index
+ return 2 if index == 1
+ return 1 if index == 2
+ lucas(index - 1) + lucas(index - 2)
+end

Бележките ми са основно стилови. Като цяло, решението ти е добро.

  • Когато имаш методи с аргументи, слагай скобите (визирам дефиницията на методите)
  • Има липса на симетрия между граничните случаи на fibonacci и на lucas; в единия ползваш тернарен оператор за граничното условие, в другия if-ове и return; аз бих използвал if-ове и при fibonacci, поради следните причини: 1) кодът става по-прост и по-ленсочетим; добре е да се избягва тернарният оператор; 2) за да има симетрия с lucas - така кодът пак ще е по-лесен за възприемане от четящия
  • Принципно е добре да се придържаш към низове с единични кавички, освен ако не използваш специалните свойства на низ с двойни кавички (например, интерполация)

Деян обнови решението на 15.10.2014 16:41 (преди около 10 години)

-def series type, index
- return fibonacci(index) if type == "fibonacci"
- return lucas(index) if type == "lucas"
- return fibonacci(index) + lucas(index) if type == "summed"
+def series(type, index)
+ return fibonacci(index) if type == 'fibonacci'
+ return lucas(index) if type == 'lucas'
+ return fibonacci(index) + lucas(index) if type == 'summed'
end
def fibonacci index
- index <= 2 ? 1 : fibonacci(index - 1) + fibonacci(index - 2)
+ return 1 if index <= 2
+ fibonacci(index - 1) + fibonacci(index - 2)
end
-def lucas index
+def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end

Деян обнови решението на 15.10.2014 16:42 (преди около 10 години)

def series(type, index)
return fibonacci(index) if type == 'fibonacci'
return lucas(index) if type == 'lucas'
return fibonacci(index) + lucas(index) if type == 'summed'
end
-def fibonacci index
+def fibonacci(index)
return 1 if index <= 2
fibonacci(index - 1) + fibonacci(index - 2)
end
def lucas(index)
return 2 if index == 1
return 1 if index == 2
lucas(index - 1) + lucas(index - 2)
end