require "test/unit"
require "pascals_triangle"
class TestPascalsTriangle < Test::Unit::TestCase
def setup
@output = <<END_OUTPUT
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
END_OUTPUT
@rows = @output.each_line.map { |line| line.scan(/\d+/).map { |n| n.to_i } }
@tri = PascalsTriangle.new
end
def test_next_row
@rows.each do |row|
assert_equal(row, @tri.next_row)
end
end
end
pascals_triangle.rb
class PascalsTriangle
def initialize
@last_row = nil
end
def next_row
@last_row =
if @last_row.nil?
[1]
elsif @last_row == [1]
[1, 1]
else
[1] + @last_row.enum_for(:each_cons, 2).map do |l, r|
l + r
end + [1]
end
end
end
No comments:
Post a Comment