Odebrani opakujicich se prvku z pole

Ondrej Koala Vacha koala na fi.muni.cz
Pondělí Duben 12 23:08:41 MEST 1999


On Mon, 12 Apr 1999, Ludek Finstrle wrote:

> > Ahoj lidi,
> > 
> > potreboval bych nejakej (jednduchej) zpusob jak odebrat z pole prvky, ktere
> > se tam uz vyskytuji.
> > Patrne nejlepsi zpusob je priradit je jako klice do hashe a pak ty stejny
> > vypadnou, jenomze jak to udelat, kdyz potrebuju zachovat jejich poradi?
> 
> Coz takhle:
> 
> my %hash;
> my $pom;
> for (@pole) {
> 	$hash{sprintf('%10d',$pom)."$pole[$pom]"} = 1;
> }
> 
> @pole = map { /^.{10}(.*)$/; $1 } sort keys %hash;
> 
> Melo by to fungovat.
> 
> Neni zac
> 


Priklad by nepracoval dobre, ani kdyby si nastavoval $pom pres prvky pole,
nebot by nevyloucil duplicity. Nabizim reseni:

my %hash;
my $pom;
for ($pom=@pole-1; $pom>=0; $pom--) {
        $hash{$pole[$pom]} = $pom;
}

@pole = map {$pole[$_]} sort values %hash;




---
Ondrej Koala Vacha



Další informace o konferenci Perl