Maison  >  Article  >  tutoriels informatiques  >  Écrire un programme Perl pour calculer l'intersection et la différence d'ensembles

Écrire un programme Perl pour calculer l'intersection et la différence d'ensembles

WBOY
WBOYavant
2024-01-09 20:25:561232parcourir

Un programme pour écrire des ensembles de différences d'intersection en Perl

utilisez strict ;

utilisez utf8;

ouvrir fa, "a.txt" ou mourir "impossible d'ouvrir un" ;

ouvrez fb, "b.txt" ou mourez "impossible d'ouvrir b" ;

chomp ( mon @A = ) ;

chomp ( mon @B = ) ;

fermer a ; fermer b ;

mon (@tout le monde, @AHasBNot, @BHasANot, %count);

$count{A}{$_}=1 pour chaque @A;

$count{B}{$_}=1 pour chaque @B;

Dans ce code, en utilisant une boucle et une table de hachage, nous pouvons parcourir la liste des clés puis incrémenter le compteur avec la valeur de la clé donnée. Ce code utilise deux tables de hachage (A et B) et parcourt leurs clés. Ensuite, en utilisant un compteur (C) et une instruction foreach dans une boucle, nous pouvons incrémenter la valeur du compteur de la valeur de la clé donnée.

@Tout le monde a = grep { $count{C}{$_} == 2 } clés %{$count{C}} signifie des clés dont la valeur est égale à 2 selon la table de hachage $count{C} , filtre retirez-les et enregistrez-les dans le tableau @everyone. Cette instruction est utilisée pour filtrer la table de hachage et ne conserver que les éléments qui remplissent les conditions.

foreach (@A, @B) { $compte{A}{$_}++ ; $compte{B}{$_}++ ; }

@A Oui B Non Ce code utilise la fonction grep et la fonction de tri du langage Perl pour sélectionner les éléments qui n'apparaissent qu'une seule fois dans la valeur correspondant à la clé A du tableau de hachage %count et les trier par ordre alphabétique.

Dans ce code, nous utilisons la fonction `grep` en langage Perl pour filtrer les éléments qui apparaissent une fois dans le tableau B mais pas dans le tableau A. L'implémentation spécifique consiste à parcourir chaque élément du tableau B et à utiliser la table de hachage `%count` pour enregistrer le nombre d'occurrences de chaque élément. Enfin, nous trions le tableau B puis utilisons la fonction « grep » pour filtrer les éléments qui remplissent les conditions. Enfin, nous renvoyons les résultats filtrés sous forme de tableau.

print("Commun : @Tout le monde l'a$/A-Only : @Seul A l'a$/B-Only : @Seul B l'a");

Comment déterminer la différence entre deux tableaux bidimensionnels en php

$a=[

["sbnumber" => "0001-00001", "name" => "心安园"],

["sbnumber" => "0001-00002", "name" => "Zhongzhengyuan"],

["sbnumber" => "0001-00003", "name" => "Pragmatic Garden"]

["sbnumber" => "0001-00004", "name" => "Service Garden"],

{ "sbnumber": "0001-00005", "name": "Zhang San" }

];

$b=[

["sbnumber" => "0001-00001", "name" => "心安园"],

["sbnumber" => "0001-00002", "name" => "Zhongzhengyuan"],

["sbnumber" => "0001-00003", "name" => "Pragmatic Garden"]

["sbnumber" => "0001-00004", "name" => "Service Garden"],

{"sbnumber": "0001-00007", "name": "李思"}

];

$cmp=fonction($av, $bv){

$r est le résultat obtenu en comparant $av['sbnumber'] et $bv['sbnumber'].

return $r===0 ? strcmp($av['name'],$bv['name']) : $r;

};

Vous pouvez utiliser le code suivant pour obtenir les valeurs du tableau $a qui sont différentes du tableau $b et les stocker dans le tableau $c : $c = array_values(array_udiff($a, $b, $cmp));

$d=array_udiff($b, $a, $cmp);

foreach($d comme &$dv) $c[]=$dv;

unset($d);

var_dump($c);array(2) {

[0]=> array(2) { ["sbnumber"]=> string(15) "0001-00005" ["name"]=> string(6) "Zhang San" }

[1]=> array(2) { ["sbnumber"]=> string(15) "0001-00007" ["name"]=> string(6) "李思" }

Afin de comparer deux ensembles de différences et de fusionner les résultats, vous devez utiliser des règles personnalisées pour comparer le contenu. En fonction de différents contenus (tels que les noms), nous pouvons déterminer les différences entre les enregistrements et ainsi les comparer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer