Решение на Първа задача от Людмил Делчев

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

Към профила на Людмил Делчев

Резултати

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

Код

def fibonacci(number_index)
if number_index <= 2
return 1
end
fibonacci(number_index - 1) + fibonacci(number_index - 2)
end
def lucas(number_index)
case number_index
when 1 then return 2
when 2 then return 1
end
lucas(number_index - 1) + lucas(number_index - 2)
end
def series(name, number_index)
case name
when 'fibonacci' then fibonacci(number_index)
when 'lucas' then lucas(number_index)
when 'summed' then fibonacci(number_index) + lucas(number_index)
end
end

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

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

Finished in 0.02153 seconds
12 examples, 0 failures

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

Людмил обнови решението на 11.10.2014 01:43 (преди около 10 години)

+
+ def fibonacci (number_index)
+ if number_index == 1
+ return 1
+ end
+ if number_index == 2
+ return 1
+ end
+ fibonacci(number_index-1) + fibonacci(number_index-2)
+end
+
+def lucas (number_index)
+ if number_index == 1
+ return 2
+ end
+ if number_index == 2
+ return 1
+ end
+ lucas(number_index-1) + lucas(number_index-2)
+end
+
+def series (name,number_index)
+ if name=='fibonacci' then fibonacci(number_index)
+ elsif name=='lucas' then lucas(number_index)
+ else fibonacci(number_index) + lucas(number_index)
+ end
+end
  • Имаш малки whitespace проблеми. Единия предполагам виждаш. За другите погледни style guide-a.
  • Ако ти се наложи да слагаш if - then така на един ред е добре да погледнеш case (switch-ът в Ruby).
  • Можеше да ползваш if - elsif - else (или отново - case) вместо 2 нормални if-а с return-и. Ако настояваш да остане с тази идея обърнатия синтаксис ще ти хареса (x if y).
  • Не слагай празен ред на края на файла.

Като цяло е добре.

Людмил обнови решението на 12.10.2014 22:35 (преди около 10 години)

-
- def fibonacci (number_index)
+def fibonacci (number_index)
if number_index == 1
return 1
end
if number_index == 2
return 1
end
- fibonacci(number_index-1) + fibonacci(number_index-2)
+ fibonacci(number_index - 1) + fibonacci(number_index - 2)
end
def lucas (number_index)
if number_index == 1
return 2
end
if number_index == 2
return 1
end
- lucas(number_index-1) + lucas(number_index-2)
+ lucas(number_index - 1) + lucas(number_index - 2)
end
-def series (name,number_index)
- if name=='fibonacci' then fibonacci(number_index)
- elsif name=='lucas' then lucas(number_index)
- else fibonacci(number_index) + lucas(number_index)
+def series (name, number_index)
+ case name
+ when 'fibonacci' then fibonacci(number_index)
+ when 'lucas' then lucas(number_index)
+ when 'summed' then fibonacci(number_index) + lucas(number_index)
end
end

Людмил обнови решението на 14.10.2014 18:21 (преди около 10 години)

-def fibonacci (number_index)
- if number_index == 1
+def fibonacci(number_index)
+ if number_index <= 2
return 1
end
- if number_index == 2
- return 1
- end
fibonacci(number_index - 1) + fibonacci(number_index - 2)
end
-def lucas (number_index)
- if number_index == 1
- return 2
+def lucas(number_index)
+ case number_index
+ when 1 then return 2
+ when 2 then return 1
end
- if number_index == 2
- return 1
- end
lucas(number_index - 1) + lucas(number_index - 2)
end
-def series (name, number_index)
+def series(name, number_index)
case name
when 'fibonacci' then fibonacci(number_index)
when 'lucas' then lucas(number_index)
when 'summed' then fibonacci(number_index) + lucas(number_index)
end
end

Людмил обнови решението на 15.10.2014 16:14 (преди около 10 години)

def fibonacci(number_index)
if number_index <= 2
return 1
end
fibonacci(number_index - 1) + fibonacci(number_index - 2)
end
def lucas(number_index)
case number_index
when 1 then return 2
when 2 then return 1
end
lucas(number_index - 1) + lucas(number_index - 2)
end
def series(name, number_index)
case name
when 'fibonacci' then fibonacci(number_index)
- when 'lucas' then lucas(number_index)
- when 'summed' then fibonacci(number_index) + lucas(number_index)
+ when 'lucas' then lucas(number_index)
+ when 'summed' then fibonacci(number_index) + lucas(number_index)
end
end
  • Има два интервала на ред 20 след then, а трябва да е един :)
  • По-добре ползвай постфиксния вариант на if във fibonacci.
  • Ще е по-четимо, ако оставиш по един празен ред между редове 3 и 4 и редове 12 и 13.

Иначе, доста добре!