Leser: 1
6 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my @array1 = qw(mitteldeutschem mitteldeutsches mitteleuropaeisch mitteleuropaeische);
my @array2 = qw(mitteldeutschem mitteldeutsches);
my @union = ();
my @intersection = ();
my @difference = ();
my %count = ();
foreach my $element (@array1, @array2) { $count{$element}++ };
foreach my $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[...] my @arrays = (\@array1, \@array2, [...]); my @union; my @intersection; my @difference; my %counts; foreach my $array (@arrays) { $counts{$_}++ foreach (@$array); } foreach my $item (keys %counts) { push @union, $item; push @{ $counts{$item} == scalar(@arrays) ? \@intersection : \@difference }, $item; }
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
#!/usr/bin/perl
use strict;
use warnings;
use vars qw( @a1 @a2 @a3 %cnt @help );
# diese arrays sollen verglichen werden
@a1 = qw/ abc def 123 456 /;
@a2 = qw/ abc 123 789 /;
@a3 = qw/ def ghi 123 000 /;
# hilfsarray, damit wir die arrays identifizieren koennen,
# ohne dass wir sym.ref. benutzen muessen
@help = (
[ @a1 ],
[ @a2 ],
[ @a3 ],
);
# fuer jeden array
for my $hh ( 0 .. $#help ) {
# fuer jedes element eines array
for my $aa ( 0 .. $#{$help[$hh]} ) {
# das vorkommen eines elements erzeugt einen key
# und als value dient ein Array, in dem der Index aus
# @help abgelegt, in dem der string gefunden wurde
$cnt{$help[$hh]->[$aa]} = [] unless ( exists($cnt{$help[$hh]->[$aa]}) );
push(@{$cnt{$help[$hh]->[$aa]}}, $hh);
}
}
# fuer jeden key
for ( keys %cnt ) {
# gib aus, welches element in welchen arrays gefunden wurde
print "'$_' found in: @{$cnt{$_}}", $/;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
use strict;
use warnings;
my @a1 = qw{ abc def 123 456 };
my @a2 = qw{ abc 123 789 };
my @a3 = qw{ def ghi 123 000 };
my @zusammen=sort(@a1,@a2,@a3);
my @neu=();
my $alt="";
while(@zusammen>0)
{
my $wert=shift(@zusammen);
push(@neu,$wert)if($wert eq $zusammen[0] and $alt ne $wert);
$alt=$wert;
}
print "#### VORGABE ####\n@a1\n@a2\n@a3\n";
print "#### ERGEBNIS ####\n@neu\n";
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
#!/usr/bin/perl
use strict;
use warnings;
my @a1 = qw{ abc def 123 456 };
my @a2 = qw{ abc 123 789 };
my @a3 = qw{ def ghi 123 000 };
my @zusammen=sort(@a1,@a2,@a3);
my @neu=();
my $alt="";
my $cnt=1;
while(@zusammen>0)
{
my $wert=shift(@zusammen);
if($alt eq $wert)
{ $cnt++ }
else
{
push(@neu,$alt)if($cnt==3);
$cnt=1;
}
$alt=$wert;
}
print "#### VORGABE ####\n@a1\n@a2\n@a3\n#### ERGEBNIS ####\n@neu\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my @array1 = qw(mitteldeutschem mitteldeutsches mitteleuropaeisch mitteleuropaeische);
my @array2 = qw(mitteldeutschem mitteldeutsches);
my @union = ();
my @intersection = ();
my @difference = ();
my %count = ();
foreach my $element (@array1, @array2, @array3) { $count{$element}++ };
foreach my $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 2 ? \@intersection : \@difference }, $element;
}
6 Einträge, 1 Seite |