Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5824[/thread]

2 Arrays vergleichen



<< >> 4 Einträge, 1 Seite
Gast Gast
 2003-10-15 13:34
#63757 #63757
Hi hab ein Problem.

ich habe ein @Array1=('1','2');
und noch eins @Array2=('1','2','1','2')

Wie kann ich nun rausfinden, an welcher Stelle im 2Array die Elemente aus dem 1. Array auftauchen.

Danke.
format_c
 2003-10-15 14:10
#63758 #63758
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hi
Mein Vorschlag so offhand:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use strict;
my @original = qw/1 3 2 4/;
my @kopie = qw/3 2 1 4 2 3 2 1 4/;
for my $v (0..$#original) {
 print "$v ($original[$v]) Element: ",
 join(" & ",grep($original[$v]==$kopie[$_],(0..$#kopie))),"\n";
}
_ _ END _ _
0 (1) Element: 2 & 7
1 (3) Element: 0 & 5
2 (2) Element: 1 & 4 & 6
3 (4) Element: 3 & 8



Gruß alex\n\n

<!--EDIT|format_c|1066212644-->
-Sven-
 2003-10-15 14:56
#63759 #63759
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
Danke.

Nur kannst du es auch so schreiben, daß ich eine Variable erhalte. Oder ein Array.

Bsp: @Array= 2,4
format_c
 2003-10-15 17:32
#63760 #63760
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Das problem ist dass das Orginalarray ja viele Elemente haben kann und jedes Elemtn mehrmals in dem zu vergleichenden enthalten sein kann.
Ich mache es mit einem Zweidimensionalen Array:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use strict;
my @original = qw/1 3 2 4/;
my @kopie = qw/3 2 1 4 2 3 2 1 4/;

my @gemeinsam = vergleiche_array(\@original,\@kopie);
print "Element $_ ($original[$_]) in original am pos " . join(" & ",@{$gemeinsam[$_]}) . " gefunden\n" for 0..$#gemeinsam;


sub vergleiche_array ($$) {
my $original = shift;
my $kopie = shift;
my @auswertung;
for my $v (0..$#$original) {
push @auswertung,[grep($$original[$v]==$$kopie[$_],(0..$#$kopie))];
}
return @auswertung;
}
_ _ END _ _
Element 0 (1) in original am pos 2 & 7 gefunden
Element 1 (3) in original am pos 0 & 5 gefunden
Element 2 (2) in original am pos 1 & 4 & 6 gefunden
Element 3 (4) in original am pos 3 & 8 gefunden


Verstehst du wie es aufgebaut ist.
In Element 0 ist ein anon. Array enthalten, dass die Vorkommnisse von Element 0 vom Original in der Kopie wiedergeben.

Gruß ALex
<< >> 4 Einträge, 1 Seite



View all threads created 2003-10-15 13:34.