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

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo

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

Yours Mkalo :)

satan666

Antichrist Superstar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 07/05/08Posts: 612Char no Tibia: leviana luciferiana

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

creationb.jpg

"Um Deus que usasse seu poder para criar seres humanos que de antemão sabia que seriam atormentados eternamente, e que os predestinasse a isso,



não poderia ser sábio, nem justo e tampouco amoroso.

Além de nos submeter a isso vim a nos julgar e condenar por nossos atos aos tormentos do inferno.

pra minha pessoa isso não é um Deus Pai amoroso e bondoso como o chaman, seu padrão seria muito mais inferior do que o de muitos homens."

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Não é não, usa por exemplo, print(NumeroDeAnagramas("ttt")), ele printa 1.

 

Até.

Oie :D

satan666

Antichrist Superstar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 07/05/08Posts: 612Char no Tibia: leviana luciferiana

O que eu descreví foi o caúculo matématico para simplificar o script.

 

não mencionei que isso iria resolver todos os problemas.

creationb.jpg

"Um Deus que usasse seu poder para criar seres humanos que de antemão sabia que seriam atormentados eternamente, e que os predestinasse a isso,



não poderia ser sábio, nem justo e tampouco amoroso.

Além de nos submeter a isso vim a nos julgar e condenar por nossos atos aos tormentos do inferno.

pra minha pessoa isso não é um Deus Pai amoroso e bondoso como o chaman, seu padrão seria muito mais inferior do que o de muitos homens."

Vinc

The white fox
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/10/11Posts: 625Gênero: Masculino

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

^w^