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

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

Към профила на Петя Петрова

Резултати

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

Код

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

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

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

Finished in 0.02577 seconds
12 examples, 0 failures

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

Петя обнови решението на 13.10.2014 18:37 (преди около 10 години)

+def fibonacci(number)
+ if number < 2
+ number
+ else
+ fibonacci(number-1) + fibonacci(number-2)
+ end
+end
+
+def lucas(number)
+ if number == 1
+ 2
+ elsif number == 2
+ 1
+ else
+ lucas(number-1) + lucas(number-2)
+ end
+end
+
+def summed (number)
+ fibonacci(number) + lucas(number)
+end
+
+def series(function, number)
+ if function == 'fibonacci'
+ fibonacci(number)
+ elsif function == 'lucas'
+ lucas(number)
+ else
+ summed(number)
+ end
+end
  • Имаш малък whitespace проблем. Погледни style guide-a, за да го адресираш.
  • function не е най-добрият избор тук. Първо, не ви подаваме функция, а име на ред. Второ, много е generic. Всяка функция може да се казва function. Опитай се да става ясно какъв е смисълът точно зад тази 'функция'.
  • Леко си разширила дефиниционното множество на нашия fibonacci. Като цяло не се интересуваме какво връща или как гърми методът с недефинирани стойности. Но когато е без trade-off е добре кодът ти да не разчита на тях. С други думи трябва да си представиш, че винаги когато викаш fibonacci(2) (и съотвено друго по-голямо число) използваш fibonacci(0), който унищожава света и решението ти не сработва. (:
  • Експериментирай дали няма да ти изглежда по-красиво, ако замениш if-овете с case (when - then). Така кодът ти няма да има назъбен вид (редуване на редове с нещо и такива, които са почти празни).

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

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