• Jueves 14 de Noviembre de 2024, 04:39

Autor Tema:  Re: iguales...  (Leído 4262 veces)

FEckEZ

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: iguales...
« en: Viernes 14 de Marzo de 2003, 00:52 »
0
hola..

como puedo borrar los valores repetidos que se encuentran en un array.. por ejemplo:

$texto='mmm aaa mmm sss ss';
@partes=split(/ /,$texto);

devolveria:
partes[0]='mmm'
partes[1]='aaa'
partes[2]='mmm'
partes[3]='sss'
partes[4]='ss'

ahora, como puedo borrar los elementos iguales en esta lista... en el caso anterior, borrar del array partes[2], que es el unico repetido en este caso.

gracias

entius54

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
    • http://www.perlattack.com
Re: iguales...
« Respuesta #1 en: Viernes 14 de Marzo de 2003, 18:57 »
0
sub condense {
   my(undef,$array)=@_;
   my(@condensed);
   my($valid) = 1;
   while ($#$array >= 0) {
      foreach (@condensed) {
         $valid = 0 if ($array->
  • eq $_);

         }
      if ($valid) {
         push @condensed, shift @$array;
         } else {
         shift @$array;
         }
      $valid = 1;
      }

   @$array = @condensed;
   }

Donde le enviarias tu array via referencia y no te devolvería nada porque ya cambiaría el array original.

$obj->condensed(@tuarray);
por ejemplo

FEckEZ

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: iguales...
« Respuesta #2 en: Viernes 14 de Marzo de 2003, 19:53 »
0
mucho mas que interesante tu funcion.. muchisimas gracias por tu respuesta.

entius54

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
    • http://www.perlattack.com
Re: iguales...
« Respuesta #3 en: Sábado 15 de Marzo de 2003, 02:15 »
0
pues dame las grácias visitando perlattack.com
:birthday::guitar::hippi::comp:

FEckEZ

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
iguales...
« Respuesta #4 en: Domingo 16 de Marzo de 2003, 04:56 »
0
ya habia estado alli y habia leido un tutorial de perl... aunque por ahora esta muy corto, esta muy bien porque no se extienden mucho en cosas que son facilmente entendibles... aunque claro esta.. seria buenisimo si vas agregando mas contenido.

explorer

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: iguales...
« Respuesta #5 en: Domingo 9 de Julio de 2006, 03:23 »
0
Todo lo que tenga que ver con repetición, es una caso muy bueno para usar los hashes:
Código: Text
  1.     1 #!/usr/bin/perl -l
  2.     2 $texto='mmm aaa mmm sss ss';
  3.     3 @partes=split(/ /,$texto);
  4.     4
  5.     5 foreach my $parte ( @partes ) {
  6.     6     next if $ya_visto{ $parte }++;
  7.     7     push @revisado, $parte;
  8.     8 }
  9.     9
  10.    10 print "@revisado";
  11.  
* Hacemos un bucle por cada uno (foreach) de los elementos de @partes.
* En la línea 6 decimos que si ya lo hemos visto, pase al siguiente elemento. Explicación: Cada $parte se introduce en la memoria asociativa %ya_visto con un valor que va creciendo (la primera vez será un 0 lo que se reciba en el if, por lo que la $parte termina guardandose (push) en @revisado. Pero si es una $parte repetida, entonces devolverá un uno (o dos o tres...) con lo que se activa el next y no se guarda.