[bcn-pm] script_Perl_Array_index_comparison
Jose Luis Perez Diez
jluis a escomposlinux.org
dll maig 27 08:34:06 PDT 2019
Bienvenida ,
El dilluns, 27 de maig de 2019, a les 16:44:46 CEST, alessandra.borgognone a unavarra.es va escriure:
> Necesitaría terminar pronto un código y quería pedir un ayuda sobre la
> siguiente cuestión:
>
> Teniendo 2 arrays:
> @A = ("Red", "Green", "Yellow");
> @B = ("Yellow", "Black","Yellow","Red", "White", "Yellow");
>
> En array A, cada elemento está representado 1 vez.
> En array B, cada elemento puede ocurrir zero, una o más veces.
Yo usaría un hash y me olvidaría de @A hasta el final con un algoritmo como el siguiente:
my @B = qw(Yellow Black Yellow Red White Yellow);
#qr usa los espacios en blaco para definir una lista de strings
my %positions ;
for my $pos (0..$#B) {
if (defined $positions{$B[$pos]}) {
push @{$positions{$B[$pos]}}, $pos;
} else {
$positions{$B[$pos]}=[$pos];
}
}
my @A = qw (Red Green Yellow);
my $found = 0;
for my $color (@A) {
if (defined $positions{$color}) {
$found += scalar @{$positions{$color}}; # scalar de un array nos devuelve el numero de elementos
print "$color at index " , join " ," ,@{$positions{$color}};
} else {
print "$color not found";
}
print "\n";
}
print "Elements from B were detected $found times in A\n"
Més informació sobre la llista de correu Barcelona-pm