Радослав обнови решението на 14.10.2013 17:19 (преди около 11 години)
+
+class Integer
+
+ def prime?
+ if self < 2
+ false
+ else
+ 2.upto(Math.sqrt(self).to_i).all? {|d| self.remainder(d).nonzero?}
+ end
+ end
+
+ def prime_factors
+ x, d, a = self.abs, 2, []
+ x.remainder(d).zero? ? (a << d and x /= d) : d += 1 while d <= x
+ return a
+ end
+
+ def harmonic
+ 1.upto(self).inject(Rational(0)) {|sum, x| sum + Rational(1, x)}
+ end
+
+ def digits
+ self.to_s.each_char.collect {|c| c.to_i}
+ end
+
+end
+
+class Array
+
+ def frequencies
+ g = self.group_by {|e| e}
+ g.merge!(g) {|k, v| v.length}
+ end
+
+ def average
+ self.reduce(:+).to_f / self.length
+ end
+
+ def drop_every(n)
+ a = Array.new
+ self.each_with_index {|x, i| a << x if (i + 1) % n != 0}
+ return a
+ end
+
+ def combine_with(other)
+ self.zip(other).flat_map {|e| e}.compact
+ end
+
+end
Извинявам се, но не съм тествал решението ми със skeptic и rspec. Работя на windows 7 и имах проблеми с инсталирането им. До срядата ще ги пробвам пак като ми остане време.