Perl comparaison de tableaux!!!
Fermé
1207
Messages postés
18
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
25 janvier 2009
-
25 janv. 2009 à 14:25
jo - 25 avril 2014 à 08:56
jo - 25 avril 2014 à 08:56
A voir également:
- Perl comparaison de tableaux!!!
- Tableaux croisés dynamiques - Guide
- Comparaison million milliard - Accueil - Technologies
- Fusionner deux tableaux excel - Guide
- Denon perl pro test - Accueil - Audio
- Tableau de combinaison loto 5/90 - Forum Excel
2 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 janv. 2009 à 14:43
25 janv. 2009 à 14:43
Salut,
lami20j@debian:~/trash$ cat ccm_comparer_tableau.pl #!/usr/bin/perl use strict;use warnings; my @tab1=qw/ a b c /; my @tab2=qw/ a d c e /; my $x=0; my $y=0; while($x<=$#tab1){ while($y<=$#tab2){ if($tab1[$x] eq $tab2[$y]){ print "$tab1[$x] égal $tab2[$y]\n"; } ++$y; } ++$x; $y=0; } __END__ lami20j@debian:~/trash$ perl ccm_comparer_tableau.pl a égal a c égal c
use strict;
use warnings;
use Data::Dumper;
my @a1 = (1, 2, 4, 6, 7, 8);
my @a2 = (1, 2, 3, 5, 6, 7);
print join "\t", @a1;
print "\n";
print join "\t", @a2;
print "\n";
print "\n";
print "###########################\n";
print "Elément dans un tableau et pas dans l'autre \n\n";
&different (\@a1,\@a2);
print "###########################\n";
print "Elément dans un tableau et pas dans l'autre \n\n";
&different (\@a2,\@a1);
print "###########################\n";
print "Eléments commun au 2 tableaux \n\n";
my %seen;
my @common = grep {$seen{$_}++} @a1 , @a2;
print Dumper @common;
print "\tNb Commun : ".scalar @common ."\n";
print "###########################\n";
sub different{
my $ref1=shift;
my $ref2=shift;
my @a1=@$ref1;
my @a2=@$ref2;
my %a;
map($a{$_}=1,@a1); # create %a with elements from @a1
my @diff=grep(!defined($a{$_}),@a2); # returns those elements of @a2 that +don't
# have a hash element in %a1 therefore they
# do not exist in @a1.
print Dumper @diff;
print "\tNb Diff : ".scalar @diff ."\n";
}
use warnings;
use Data::Dumper;
my @a1 = (1, 2, 4, 6, 7, 8);
my @a2 = (1, 2, 3, 5, 6, 7);
print join "\t", @a1;
print "\n";
print join "\t", @a2;
print "\n";
print "\n";
print "###########################\n";
print "Elément dans un tableau et pas dans l'autre \n\n";
&different (\@a1,\@a2);
print "###########################\n";
print "Elément dans un tableau et pas dans l'autre \n\n";
&different (\@a2,\@a1);
print "###########################\n";
print "Eléments commun au 2 tableaux \n\n";
my %seen;
my @common = grep {$seen{$_}++} @a1 , @a2;
print Dumper @common;
print "\tNb Commun : ".scalar @common ."\n";
print "###########################\n";
sub different{
my $ref1=shift;
my $ref2=shift;
my @a1=@$ref1;
my @a2=@$ref2;
my %a;
map($a{$_}=1,@a1); # create %a with elements from @a1
my @diff=grep(!defined($a{$_}),@a2); # returns those elements of @a2 that +don't
# have a hash element in %a1 therefore they
# do not exist in @a1.
print Dumper @diff;
print "\tNb Diff : ".scalar @diff ."\n";
}
25 janv. 2009 à 19:44