Решение на Трета задача от Михаела Чуренска

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

Към профила на Михаела Чуренска

Резултати

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

Код

class FibonacciSequence
include Enumerable
def initialize(numbers,first: 1,second: 1)
@numbers = numbers
@first = first
@second = second
end
def each
current, previous = @first, @second
for index in 0..@numbers
yield current
current, previous = current + previous, current
end
end
end
class PrimeSequence
include Enumerable
def initialize(number)
@number = number
end
def is_prime_number?(number_to_check)
return false if number_to_check == 1
return true if number_to_check == 2
(2..Math.sqrt(number_to_check)).all? { |x| number_to_check % x != 0 }
end
def each
current,counter = 1,1
while (counter <= @number)
current +=1
if is_prime_number?(current)
yield current
counter +=1
end
end
end
end
module DrunkenMathematician
module_function
def aimless(n)
result = 0
prime_numbers = PrimeSequence.new(n)
prime = Array.new
prime += prime_numbers.to_a
if (n % 2) > 0
prime.push(1)
n+=1
end
for i in (0...n).step(2)
result += Rational(prime.at(i), prime.at(i+1))
end
return result
end
end

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

FFFFFFFF...FFF...FFF

Failures:

  1) Fifth task RationalSequence can calculate the first four rational numbers
     Failure/Error: expect(RationalSequence.new(4).to_a).to eq %w(1/1 2/1 1/2 1/3).map(&:to_r)
     NameError:
       uninitialized constant RationalSequence
     # /tmp/d20151111-27349-1h04zmd/spec.rb:4:in `block (3 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) Fifth task RationalSequence returns an empty array when count is 0
     Failure/Error: expect(RationalSequence.new(0).to_a).to eq []
     NameError:
       uninitialized constant RationalSequence
     # /tmp/d20151111-27349-1h04zmd/spec.rb:8:in `block (3 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)>'

  3) Fifth task RationalSequence can calculate the first 28 rational numbers
     Failure/Error: expect(RationalSequence.new(28).to_a).to eq %w(
     NameError:
       uninitialized constant RationalSequence
     # /tmp/d20151111-27349-1h04zmd/spec.rb:12:in `block (3 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)>'

  4) Fifth task RationalSequence is properly enumerable
     Failure/Error: ones = RationalSequence.new(28).select { |r| r.numerator == 1 }
     NameError:
       uninitialized constant RationalSequence
     # /tmp/d20151111-27349-1h04zmd/spec.rb:19:in `block (3 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)>'

  5) Fifth task FibonacciSequence can return the first two Fibonacci numbers
     Failure/Error: expect(FibonacciSequence.new(2).to_a).to eq [1, 1]
       
       expected: [1, 1]
            got: [1, 2, 3]
       
       (compared using ==)
     # /tmp/d20151111-27349-1h04zmd/spec.rb:26:in `block (3 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)>'

  6) Fifth task FibonacciSequence can return the first 20 Fibonacci numbers
     Failure/Error: expect(FibonacciSequence.new(20).to_a).to eq [
       
       expected: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
            got: [1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711]
       
       (compared using ==)
     # /tmp/d20151111-27349-1h04zmd/spec.rb:30:in `block (3 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)>'

  7) Fifth task FibonacciSequence can be used to calculate the Lucas numbers
     Failure/Error: expect(FibonacciSequence.new(31, first: 2, second: 1).to_a).to eq [
       
       expected: [2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364, 2207, 3571, 5778, 9349, 15127, 24476, 39603, 64079, 103682, 167761, 271443, 439204, 710647, 1149851, 1860498]
            got: [2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887]
       
       (compared using ==)
     # /tmp/d20151111-27349-1h04zmd/spec.rb:37:in `block (3 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)>'

  8) Fifth task FibonacciSequence is properly enumerable
     Failure/Error: expect(FibonacciSequence.new(20).select { |x| x.even? }).to eq [
       
       expected: [2, 8, 34, 144, 610, 2584]
            got: [2, 8, 34, 144, 610, 2584, 10946]
       
       (compared using ==)
     # /tmp/d20151111-27349-1h04zmd/spec.rb:45:in `block (3 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)>'

  9) Fifth task DrunkenMathematician #meaningless can calculate for 0 and 1
     Failure/Error: expect(DrunkenMathematician.meaningless(0)).to eq 1
     NoMethodError:
       undefined method `meaningless' for DrunkenMathematician:Module
     # /tmp/d20151111-27349-1h04zmd/spec.rb:73:in `block (4 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)>'

  10) Fifth task DrunkenMathematician #meaningless can calculate for 3
     Failure/Error: expect(DrunkenMathematician.meaningless(4)).to eq Rational(1, 3)
     NoMethodError:
       undefined method `meaningless' for DrunkenMathematician:Module
     # /tmp/d20151111-27349-1h04zmd/spec.rb:78:in `block (4 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)>'

  11) Fifth task DrunkenMathematician #meaningless can calculate for 42
     Failure/Error: expect(DrunkenMathematician.meaningless(42)).to eq Rational(1, 11)
     NoMethodError:
       undefined method `meaningless' for DrunkenMathematician:Module
     # /tmp/d20151111-27349-1h04zmd/spec.rb:82:in `block (4 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)>'

  12) Fifth task DrunkenMathematician #worthless can calculate for 2
     Failure/Error: expect(DrunkenMathematician.worthless(2)).to eq %w(1/1).map(&:to_r)
     NoMethodError:
       undefined method `worthless' for DrunkenMathematician:Module
     # /tmp/d20151111-27349-1h04zmd/spec.rb:103:in `block (4 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)>'

  13) Fifth task DrunkenMathematician #worthless can calculate for 8
     Failure/Error: expect(DrunkenMathematician.worthless(8)).to eq expected
     NoMethodError:
       undefined method `worthless' for DrunkenMathematician:Module
     # /tmp/d20151111-27349-1h04zmd/spec.rb:108:in `block (4 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)>'

  14) Fifth task DrunkenMathematician #worthless can calculate for 15
     Failure/Error: expect(DrunkenMathematician.worthless(15)).to eq %w(
     NoMethodError:
       undefined method `worthless' for DrunkenMathematician:Module
     # /tmp/d20151111-27349-1h04zmd/spec.rb:112:in `block (4 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.01531 seconds
20 examples, 14 failures

Failed examples:

rspec /tmp/d20151111-27349-1h04zmd/spec.rb:3 # Fifth task RationalSequence can calculate the first four rational numbers
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:7 # Fifth task RationalSequence returns an empty array when count is 0
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:11 # Fifth task RationalSequence can calculate the first 28 rational numbers
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:18 # Fifth task RationalSequence is properly enumerable
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:25 # Fifth task FibonacciSequence can return the first two Fibonacci numbers
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:29 # Fifth task FibonacciSequence can return the first 20 Fibonacci numbers
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:36 # Fifth task FibonacciSequence can be used to calculate the Lucas numbers
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:44 # Fifth task FibonacciSequence is properly enumerable
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:72 # Fifth task DrunkenMathematician #meaningless can calculate for 0 and 1
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:77 # Fifth task DrunkenMathematician #meaningless can calculate for 3
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:81 # Fifth task DrunkenMathematician #meaningless can calculate for 42
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:102 # Fifth task DrunkenMathematician #worthless can calculate for 2
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:106 # Fifth task DrunkenMathematician #worthless can calculate for 8
rspec /tmp/d20151111-27349-1h04zmd/spec.rb:111 # Fifth task DrunkenMathematician #worthless can calculate for 15

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

Михаела обнови решението на 26.10.2015 02:19 (преди над 8 години)

+
+class FibonacciSequence
+ include Enumerable
+
+ def initialize(numbers,first: 1,second: 1)
+ @numbers = numbers
+ @first = first
+ @second = second
+ end
+
+ def each
+ current, previous = @first, @second
+ for index in 0..@numbers
+ yield current
+ current, previous = current + previous, current
+ end
+ end
+
+end
+
+class PrimeSequence
+ include Enumerable
+
+ def initialize(number)
+ @number = number
+ end
+
+ def is_prime_number?(number_to_check)
+ return false if number_to_check == 1
+ return true if number_to_check == 2
+ (2..Math.sqrt(number_to_check)).all? { |x| number_to_check % x != 0 }
+ end
+
+ def each
+ current,counter = 1,1
+ while (counter <= @number)
+ current +=1
+ if is_prime_number?(current)
+ yield current
+ counter +=1
+ end
+ end
+ end
+
+end
+
+module DrunkenMathematician
+ module_function
+
+ def aimless(n)
+ result = 0
+ prime_numbers = PrimeSequence.new(n)
+ prime = Array.new
+ prime += prime_numbers.to_a
+
+ if (n % 2) > 0
+ prime.push(1)
+ n+=1
+ end
+
+ for i in (0...n).step(2)
+ result += Rational(prime.at(i), prime.at(i+1))
+ end
+ return result
+ end
+
+end