Светлана обнови решението на 13.10.2012 23:01 (преди около 12 години)
+class Integer
+ def prime?
+ (2..self.abs-1).each { |x|
+ if self % x == 0
+ return false
+ end
+ }
+
+ true
+ end
+ def prime_divisors
+ divisors = []
+ (2..self.abs).each { |x| if x.prime? and self%x == 0
+ divisors<<x
+ end }
+ divisors
+ end
+end
+
+class Range
+ def fizzbuzz
+ fuzzbuzz = []
+ self.each do |x| if x % 15 == 0 then fuzzbuzz<<:fizzbuzz
+ elsif x % 5 == 0 then fuzzbuzz<<:buzz
+ elsif x % 3 == 0 then fuzzbuzz<<:fizz
+ else fuzzbuzz<<x
+ end
+ end
+ fuzzbuzz
+ end
+end
+
+class Hash
+ def group_values
+ group_values = {}
+ self.each do |key, value| if group_values.has_key?(value)
+ (group_values[value])<<key
+ else group_values[value] = [key]
+ end
+ end
+ group_values
+ end
+end
+
+class Array
+ def densities
+ densities = []
+ self.each { |x| densities<<self.count(x) }
+ densities
+ end
+end
- Много, много спешно е да си идентираш и подредиш правилно кода. Следвай указанията в https://github.com/fmi/ruby-style-guide
- Изпускай
self.
, в твоя случай никъде не е нужно и обикновено се изпуска в тези ситуации - За
#densities
добре си се сетила заEnumerable#count
; сега виж дали можеш да го комбинираш някак сmap
За group_values
има една типична конструкция, нещо от типа на:
group_values[value] ||= []
group_values[value] << key
След като подредиш кода, ще стане значително по-добре :)