RosettaCodeData/Task/Fibonacci-n-step-number-sequences/Pluto/fibonacci-n-step-number-sequences.pluto
2026-04-30 12:34:36 -04:00

31 lines
961 B
Text

local fmt = require "fmt"
require "table2"
local function fib_n(initial, num_terms)
local n = #initial
if n < 2 or num_terms < 0 then error("Invalid argument(s).") end
if num_terms <= n then return initial:clone() end
local fibs = table.rep(num_terms, 0)
for i = 1, n do fibs[i] = initial[i] end
for i = n + 1, num_terms do
local sum = 0
for j = i - n, i do sum += fibs[j] end
fibs[i] = sum
end
return fibs
end
local names = {
"fibonacci", "tribonacci", "tetranacci", "pentanacci", "hexanacci",
"heptanacci", "octonacci", "nonanacci", "decanacci"
}
local initial = {1, 1, 2, 4, 8, 16, 32, 64, 128, 256}
print(" n name values")
local values = fib_n({2, 1}, 15)
fmt.write("%2d %-10s", 2, "lucas")
fmt.tprint("%4d", values, #values)
for i = 1, 9 do
values = fib_n(initial:slice(1, i + 1), 15)
fmt.write("%2d %-10s", i + 1, names[i])
fmt.tprint("%4d", values, #values)
end