#!/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>