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