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

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

Към профила на Любомир Петков

Резултати

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

Код

def fibonacci(number)
if number <= 2 then 1
else fibonacci(number - 1) + fibonacci(number - 2)
end
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(sequence_type, number)
case sequence_type
when 'fibonacci' then fibonacci(number)
when 'lucas' then lucas(number)
when 'summed' then fibonacci(number) + lucas(number)
end
end

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

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

Finished in 0.02178 seconds
12 examples, 0 failures

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

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

+def fibonacci(number)
+ if number == 1 or number == 2
+ 1
+ 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 series(sequence, number)
+ case sequence
+ when 'fibonacci' then fibonacci(number)
+ when 'lucas' then lucas(number)
+ when 'summed' then fibonacci(number) + lucas(number)
+ else "Unknown sequence."
+ end
+end

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

def fibonacci(number)
- if number == 1 or number == 2
- 1
- else
- fibonacci(number - 1) + fibonacci(number - 2)
+ case number
+ when 1 then 1
+ when 2 then 1
+ 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)
+ case number
+ when 1 then 2
+ when 2 then 1
+ else lucas(number - 1) + lucas(number - 2)
end
end
def series(sequence, number)
case sequence
when 'fibonacci' then fibonacci(number)
when 'lucas' then lucas(number)
when 'summed' then fibonacci(number) + lucas(number)
else "Unknown sequence."
end
end

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

def fibonacci(number)
case number
when 1 then 1
when 2 then 1
else fibonacci(number - 1) + fibonacci(number - 2)
end
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(sequence, number)
case sequence
when 'fibonacci' then fibonacci(number)
when 'lucas' then lucas(number)
when 'summed' then fibonacci(number) + lucas(number)
- else "Unknown sequence."
+ else "Unrecognized sequence."
end
end

Като цяло доста добро решение. Само няколко забележки:

  • sequence не е точното име. Подаваме ви име на редица, не самата редица.
  • Не се грижи за невалидни входни данни.
  • Погледни как можеш да слееш двата when-a проверки във fibonacci.
  • В Ruby се смята за прилежно да подравняваш някои конструкции, когато се срещат на съседни редове. Сред тях са =, then и стойностите на hash-овете.

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

def fibonacci(number)
- case number
- when 1 then 1
- when 2 then 1
- else fibonacci(number - 1) + fibonacci(number - 2)
+ if number <= 2 then 1
+ else fibonacci(number - 1) + fibonacci(number - 2)
end
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(sequence, number)
- case sequence
+def series(sequence_type, number)
+ case sequence_type
when 'fibonacci' then fibonacci(number)
- when 'lucas' then lucas(number)
- when 'summed' then fibonacci(number) + lucas(number)
- else "Unrecognized sequence."
+ when 'lucas' then lucas(number)
+ when 'summed' then fibonacci(number) + lucas(number)
end
end