On Sat, 2 Aug 2014, luigi scarso wrote:
On Sat, Aug 2, 2014 at 12:59 AM, John Kitzmiller <k...@inradius.net> wrote:
Here is Lua code that prints the first nine fibonacci numbers:
local function fib(n)
f={1,1}
for i=3,9 do
f[i]=f[i-1]+f[i-2]
end
return(f[n])
end
for n=1,9 do print(fib(n)) end
Here is Context+Lua that prints 3 x 3 table of the first nine natural
numbers:
\starttext
\setupTABLE[each][each][frame=off,align=left,width=4em,height=2em]
\startluacode
context.bTABLE()
for j = 0, 2 do
context.bTR()
for k = 1, 3 do
context.bTD()
context(3*j+k)
context.eTD()
end
context.eTR()
end
context.eTABLE()
\stopluacode
\stoptext
How can these be combined to print a 3 x 3 table of the first nine
fibonacci numbers?
I have tried a couple of ways to iterate over the lua table f in the most
indented line of context, looked at what pertinent threads I could find,
the Wiki entries, CLD, and tried Aditya's method from Stack Exchange; I am
missing something.
You have a *global* table f that collides with the internals of context
local function fib(n)
f={1,1}
for i=3,9 do
f[i]=f[i-1]+f[i-2]
end
return(f[n])
end
\starttext
\setupTABLE[each][each][frame=off,align=left,width=8em,height=2em]
\startluacode
local function fib(n)
local f={1,1}
for i=3,9 do
f[i]=f[i-1]+f[i-2]
end
return(f[n])
end
context.bTABLE()
for j = 0, 2 do
context.bTR()
for k = 1, 3 do
context.bTD()
context("fib(%s)=%s" ,3*j+k, fib(3*j+k) )
context.eTD()
end
context.eTR()
end
context.eTABLE()
\stopluacode
\stoptext
This version recomputes all fibnocci numbers from scrach each time. Here
is a memoized version:
\setupTABLE[each][each][frame=off,align=left,width=8em,height=2em]
\starttext
\startluacode
local fibs = {1, 1}
local function fib(n)
if fibs[n] == nil then
print(">>>>", "Computing fib:" .. n)
fibs[n] = fib(n-1) + fib(n-2)
end
return fibs[n]
end
context.bTABLE()
for j = 0, 2 do
context.bTR()
for k = 1, 3 do
context.bTD()
context("fib(%s)=%s" ,3*j+k, fib(3*j+k) )
context.eTD()
end
context.eTR()
end
context.eTABLE()
\stopluacode
\stoptext
Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________