Socket 0 #1 Posted June 3, 2010 (edited) Sequencias de Fibonacci Fibonacci: A sequencia de Fibonacci é uma sequencia em que o próximo número é a soma dos dois últimos. Esta sequência foi descrita primeiramente por Leonardo de Pisa, também conhecido como Fibonacci (Dc. 1200), para descrever o crescimento de uma população de coelhos. Na prática começa por 0 e 1. Sequencia: 1,1,2,3,5,8,13,21,34,55,89... function fibonacci(n) return function() t = (t or 1)+1 last, atual = last or 1, atual or 0 lastn, atualn = last, atual last, atual = atual, atualn + lastn if t <= n+1 then return t-1, lastn+atualn end end end for i,v in fibonacci(100) do print(i,v) end Tribonacci: A sequencia denominada Tribonacci é uma sequencia em que o próximo número é igual a soma dos três anteriores. Sequencia: 1,1,2,4,7,13,24,44,81... function tribonacci(n) return function() t = (t or 1)+1 n1,n2,n3 = n1 or 1, n2 or 0, n3 or 0 n1n,n2n,n3n = n1, n2, n3 n1,n2,n3 = n2n, n3n, n1n+n2n+n3n if t <= n+1 then return t-1, n1n+n2n+n3n end end end for i, v in tribonacci(100) do print(i,v) end Tetranacci: A sequencia de Tetranacci é uma sequencia em que o próximo número é igual a soma dos 4 números anteriores. Sequencia: 1,1,2,4,8,15,29,56,108,208 function tetranacci(n) return function() t = (t or 1)+1 n1,n2,n3,n4 = n1 or 1, n2 or 0, n3 or 0, n4 or 0 n1n,n2n,n3n,n4n = n1, n2, n3, n4 n1,n2,n3,n4 = n2n, n3n, n4n, n1n+n2n+n3n+n4n if t <= n+1 then return t-1, n1n+n2n+n3n+n4n end end end for i, v in tetranacci(100) do print(i,v) end Repfigits: Um repfigit ou número de Keith é um número inteiro, superior a 9, tal que os seus dígitos, ao começar uma sequência de Fibonacci, alcançam posteriormente o referido número. Um exemplo é 47, porque a sequência de Fibonacci que começa com 4 e 7 (4, 7, 11, 18, 29, 47) alcança o 47. Outro exemplo é 197: 1+9+7= 17, 9+7+17= 33, 7+17+33= 57, 17+33+57= 107, 33+57+107= 197. Alguns Números de Keith conhecidos: 14, 19, 28, 47, 61, 75, 197, 742, 1104, 1537, 2208, 2580, 3684, 4788, 7385, 7647, 7909, 31331, 34285… [spoiler=Deprecated.] function fibonacci(n,last,atual) return function() t = (t or 1)+1 last, atual = last or 1, atual or 0 lastn, atualn = last, atual last, atual = atual, atualn + lastn if t <= n+1 then return t-1, lastn+atualn end end end function tribonacci(n,n1,n2,n3) return function() t = (t or 1)+1 n1,n2,n3 = n1 or 1, n2 or 0, n3 or 0 n1n,n2n,n3n = n1, n2, n3 n1,n2,n3 = n2n, n3n, n1n+n2n+n3n if t <= n+1 then return t-1, n1n+n2n+n3n end end end function tetranacci(n,n1,n2,n3,n4) return function() t = (t or 1)+1 n1,n2,n3,n4 = n1 or 1, n2 or 0, n3 or 0, n4 or 0 n1n,n2n,n3n,n4n = n1, n2, n3, n4 n1,n2,n3,n4 = n2n, n3n, n4n, n1n+n2n+n3n+n4n if t <= n+1 then return t-1, n1n+n2n+n3n+n4n end end end function repfigit(n,n1,n2,n3,n4) if n1 and n2 and n3 and n4 then return tetranacci(n,n1,n2,n3,n4) end if n1 and n2 and n3 then return tribonacci(n,n1,n2,n3) end if n1 and n2 then return fibonacci(n,n1,n2) end return nil end for i,v in repfigit(10,6,1) do print(i,v) end Só funcionava quando o número de Keith era de no máximo 4 algarismos. Extremamente grande. function addTableC(t, n) y = 0 for i = #t-(n-1), #t do y = y + t[i] end return y end function getArg(t) narg = {} for i, v in ipairs(t) do table.insert(narg,v) end return narg end function returnInTable(t,n) tn = {} for i = 1, n do table.insert(tn,t[i]) end return tn end function repfigit(na,...) return function() t = (t or 1)+1 n = n or getArg(arg) if t <= na+1 then u = returnInTable(n, #n-1) table.insert(n,addTableC(n,#arg)) return t-1, addTableC(u,#arg-(#arg-1)) end end end for i,v in repfigit(100,3,1,3,3,1) do print(i,v) end Repare que no "15º print" retorna 31331. Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
pejuge2 1 #2 Posted June 4, 2010 Muito interessante socketoso hehehe. Já fiz muita função matemática, é divertido hehehehe. Gosto muito de trabalhar com matrizes, é incrível como a base de tudo são matrizes de cordenadas x,y ou então no caso do 3D sequência de matrizes x, y. Muito bom, PeJuGe. Share this post Link to post Share on other sites
Mock 32 #3 Posted June 4, 2010 amagad tribonacci, e essas outras ai eu nao conhecia Share this post Link to post Share on other sites