Решение на Първа задача от Илиян Бобев

Обратно към всички решения

Към профила на Илиян Бобев

Резултати

  • 5 точки от тестове
  • 0 бонус точки
  • 5 точки общо
  • 12 успешни тест(а)
  • 2 неуспешни тест(а)

Код

class Integer
def prime?
(2..self-1).all? { |e| ((self/e) * e) != self }
end
def prime_factors
number, result, divisor = self.abs, [], 1
while number>1 and divisor+=1
result << divisor and number /= divisor while number % divisor == 0
divisor = number-1 if divisor > Math.sqrt(number)
end
result
end
def harmonic
1.upto(self).inject { |sum, n| sum + Rational(1, n) }
end
def digits
self.abs.to_s.split('').map { |s| s.to_i }
end
end
class Array
def frequencies
result = {}
self.map { |e| result[e] = self.count(e) }
result
end
def average
self.reduce(:+)/self.size.to_f
end
def drop_every(n)
result = []
self.each_index { |i| result << self[i] if (i+1) % n != 0 }
result
end
def combine_with(other)
self.zip(other).flatten.select { |e| e != nil }
end
end

Лог от изпълнението

F...........F.

Failures:

  1) Integer#prime? checks if a number is prime
     Failure/Error: -13.prime?.should eq false
       
       expected: false
            got: true
       
       (compared using ==)
     # /tmp/d20131023-4395-1lo2tv2/spec.rb:3:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  2) Array#combine_with combines two arrays by alternatingly taking elements
     Failure/Error: [].combine_with([1, 2, 3]).should                   eq [1, 2, 3]
       
       expected: [1, 2, 3]
            got: []
       
       (compared using ==)
     # /tmp/d20131023-4395-1lo2tv2/spec.rb:105:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.01829 seconds
14 examples, 2 failures

Failed examples:

rspec /tmp/d20131023-4395-1lo2tv2/spec.rb:2 # Integer#prime? checks if a number is prime
rspec /tmp/d20131023-4395-1lo2tv2/spec.rb:103 # Array#combine_with combines two arrays by alternatingly taking elements

История (1 версия и 0 коментара)

Илиян обнови решението на 16.10.2013 16:53 (преди над 10 години)

+class Integer
+ def prime?
+ (2..self-1).all? { |e| ((self/e) * e) != self }
+ end
+ def prime_factors
+ number, result, divisor = self.abs, [], 1
+ while number>1 and divisor+=1
+ result << divisor and number /= divisor while number % divisor == 0
+ divisor = number-1 if divisor > Math.sqrt(number)
+ end
+ result
+ end
+ def harmonic
+ 1.upto(self).inject { |sum, n| sum + Rational(1, n) }
+ end
+ def digits
+ self.abs.to_s.split('').map { |s| s.to_i }
+ end
+end
+class Array
+ def frequencies
+ result = {}
+ self.map { |e| result[e] = self.count(e) }
+ result
+ end
+ def average
+ self.reduce(:+)/self.size.to_f
+ end
+ def drop_every(n)
+ result = []
+ self.each_index { |i| result << self[i] if (i+1) % n != 0 }
+ result
+ end
+ def combine_with(other)
+ self.zip(other).flatten.select { |e| e != nil }
+ end
+end