Йончо обнови решението на 15.10.2014 00:16 (преди около 10 години)
+def fib(number)
+ return ((number==1 or number==2)?1: fib(number-1)+fib(number-2))
+end
+
+def lucas(number)
+ return (number==1 ? 2 : (number==2? 1 :
+ lucas(number-1)+lucas(number-2)))
+end
+
+def series(name, number)
+ return (name=='fibonacci'? fib(number): (name=='lucas'?
+ lucas(number) :fib(number)+lucas(number)))
+end
- Прочети style guide.
- Слагай спейсове между операторите.
- Не съкращавай имената на функциите само за да пестиш символи. Ограниченията са сложени с цел да ви накарат да откриете ясни и кратки решения в контекста на
Ruby
, не са с цел да откривате "хитри" начинини да се побирате в тях. - Тернарният оператор е препоръчителен само за кратки изрази и определено не е добра идея да го влагаш. По този начин кода става труден за разбиране.
- Провери
case
мисля, че ще ти спести много от тези влагания. Няма нищо лошо и в стандартнияif else
.
Точно заради стайл гайда, го промених, последният ми метод с if-ове беше 6 реда и не искаше да го пусне. Oк, оправено е, но следващият път в орграниченията не би било лошо да има място и за по-дълги решения.