Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparaison de deux listes de mots

2 réponses
Avatar
rene-pierre.parot
Bonjour,

je cherche à comparer deux listes de mots (l1 et l2) afin de trouver
quels sont les mots de la liste l2 qui n'ont pas de correspondance
avec la liste l1.
Voici où j'en suis :

use strict;
use diagnostics;

my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
my $arg="";
my $t="";

foreach $arg(@l1){
foreach my $t(@l2){
if ($arg eq $t){
print " Fichier(s) identique(s) :\t$t\t\t$arg\n";
print "La valeur qui est supprime est :\t$t\n";
last; # sort de la boucle si $arg = $t
}else{
print " Fichier(s) different(s) :\t$arg\t\t$t\n";
}
}
print "Fin de cycle:\t$t\n";
}


Merci pour votre aide.

2 réponses

Avatar
root
On Wed, 17 Dec 2003 04:51:52 -0800, RPP wrote:

Bonjour,

je cherche à comparer deux listes de mots (l1 et l2) afin de trouver
quels sont les mots de la liste l2 qui n'ont pas de correspondance
avec la liste l1.
Voici où j'en suis :

use strict;
use diagnostics;

my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
my $arg="";
my $t="";

foreach $arg(@l1){
foreach my $t(@l2){
if ($arg eq $t){
print " Fichier(s) identique(s) :t$ttt$argn";
print "La valeur qui est supprime est :t$tn";
last; # sort de la boucle si $arg = $t
}else{
print " Fichier(s) different(s) :t$argtt$tn";
}
}
print "Fin de cycle:t$tn";
}



En utilisant un hash ?

my @l1 = qw( deux quatre sept );
my @l2 = qw( un deux trois quatre cinq six sept huit );

my %l1 = map { $_ => 1 } @l1;
my @diff = grep { not exists $l1{$_} } @l2;

print "diff = ", join(":", @diff), "n";

Résultat :

diff = un:trois:cinq:six:huit

Avatar
dominix
RPP wrote:
Bonjour,

je cherche à comparer deux listes de mots (l1 et l2) afin de trouver
quels sont les mots de la liste l2 qui n'ont pas de correspondance
avec la liste l1.
Voici où j'en suis :

use strict;
use diagnostics;

my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
my $arg="";
my $t="";

foreach $arg(@l1){
foreach my $t(@l2){
if ($arg eq $t){
print " Fichier(s) identique(s) :t$ttt$argn";
print "La valeur qui est supprime est :t$tn";
last; # sort de la boucle si $arg = $t
}else{
print " Fichier(s) different(s) :t$argtt$tn";
}
}
print "Fin de cycle:t$tn";
}


Merci pour votre aide.



my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
$= ' ';
my %seen;
for (@l1) {$seen{$_}= "1"}
for (@l2) {$seen{$_}.= "2" }
for (keys %seen){print if $seen{$_}=~/^2/};


--
dominix