[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