Skip to content

Instantly share code, notes, and snippets.

@yonbergman
Created July 29, 2013 19:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yonbergman/6106848 to your computer and use it in GitHub Desktop.
Save yonbergman/6106848 to your computer and use it in GitHub Desktop.
Prime Numbers Kata • Ruby Undergroud
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