寫一個Perl程式來計算集合的交集和差集

WBOY
發布: 2024-01-09 20:25:56
轉載
1253 人瀏覽過

perl寫交集差集的程式一個

use strict;

use utf8;

open fa, "a.txt" or die "can't open a";

open fb, "b.txt" or die "can't open b";

chomp ( my @A = ) ;

chomp ( my @B = ) ;

close a; close b;

my (@everyone, @AHasBNot, @BHasANot, %count);

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

$count{B}{$_}=1 foreach @B;

在這段程式碼中,透過使用循環和雜湊表,我們可以迭代鍵的列表,然後將計數器遞增給定鍵的值。這段程式碼使用了兩個哈希表(A和B),並對它們的鍵進行迭代。然後,透過在循環中使用計數器(C)和foreach語句,我們可以將計數器值增加給定鍵的值。

@大家都有= grep { $count{C}{$_} == 2 } keys %{$count{C}};的意思是根據雜湊表$count{C}中的值等於2的鍵,將其篩選出來保存在@大家都有數組中。這個語句用於對哈希表進行篩選操作,僅保留符合條件的元素。

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

@A有B無這段程式碼使用了Perl語言的grep函數和sort函數,用於從哈希數組%count中選擇A鍵對應的值中只出現一次的元素,並按照字母順序進行排序。

在這段程式碼中,我們使用了Perl語言中的`grep`函數來篩選出陣列B中出現一次而陣列A中沒有的元素。具體實作是透過對B數組中的每個元素進行循環遍歷,並使用哈希表`%count`來記錄每個元素的出現次數。最後,我們將B數組排序,然後使用`grep`函數來篩選出符合條件的元素。最終,我們將篩選結果作為數組傳回。

print("Common: @大家都有$/A-Only: @只有A有$/B-Only: @只有B有");

php 2個二維陣列如何判斷差集

#$a=[

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

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

["sbnumber" => "0001-00003", "name" => "務實苑"]

["sbnumber" => "0001-00004", "name" => "服務苑"],

{ "sbnumber": "0001-00005", "name": "張三" }

];

$b=[

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

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

["sbnumber" => "0001-00003", "name" => "務實苑"]

["sbnumber" => "0001-00004", "name" => "服務苑"],

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

];

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

$r是透過比較$av['sbnumber']和$bv['sbnumber']而得到的結果。

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

};

你可以使用下面的程式碼來取得陣列$a 中與陣列$b 不同的值並儲存在陣列$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]=> array(2) { ["sbnumber"]=> string(15) "0001-00005" ["name"]=> string(6) "張三" }

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

為了比較兩次差集並合併結果,需要使用自訂的對內容進行比較的規則。根據不同的內容(例如名字),我們可以確定記錄之間的差異,從而進行比較。

以上是寫一個Perl程式來計算集合的交集和差集的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:docexcel.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!