集合の共通部分と差分を計算する Perl プログラムを作成する

WBOY
リリース: 2024-01-09 20:25:56
転載
1282 人が閲覧しました

交差差分セットを作成するための Perl プログラム

厳密を使用;

utf8を使用します;

fa、「a.txt」を開くか、「a.txt を開けません」;

FB を開くか、「b.txt」を選択するか、「b を開けません」を選択してください;

chomp (私の @A = ) ;

chomp (私の @B = ) ;

aを閉じる; bを閉じる;

私 (@みんな、@AHasBNot、@BHasANot、%count);

@A ごとに

$count{A}{$_}=1;

$count{B}{$_}=1 @B ごとに;

このコードでは、ループとハッシュ テーブルを使用して、キーのリストを反復処理し、指定されたキーの値だけカウンターをインクリメントできます。このコードは 2 つのハッシュ テーブル (A と B) を使用し、それらのキーを反復処理します。次に、ループ内でカウンター (C) と foreach ステートメントを使用することで、指定されたキーの値だけカウンター値をインクリメントできます。

@Everyone has it = grep { $count{C}{$_} == 2 } Keys %{$count{C}}; ハッシュ テーブル $count{C} の値が 2 に等しいことを意味しますキーをフィルタリングして除外し、@everyone 配列に保存します。このステートメントは、ハッシュ テーブルをフィルタリングし、条件を満たす要素のみを保持するために使用されます。

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

@A Yes B No このコードは、Perl 言語の grep 関数と sort 関数を使用して、ハッシュ配列 %count から A キーに対応する値に 1 回だけ出現する要素を選択し、アルファベット順にソートします。

このコードでは、Perl 言語の `grep` 関数を使用して、配列 B には一度出現するが配列 A には出現しない要素をフィルターで除外します。具体的な実装では、B 配列の各要素をループし、ハッシュ テーブル `%count` を使用して各要素の出現数を記録します。最後に、B 配列をソートし、`grep` 関数を使用して条件を満たす要素を除外します。最後に、フィルター処理された結果を配列として返します。

print("共通: @全員が持っています$/A-のみ: @Aのみが持っています$/B-のみ: @Bのみが持っています");

php 2 つの 2 次元配列間の差分セットを決定する方法

$a=[

["sbnumber" => "0001-00001", "name" => "新安裁判所"],

["sbnumber" => "0001-00002", "name" => "中正源"],

["sbnumber" => "0001-00003", "name" => "プラグマティック ガーデン"]

["sbnumber" => "0001-00004", "name" => "サービスコート"],

{ "sbnumber": "0001-00005", "名前": "張三" }

];

$b=[

["sbnumber" => "0001-00001", "name" => "新安裁判所"],

["sbnumber" => "0001-00002", "name" => "中正源"],

["sbnumber" => "0001-00003", "name" => "プラグマティック ガーデン"]

["sbnumber" => "0001-00004", "name" => "サービスコート"],

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

];

$cmp=関数($av, $bv){

$r は、$av['sbnumber'] と $bv['sbnumber'] を比較して得られた結果です。

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

};

次のコードを使用すると、配列 $b とは異なる配列 $a の値を取得し、それらを配列 $c に保存できます: $c = array_values(array_udiff($a, $b, $cmp) );

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

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

unset($d);

var_dump($c);array(2) {

[0]=> 配列(2) { ["sbnumber"]=> 文字列(15) "0001-00005" ["名前"]=> 文字列(6) "張三" }

[1]=> 配列(2) { ["sbnumber"]=> 文字列(15) "0001-00007" ["名前"]=> 文字列(6) "李思" }

2 つの差分セットを比較して結果をマージするには、コンテンツを比較するためのカスタム ルールを使用する必要があります。異なる内容 (名前など) に基づいてレコード間の違いを判断し、レコードを比較できます。

以上が集合の共通部分と差分を計算する Perl プログラムを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:docexcel.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート