Ir para conteúdo

Função De Calculo Do Numero De Anagramas...


Posts Recomendados

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

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

  • 3 months later...

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...