Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
72
Task/Padovan-sequence/Lua/padovan-sequence.lua
Normal file
72
Task/Padovan-sequence/Lua/padovan-sequence.lua
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
-- Define the constants
|
||||
local p = 1.32471795724474602596
|
||||
local s = 1.0453567932525329623
|
||||
|
||||
|
||||
-- Generator for the Padovan sequence using coroutines
|
||||
function pad_recur_gen(n)
|
||||
local co = coroutine.create(function ()
|
||||
local p = {1, 1, 1, 2}
|
||||
for i = 1, n do
|
||||
local next_val = p[2] + p[3]
|
||||
coroutine.yield(p[1])
|
||||
table.remove(p, 1)
|
||||
table.insert(p, next_val)
|
||||
end
|
||||
end)
|
||||
return function () -- iterator
|
||||
local status, value = coroutine.resume(co)
|
||||
return value
|
||||
end
|
||||
end
|
||||
|
||||
-- Padovan floor function
|
||||
function pad_floor(index)
|
||||
if index < 3 then
|
||||
return math.floor(1/2 + p)
|
||||
else
|
||||
return math.floor(1/2 + p^(index - 2) / s)
|
||||
end
|
||||
end
|
||||
|
||||
local l, m, n = 10, 20, 32
|
||||
|
||||
local pr = {}
|
||||
local pad_recur = pad_recur_gen(n)
|
||||
for i = 1, n do
|
||||
pr[i] = pad_recur()
|
||||
end
|
||||
for i = 1, m do
|
||||
io.write(pr[i] .. ' ')
|
||||
end
|
||||
io.write('\n')
|
||||
|
||||
local pf = {}
|
||||
for i = 1, n do
|
||||
pf[i] = pad_floor(i)
|
||||
end
|
||||
for i = 1, m do
|
||||
io.write(pf[i] .. ' ')
|
||||
end
|
||||
io.write('\n')
|
||||
|
||||
local L = {'A'}
|
||||
local rules = { A = 'B', B = 'C', C = 'AB' }
|
||||
for i = 1, n do
|
||||
local next_str = ''
|
||||
for char in L[#L]:gmatch('.') do
|
||||
next_str = next_str .. rules[char]
|
||||
end
|
||||
table.insert(L, next_str)
|
||||
end
|
||||
for i = 1, l do
|
||||
io.write(L[i] .. ' ')
|
||||
end
|
||||
io.write('\n')
|
||||
|
||||
for i = 1, n do
|
||||
assert(pr[i] == pf[i] and pr[i] == #L[i],
|
||||
"Uh oh, n=" .. i .. ": " .. pr[i] .. " vs " .. pf[i] .. " vs " .. #L[i])
|
||||
end
|
||||
|
||||
print('100% agreement among all 3 methods.')
|
||||
Loading…
Add table
Add a link
Reference in a new issue