[Cascavel-pm] Gerar lista...
Nelson Ferraz
nferraz em gmail.com
Quinta Agosto 2 11:31:44 PDT 2007
On Aug 2, 2007, at 6:54 PM, Rafael Lebrão Martins wrote:
> Neste caso, como extrair da "lista 2" apenas as palavras que não
> contêm na
> lista "@array" e guardá-las numa
> terceira lista??
Esse tipo de problemas (verificar a intersecção ou diferença entre
dois conjuntos) é resolvido com hashes.
my @list1 = qw( foo bar baz );
my @list2 = qw( foo bar lalala );
# coloca itens em hashes
my %hash1 = map( ( $_ => 1 ), @list1 );
my %hash2 = map( ( $_ => 1 ), @list2 );
# agora trabalhamos com os conjuntos
my %uniao = (%hash1, %hash2);
my (%diferenca, %interseccao) = ();
foreach (keys %uniao ) {
if ( $hash1{$_} && $hash2{$_} ) {
$interseccao{$_} = 1;
} else {
$diferenca{$_} = 1;
}
}
# imprime os resultados
print "hash1: ", join(",", keys %hash1), "\n";
print "hash2: ", join(",", keys %hash2), "\n";
print "Uniao: ", join(",", keys %uniao), "\n";
print "Diferenca: ", join(",", keys %diferenca), "\n";
print "Interseccao: ", join(",", keys %interseccao), "\n";
[]s
Nelson
Mais detalhes sobre a lista de discussão Cascavel-pm