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

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

Към профила на Любослава Димитрова

Резултати

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

Код

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

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

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

Finished in 0.02263 seconds
12 examples, 0 failures

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

Любослава обнови решението на 12.10.2014 16:19 (преди около 10 години)

+def series(sequence, number)
+
+ case sequence
+ when "fibonacci" then return fibonacci(number)
+ when "lucas" then return lucas(number)
+ when "summed" then return summed(number)
+ end
+
+end
+
+def fibonacci(number)
+
+ case number
+ when 1 then return 1
+ when 2 then return 1
+ else return fibonacci(number - 1) + fibonacci(number - 2)
+ end
+
+end
+
+def lucas(number)
+
+ case number
+ when 1 then return 2
+ when 2 then return 1
+ else return lucas(number - 1) + lucas(number - 2)
+ end
+
+end
+
+def summed(number)
+
+ fibonacci(number) + lucas(number)
+
+end

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

  • Не слагай ненужни нови редове в началото и края на методите.
  • Върнатата стойност на case е последният оценен израз в match-натата клауза и nil ако няма такава. От summed си личи, че знаеш какво връщат методите по принцип. Съответно можеше да пропуснеш абсолютно всички return-и в решението си.
  • В Ruby се смята за прилежно да подравняваш някои конструкции, ако ги използваш на съседни редове. Сред тях са = и then.

Любослава обнови решението на 12.10.2014 18:44 (преди около 10 години)

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

Любослава обнови решението на 12.10.2014 20:26 (преди около 10 години)

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

Любослава обнови решението на 12.10.2014 21:59 (преди около 10 години)

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