Schrift
[thread]6766[/thread]

schwarz'scher filter?: entferne dups aus array



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
lichtkind
 2005-03-07 22:01
#52389 #52389
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ein problem zu dem sicher jeder von euch eine lösung in der schublade hat aber ich versuch es ma elegant bin aber nicht weit gekommen.

ihr kennt sicher schwartze trafos waren diese woche auch mal thema hier. meine frage könnte man damit auch filtern also zb dups aus einem array ziehen.

um nich alles mit allem zu vergleichen könnte man eine temporär sortierten array ((O)nlogn) linear nach duplikaten absuchen diese markieren und den array ohne duplikate zurückgeben.

ich komm irgendwie nicht weiter, jemand ansätze?\n\n

<!--EDIT|lichtkind|1110225816-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
kabel
 2005-03-07 22:06
#52390 #52390
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
wozu da es doch ein nettes perl idiom fuer sowas gibt?!
ansonsten sehe ich den zusammenhang zur ST nicht (bis auf den sortier-aspekt).
-- stefan
betterworld
 2005-03-07 22:50
#52391 #52391
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich nehme dafuer eigentlich so gut wie immer Hashes...
Code (perl): (dl )
1
2
3
4
my @array = <>;
my %hash;
@hash{@array}=();
print keys %hash;


Oder kommt es Dir darauf an, dass am Ende die Reihenfolge wieder die gleiche ist?
esskar
 2005-03-07 22:58
#52392 #52392
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ansonsten, nach deinem ansatz

Code: (dl )
1
2
3
4
5
6
7
8
my @sorted = sort @array;
my @clean = ();

my $before = undef;
foreach (@sorted) {
push @clean, $_ if (not defined $before) or ($_ ne $before);
$before = $_;
}


die vergleichsoperatoren musst du ändern wie du's brauchst
betterworld
 2005-03-07 23:07
#52393 #52393
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Wenn ich mir die Sache mit der ST von kabel: (siehe hier) noch mal genau angucke, faellt mir fuer Dein Problem auch noch ein lustiger Ansatz ein (den ich aber nicht ernsthaft benutzen wuerde):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use warnings;
use strict;

my @array = <>;
my @uniq= map {
    $_->[0]
} grep {
    ! $_->[1]
} sort {
    my $v = $a->[0] cmp $b->[0];
    $a->[1] = 1 unless $v or $b->[1];
    $v
} map {
    [$_]
} @array;

print @uniq;
lichtkind
 2005-03-07 23:08
#52394 #52394
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
betterworld: cooler ansatz aber die reihenfolge will behalten und somit scheided auch skar's ansatz aus
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
betterworld
 2005-03-07 23:13
#52395 #52395
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Hmm, wenn Du tatsaechlich die Reihenfolge behalten willst, nimm doch so etwas hier:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
use strict;
use warnings;

my @array = <>;
my @uniq;
my %hash;
for (@array) {
  push @uniq, $hash{$_} = $_ unless exists $hash{$_};
}
print @uniq;
lichtkind
 2005-03-07 23:17
#52396 #52396
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
betterworld es scheiint von der logik fast das zu sein an was ich dachte
warum würdest du es nicht verwenden?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2005-03-07 23:26
#52397 #52397
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
betterworld: ähem ich muss dazu sagen mein erstes post bezog sich auf dein erstes und meinzwiter kommetar auf dein zweites denn wenn ich meine post abschicke seh ich immer erst dannach dein post das vor mir im forum erscheint
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
pq
 2005-03-07 23:54
#52398 #52398
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ansonsten lohnt sich wie immer ein blick in die perlfaq:
perldoc -q duplicate
da stehen verschiedene beispiele.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2005-03-07 22:01.