MatheusGlad 424 Postado Julho 7, 2011 Share Postado Julho 7, 2011 Um anagrama (do grego ana = "voltar" ou "repetir" + graphein = "escrever") é uma espécie de jogo de palavras, resultando do rearranjo das letras de uma palavra ou frase para produzir outras palavras, utilizando todas as letras originais exatamente uma vez. Um exemplo conhecido é o nome da personagem Iracema, claro anagrama de América, no romance de José de Alencar. Explicaçao Rapida: Quantas combinaçoes diferentes voce pode fazer com uma palavra. function NumeroDeAnagramas(palavra) palavra = palavra:lower() local letras = {} local r = {} local div = 1 local result = 1 for i = 1, #palavra do letras[palavra: sub(i, i)] = letras[palavra: sub(i, i)] and letras[palavra: sub(i, i)]+1 or 1 end for i,x in pairs(letras) do if x >= 2 then table.insert(r, x) end end if #r > 0 then for i,x in pairs(r ) do for s = 1, x do div = div*s end end end for i = 1, #palavra do result = result*i end return result/div end Exemplo de uso: NumeroDeAnagramas("bola") Retorna o numero de maneiras diferentes de ordenar essas letras: 24 Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Julho 12, 2011 Share Postado Julho 12, 2011 Essa sua função nada mais é que um fatorial positivo da matematica. n = n1*n2*n3*... NumeroDeAnagramas("bola") bola consiste de 4 letras então: Retorna o numero de maneiras diferentes de ordenar essas letras: n = 1*2*3*4 = 24 Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 12, 2011 Share Postado Julho 12, 2011 Não é não, usa por exemplo, print(NumeroDeAnagramas("ttt")), ele printa 1. Até. Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Julho 13, 2011 Share Postado Julho 13, 2011 O que eu descreví foi o caúculo matématico para simplificar o script. não mencionei que isso iria resolver todos os problemas. Link para o comentário Compartilhar em outros sites More sharing options...
tchuca02 5 Postado Julho 16, 2011 Share Postado Julho 16, 2011 oq é isso? e pra que serve? Link para o comentário Compartilhar em outros sites More sharing options...
Vinc 101 Postado Novembro 5, 2011 Share Postado Novembro 5, 2011 (editado) pros cara entende vo explica o calculo certo aki primeiro explica o que é fatorial(sendo n um numero natural) n! siginifica n*n-1*n-2... até chega a n-x = 1 exenplo: 4!=4*(4-1)*(4-2)*(4-3)= 4*3*2*1 = 24 tbm pode se falar isso quando dividimos um fatorial 4!/3! = 4*3!/3! ---(por que 4*!3 é igual a 4!) para poder anular eles obs:se n não for numero natural n é posivel solucionar agora para anagrama a formula n!/p1!p2!...!pn onde n é o numero de letras e p é o numero de veses que uma letra repete na palavra(sendo p1 a preira letra e p2 a segunda e asim por diante) esse calculo é feito assim porque se trocarmos uma letra igual de lugar comtiua igual exemplo1: anagramas de bola n = 4 p1 = b = 1 p2 = o = 1 p3 = l = 1 p4 = a = 1 calculo 4!/1!1!1!1!=4*3*2*1=24 (obs:ja discosiderei direto o divisdo por "1!1!1!1!" por que isso é igual a 1 e qualquer numero dividido por 1 é ele mesmo) exemplo2: anagramas de para n = 4 p1 = p = 1 p2 = a = 2 ---tem duas letras a na palavra entao someas p3 = r = 1 calculo 4!/1!2!1! = 4*3*2!/2! = 4*3 = 12 os numros tachados siginifica que um anula o outro(porque 2!/2! é igual a 1) explo3: anagramas de ttt n = 3 p1 = t = 3 --a letra t repete 3 veses na palavra calculo 3!/3! = 1 (qualquer numero dividido por ele mesmo é um com exeção do 0(zero)) apesar de ser logo isso explica tudo Editado Novembro 7, 2011 por lordbug99 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados