Perl - comando sort

 
Vista:

comando sort

Publicado por victor (2 intervenciones) el 25/06/2005 21:51:32
@a=(1,2,3,4,1,2,1,2,);

existe algun modificador de sort o algun otro comando que de como resultado esto

@a=comando(@); #@a=(1,2,3,4);

eliminando los valores que se repiten?
salu2 y grax
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Joaquin Ferrero
Val: 56
Oro
Ha mantenido su posición en Perl (en relación al último mes)
Gráfica de Perl

RE:comando sort

Publicado por Joaquin Ferrero (31 intervenciones) el 16/08/2005 16:56:05
Como modificador de sort, no, pero se podría hacer algo...

<pre>
@a=(1,2,3,4,1,2,1,2);
map { $h{$_}=1 } @a;
@b = keys %h;
print @b;
</pre>

La pega es que pierdes el orden de los datos. Si los necesitas en el orden en que primero aparecen, hay que aplicar una técnica distinta:

<pre>
@a=(1,1,2,2,2,3,2,3,1,2,1,2,4,1,2,1,2);
foreach ( @a )
{
push @b,$_ unless $h{$_}++;
}
print @b;
</pre>

Lo que hacemos es recorrer todo el vector (foreach) y ver si no (unless) lo hemos visto antes. Si es así, lo guardamos en nuestra memoria (%h) y lo almacenamos en un vector aparte (push).

Si alguien no entiende lo que quiere decir la línea interior en el foreach, esta es la versión extendida:

<pre>
unless ( $h{$_} )
{
$h{$_}=1;
push @b,$_
}
</pre>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar