Александър обнови решението на 14.10.2014 11:58 (преди около 10 години)
Хубаво решение, ако го дооправиш малко, ще стане супер !
Ето ти и насоки :
-
Форматиране на кода ! Оставяй празни места около оператори (
=
,-
, ...). Виж как се индентира правилноcase
. Освен това можеш да подравнишthen
-овете да са един под друг за естетика. Ей така:when 'beautiful' then ... when 'ugly' then ...
- Функциите
fibonacci
иlucas
ти изглеждат почти еднакво. Опитай се да измъкнеш общата логика в отделна функция. На нея можеш да подаваш началните стойности. Имената на променливите
fibonacci
,lucas
не са ок. Може биsequence
е по-подходящо. Ако ти станат много дълги редовете и скептикът се оплаква, може да подаваш блоковете наeach_with_object
чрезdo
,end
.l
,string
не са хубави имена. Много са общи, не ти казват нищо за същността на обекта, който стои зад това име. Помисли за други имена.Променливата
n
, която създаваш в блоковете наeach_with_object
, никъде не се ползва в самия блок. Тогава можеш да я именуваш като_
. Това е добра практика.За Лукас използваш първите две числа
[2,1]
, но за Фибоначи ползваш нулевото и първото -[0,1]
. Бъди консистентен в избора си. В случая е по-добре и на двете места да подаваш първия и втория член, по-ясно е така.n.times...
прави малко повече изчисления отколкото трябва. За първия член (n = 1) ще се изпълни1.times...
, което ще ти пресметне третия член, а реално нямаш нужда от него. Помисли как можеш да го оправиш.
Благодаря, ще почвам сега да ги оправям. За повтарящите се функции се усетих почти веднага.