LeetCode/study-plan/dynamic-programming/day-01/tribonacci.rb

44 lines
766 B
Ruby
Raw Normal View History

# @param {Integer} n
# @return {Integer}
def tribonacci(n)
sequence = [0, 1, 1]
if n < 3 then
return sequence[n]
end
(3..n).each {
sequence = sequence.drop(1) + [sequence.sum]
}
return sequence.last
end
RSpec.describe "tribonacci of " do
it "0 is 0" do
expect(tribonacci(0)).to eq(0)
end
it "1 is 1" do
expect(tribonacci(1)).to eq(1)
end
it "2 is 1" do
expect(tribonacci(2)).to eq(1)
end
it "3 is 2" do
expect(tribonacci(3)).to eq(2)
end
it "4 is 4" do
expect(tribonacci(4)).to eq(4)
end
it "5 is 7" do
expect(tribonacci(5)).to eq(7)
end
it "25 is 1389537" do
expect(tribonacci(25)).to eq(1389537)
end
end