Anagrama usando Perl

Publicado por Jonatan Gomes (última atualização em 01/10/2010)

[ Hits: 7.088 ]

Homepage: Em construção xD

Download anagramafull.pl




Bom, para quem não sabe o que é um anagrama ou para quem se esqueceu, vou tentar dar uma simples resumida. Anagrama é quando você quer saber as possibilidades de uma palavra ter diferentes resultados, exemplo:

Com a palavra "One" podemos fazer 6 combinações distintas. Como assim distintas? Simples, quando especificamos distintas quer dizer que não podemos repetir a mesma letra mais de uma vez, as combinações ficarão assim:

One
Oen
Neo
Noe
Eno
Eon

Caso não seja distinta o resultado será de 27 combinações (pois as letras poderão se repetir). Anagrama é muito usado em simbologia e em outras áreas, essa é a versão 1.0, na próxima que mandarei eu vou fazer com que apareça também as palavras (só que não tenho a mínima noção de como fazer isso =]). Bom, aí está o código, se puderem dar uma melhorada nele eu agradeço...

  



Esconder código-fonte

#!/usr/bin/perl
print "\n+---------------[R4ST4 4N4GR4M4]---------------+\n";
print "|-------------------------------1.0-----|\n";
print "|                                       |\n";
print "| Gerador de Anagramas Versao 1.0       |\n";
print "|                                       |\n";
print "|          Coded By R4\$T4               |\n";
print "+---------------------------------------+\n\n";
sleep 3;


print "\n\nPor favor Insira Uma Palavra\t";
chomp($palavra= <STDIN>);

print "\n\nVoce quer resultado com numeros destintos? (S/N)\t";
chomp ($destinto= <STDIN>);

@lista= split(//,$palavra);

if (($destinto =~ /[Ss]/) || ($destinto =~ /[Ss]ao/))
 {

$vezes= @lista."";
$vezes2= @lista."";
$vezes3= @lista."";

for ($i= 1; $i = $vezes; $vezes--)
 {
   push (@aff, $vezes);
}


for ($vezes2= @lista.""; $vezes2 < 29; $vezes2++)
 {
   $h=1;
   push (@aff,$h); #aqui preenchemos todos os espaços que sobrarem da matriz por 1    
}                         


$conta= $aff[0] * $aff[1] * $aff[2]* $aff[3] * $aff[4]* $aff[5]*$aff[6]*$aff[7]*$aff[8]*$aff[9]*$aff[10]*$aff[11]*$aff[12]*$aff[13]*$aff[14]*$aff[15]*$aff[16]*$aff[17]*$aff[18]*$aff[19]; #aqui é o número maximo de letras 

print "\n\n O total de resultados possiveis: $conta\n";
}

if (($destinto =~ /[Nn]/) || ($destinto =~ /[Nn]ao/)) 
 {
 $vezes3= @lista."";
 $conta2= $vezes3 ** $vezes3;
    print "\n\n O total de resultados possiveis: \t $conta2";
}   

Scripts recomendados

Aprendendo a fazer equações em Perl

Programa que separa os dígitos de um inteiro

Xshot

imprime numeros de forma crescente e decrescente [FOR]

Soma varios valores e mostra sua media


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts