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