2010-06-14 5 views
0

누군가는 배열의 모든 요소가 배열 b에서 발견되는지 (그리고 배열 b에서 한 번만 발견되는) 2 개의 배열 (a와 b)을 비교하기 위해 Perl에서 좋은/좋은 해결책을 제공 할 수 있습니까?Perl에서 2 개의 배열을 비교하는 것

답변

1

당신이 관심을 수행하고 항목이 B가에서이없는 경우? 당신이 그것을 표현하는 방식은 a보다 많은 항목을 가질 수 있습니다. 또한 항목이 배열에 복제 될 때 수행 할 작업을 지정해야합니다. 다음은 in a에있는 모든 항목 중 하나 이상이있는 경우 발견되는 코드입니다.

#!/usr/bin/perl 

use strict; 
use warnings; 

sub all_in_second { 
    my ($first, $second) = @_; 
    my %in_second  = map { $_ => 1 } @$second; 

    for my $item (@$first) { 
     return 0 unless $in_second{$item}; 
    } 
    return 1; 
} 

my @a = (1, 2, 3, 3, 4); 
my @b = (1, 2, 3, 4, 5); 

print all_in_second(\(@a, @b)) ? "true" : "false", "\n"; 

@a = (1, 2, 3, 3, 6); 
@b = (1, 2, 3, 4, 5); 

print all_in_second(\(@a, @b)) ? "true" : "false", "\n"; 
관련 문제