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
Por MatheusGlad, 07 de jul. de 2011 em Mods, funções e outros
info
Grupo: Conde
Registrado: 07/05/08
Posts: 612
Reputação: +12
Char 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
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Não é não, usa por exemplo, print(NumeroDeAnagramas("ttt")), ele printa 1.
Até.
info
Grupo: Conde
Registrado: 07/05/08
Posts: 612
Reputação: +12
Char 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.
oq é isso?
e pra que serve?
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gê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
Editado Novembro 7 por lordbug99
info
Grupo: Conde
Registrado: 09/09/09
Posts: 528
Reputação: +424
Char 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 endExemplo de uso:
NumeroDeAnagramas("bola")Retorna o numero de maneiras diferentes de ordenar essas letras: 24