Thread Wieder mal ein Array-Vergleich Problem (13 answers)
Opened by Arasiel at 2003-11-17 09:57

Arasiel
 2003-11-17 09:57
#71934 #71934
User since
2003-11-12
39 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich vergleiche 2 Arrays, wie ich schon letzte Woche gepostet habe, mit folgenden Algorithmus, um
die symmetrische Differenz zwischen den beiden Arrays zu bekommen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
my @union = my @isect = my @diff = ();
my %union = my %isect = ();
my %count = ();
my $e;

foreach $e (@erg1, @erg2)
{
$count{$e}++
}

foreach $e(sort(keys %count))
{
push(@union, $e);

if ($count{$e} == 2)
{
push @isect, $e;
}
else
{
push @diff, $e;
}
}

$listbox_right->insert('end', @diff);


Jetzt habe ich aber erneut ein Problem:
Das gibt mir zwar in die Listbox alle, nicht gleichen Arrayelemente aus, aber ich müsste meine Listboxausgabe
noch folgendermassen anpassen.
Und zwar soll mir das Programm die Arrayelemente ausgeben, die nur in Array1 (=@erg1) vorhanden sind,
diejenigen, die nur in Array2 (=@erg2) vorhanden sind und diejenigen, die in Array1 und Array2 vorkommen sich aber
in einem Teil des Strings unterscheiden.

z.B. Ausgaben bis jetzt:
------------------------
"rp5478 rp5478 bfhf797 TTgu08nd fkue" # Array1
"rp5478 rp5478 bfhf797 TTgu08nd ----" # Array2
--> Dieses Element ist in beiden Arrays enthalten, und unterscheidet sich nur in einem Teilstring. Daher sollen sie in den Array @diff;

"rr67309 ewlj 898 ewidf sdföjds sdölj" # Array1
--> dieser String ist in Array2 gar nicht vorhanden, daher soll er in den Array @only_array1;

"khdfgfkhgh 97kl dfkjgldfkj ldfgjklg" # Array2
--> dieser String ist in Array1 gar nicht vorhanden, daher soll er in den Array @only_array2;

Ist ein solcher Vergleich mit dem obig genannten Algorithmus möglich bzw. wie muss ich ihn anpassen um
zum gewünschten Ergebniss zum kommen?

Die Ausgabe soll dann folgendermassen lauten:
---------------------------------------------
Code: (dl )
1
2
3
4
5
6
7
8
$listbox_right->insert('end', "Nur in Array1 enthalten");
$listbox_right->insert('end', @only_array1);

$listbox_right->insert('end', "Nur in Array2 enthalten");
$listbox_right->insert('end', @only_array2);

$listbox_right->insert('end', "Unterschiede");
$listbox_right->insert('end', @diff);


Vielen Dank im Voraus für die Hilfe!

Schönen Gruss!

View full thread Wieder mal ein Array-Vergleich Problem