>컴퓨터 튜토리얼 >컴퓨터 지식 >집합의 교집합과 차이를 계산하는 Perl 프로그램 작성

집합의 교집합과 차이를 계산하는 Perl 프로그램 작성

WBOY
WBOY앞으로
2024-01-09 20:25:561295검색

Perl에서 교집합 차이 집합을 작성하는 프로그램

엄격하게 사용하세요.

utf8을 사용하세요;

open fa, "a.txt" 또는 die "a를 열 수 없음";

fb를 열거나 "b.txt"를 입력하지 않으면 "b를 열 수 없습니다";

chomp ( my @A = ) ;

chomp ( my @B = ) ;

닫기 b;

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

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

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

이 코드에서는 루프와 해시 테이블을 사용하여 키 목록을 반복한 다음 주어진 키 값으로 카운터를 증가시킬 수 있습니다. 이 코드는 두 개의 해시 테이블(A와 B)을 사용하고 해당 키를 반복합니다. 그런 다음 루프에서 카운터(C)와 foreach 문을 사용하여 주어진 키 값만큼 카운터 값을 증가시킬 수 있습니다.

@Everyone has = grep { $count{C}{$_} == 2 }key %{$count{C}}; 해시 테이블 $count{C}에 따라 값이 2인 키를 의미합니다. @everyone 배열에 저장하세요. 이 문은 해시 테이블을 필터링하고 조건을 충족하는 요소만 유지하는 데 사용됩니다.

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

@A has B? 이 코드는 Perl 언어의 grep 함수와 sort 함수를 사용하여 해시 배열 %count에서 A 키에 해당하는 값에 한 번만 나타나는 요소를 선택하고 알파벳 순서로 정렬합니다.

이 코드에서는 Perl 언어의 'grep' 함수를 사용하여 배열 B에는 한 번 나타나지만 배열 A에는 나타나지 않는 요소를 필터링합니다. 구체적인 구현은 B 배열의 각 요소를 반복하고 해시 테이블 '%count'를 사용하여 각 요소의 발생 횟수를 기록하는 것입니다. 마지막으로 B 배열을 정렬한 다음 `grep` 함수를 사용하여 조건을 충족하는 요소를 필터링합니다. 마지막으로 필터링된 결과를 배열로 반환합니다.

print("공통: @모든 사람이 가지고 있습니다$/A-Only: @A만 가지고 있습니다$/B-Only: @B만 가지고 있습니다");

PHP에서 두 개의 2차원 배열 사이에 설정된 차이를 확인하는 방법

$a=[

["sb번호" => "0001-00001", "이름" => "心安园"],

["sbnumber" => "0001-00002", "이름" => "중정원"],

["sbnumber" => "0001-00003", "name" => "실용적인 정원"]

["sbnumber" => "0001-00004", "name" => "서비스 가든"],

{ "sbnumber": "0001-00005", "name": "장산" }

];

$b=[

["sb번호" => "0001-00001", "이름" => "心安园"],

["sbnumber" => "0001-00002", "이름" => "중정원"],

["sbnumber" => "0001-00003", "name" => "실용적인 정원"]

["sbnumber" => "0001-00004", "name" => "서비스 가든"],

{"sbnumber": "0001-00007", "이름": "lee思"}

];

$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;

설정 해제($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) "lee思" }

두 개의 차이점 집합을 비교하고 결과를 병합하려면 콘텐츠 비교를 위한 맞춤 규칙을 사용해야 합니다. 다양한 내용(예: 이름)을 기반으로 기록 간의 차이점을 판단하여 비교할 수 있습니다.

위 내용은 집합의 교집합과 차이를 계산하는 Perl 프로그램 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 docexcel.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제