MAC 122 Princípios de Desenvolvimento de Algoritmos



Solução do EP1 em Perl. Programa anag1


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

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

push @{$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($nom)-1)*(scalar @{$anag{$nom}}));
  }
  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:53:14 EDT 1999