Created
July 29, 2013 19:07
-
-
Save yonbergman/6106848 to your computer and use it in GitHub Desktop.
Prime Numbers Kata • Ruby Undergroud
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Primer | |
attr_accessor :num | |
def initialize(num) | |
@num = num | |
end | |
def run | |
arr = [] | |
return arr if num <= 1 | |
n = 2 | |
while true | |
if divided_by? n | |
arr << n | |
arr += Primer.new(num / n).run | |
return arr | |
else | |
n += 1 | |
end | |
end | |
arr | |
end | |
private | |
def divided_by?(divider) | |
num % divider == 0 | |
end | |
def leftover(divider) | |
num / divider | |
end | |
end | |
describe Primer do | |
it 'returns empty array for 0' do | |
expect(Primer.new(0).run).to eq [] | |
end | |
it 'returns empty array for 1' do | |
expect(Primer.new(1).run).to eq [] | |
end | |
context 'prime numbers' do | |
[2, 3, 5, 7, 11, 13, 17].each do |n| | |
it "returns a single element array with itself #{n}" do | |
expect(Primer.new(n).run).to eq [n] | |
end | |
end | |
end | |
[ | |
[4, [2, 2]], | |
[6, [2, 3]] | |
].each do |input, output| | |
it "returns #{output} for #{input}" do | |
expect(Primer.new(input).run).to eq output | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment