Елена обнови решението на 10.10.2012 23:15 (преди около 13 години)
+class Integer
+	def prime?
+		(2...self).each do |i|
+			return false if self % i == 0
+		end
+		true
+	end
+	def prime_divisors
+		numbers = []
+		num =  self.abs
+		(2..num).each do |i|
+			if i.prime? and self % i == 0
+				numbers << i
+			end
+		end
+		numbers
+	end
+end
+class Range
+	def fizzbuzz
+		res = []
+		self.each do |i|
+			el = choose i
+			res << el
+		end
+		res
+	end
+	def choose(i)
+		if i % 3 == 0 && i % 5 == 0
+			:fizzbuzz
+		elsif i % 3 == 0
+			 :fizz
+		elsif i % 5 == 0
+			:buzz
+		else
+			i
+		end
+	end
+end
+class Hash
+	def group_values
+		hash = Hash.new{|hash, key| hash[key] = []}
+		self.each do |key,value|
+			hash[value] <<= key
+		end
+		hash
+	end
+end
+class Array
+	def count(n)
+		cnt = 0
+		self.each do |i|
+			if i == n
+				cnt += 1
+			end
+		end
+		cnt
+	end
+	def densities
+		counts = []
+		i = 0
+		self.each do |item|
+			counts[i] = self.count(item)
+			i += 1
+		end
+		counts
+	end
+end
Ето малко коментари:
- Индентираш с табулации. Това е грубо нарушение на всичко мило и свято. В Ruby се индентира с два интервала. Консултирай се със style guide-а.
 - Monkey patch-а на 
Array#countе грубо проявление, понеже има метод с такова име. Има и метод, който прави това, което ти трябва. - Но повечето места, на които правиш 
.each, можеш да ползвашmap,selectили нещо подобно и ще стане по-добре. - 
self.е излишно навсякъде, където го ползваш. 
И допълнително, res е лошо име на променлива. Ако имаш предвид резултата, кръсти го result. Нищо няма да му стане, ако е с три символа по-дълго.
