Камелия обнови решението на 14.10.2012 12:37 (преди около 13 години)
- Изпускай
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
