Камелия обнови решението на 14.10.2012 12:37 (преди около 12 години)
- Изпускай
self.
, в твоя случай никъде не е нужно и обикновено се изпуска в тези ситуации - Методът
prime?
е написан на C, но с Ruby синтаксис. Трябва да бягаш от този начин на мислене... :) Освен това, обърни внимание как смяташ корен отself
след всяка итерация (тъй като след всяка итерация се оценява условието наwhile
).d
не е много добро име на променлива. За упражнението, пробвай да го напишеш сany?
,all?
,Range
или нещо от сорта. - Ред 12: има метод
abs
... Това важи за повечето неща в Ruby, има методи за много работи. - Методът ти
fizzbuzz
е подобен наprime?
; виж дали можеш да го пренапишеш сmap
. - Това е redundant:
(result[i] % 5) == 0 ? true : false
; самият израз (забележи, че няма нужда и от скоби и се изпускат в случая) си връща булева стойностtrue
илиfalse
:result[i] % 5 == 0
. Същото важи и за другия на ред 25. Още повече, тези неща обикновено се слагат вif
-а, не се изважтат в променливи. Условието не е толкова сложно, че да го изисква.
Информативно, прочети това: http://37signals.com/svn/posts/3250-clarity-over-brevity-in-variable-and-method-names
И последно, за group_values
има една типична конструкция, нещо от типа на:
group_values[value] ||= []
group_values[value] << key