Thread differenz zwischen zwei arrays
(23 answers)
Opened by
Gast
at 2003-10-22 16:36
User since 2003-08-04
5872
Artikel
ModeratorIn
Ich hab einen Gegenvorschlag:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
use strict; use warnings; use diagnostics;
use Data::Dumper;
sub array_differenz ($$);
main(); exit;
sub main { my @a1 = qw/1 2 2 3 3 3 4 4 4 4/; my @a2 = qw/1 2 3 4/; my @a = array_differenz(\@a1, \@a2); print "Ergebnis a:\n", Dumper \@a;
my @b1 = qw/eins eins zwei/; my @b2 = qw/eins zwei/; my @b = array_differenz(\@b1, \@b2); print "Ergebnis b:\n", Dumper \@b; }
sub array_differenz ($$) { my $a1 = shift; # Array-Referenz my $a2 = shift; # Array-Referenz
my @a1m2 = @$a1; # Array 1 minus Array 2;
for my $element (@$a2) { for my $index (0..$#a1m2) { if ($element eq $a1m2[$index]) { splice @a1m2, $index, 1; last; } } } my @a2m1 = @$a2; # Array 2 minus Array 1;
for my $element (@$a1) { for my $index (0..$#a2m1) { if ($element eq $a2m1[$index]) { splice @a2m1, $index, 1; last; } } }
print "Array 1:\n", Dumper $a1; print "Array 2:\n", Dumper $a2; print "Array 1 minus Array 2:\n", Dumper \@a1m2; print "Array 2 minus Array 1:\n", Dumper \@a2m1;
return (@a1m2, @a2m1); }
mit dem Ergebnis
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
Array 1: $VAR1 = [ '1', '2', '2', '3', '3', '3', '4', '4', '4', '4' ]; Array 2: $VAR1 = [ '1', '2', '3', '4' ]; Array 1 minus Array 2: $VAR1 = [ '2', '3', '3', '4', '4', '4' ]; Array 2 minus Array 1: $VAR1 = []; Ergebnis a: $VAR1 = [ '2', '3', '3', '4', '4', '4' ]; Array 1: $VAR1 = [ 'eins', 'eins', 'zwei' ]; Array 2: $VAR1 = [ 'eins', 'zwei' ]; Array 1 minus Array 2: $VAR1 = [ 'eins' ]; Array 2 minus Array 1: $VAR1 = []; Ergebnis b: $VAR1 = [ 'eins' ];
Edit: Als Definition der Arraydifferenz lege ich dabei zugrunde:
QuoteDie Differenz zweier Arrays A und B ist gleich der Vereinigung von A ohne B mit B ohne A. \n\n
<!--EDIT|Crian|1066833372-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
View full thread differenz zwischen zwei arrays
|