MAC 122 Princípios de Desenvolvimento de Algoritmos



Solução do EP1 em Perl. Programa anag2


Concatenado os anagramas em um string, em vez de montando um array, fica mais eficiente em tempo e em espaço.


#!/usr/local/bin/perl -n

# A opcão -n cria um while(<>) implícito neste comando,
# que cria um hash de listas de anagramas

$anag {join "", sort split //} .= $_;
   
# No fim, é só encontrar o maior tijolo e imprimir.
# Talvez o programa ficasse mais rápido se
# eu mantivesse os tamanhos de tijolos e o máximo,
# durante a leitura.
# Fica como exercício. Note que é trivial substituir
# o critério de escolha do tijolo a ser impresso.

END {
  for $nom (keys %anag) {
    ($max, $chavemax) = ($m, $nom)
      if $max < 
        ($m = length($anag{$nom}) - ($anag{$nom} =~ tr/\n//));
  }
  print "Bloco de $max letras:\n";
  print $anag{$chavemax};
}


MAC 122 Princípios de Desenvolvimento de Algoritmos


e-mail: Imre Simon <is@ime.usp.br>
Last modified: Tue Nov 9 11:54:24 EDT 1999