2014-02-17 34 views
0

使用列表我有兩個表A和B如下:在Perl

a = ('church.n.01','church.n.02','church_service.n.01','church.n.04') 
b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01') 

我想找到的成員和b使用功能get_relatedness(ARG1,ARG2)之間的關聯。如何在Perl中使用a和b操作,以便在Perl中使用兩個嵌套for循環來傳遞a和b之間的所有可能組合。

請幫我解決這個問題,因爲我是Perl新手。

+2

如何在此處定義相關性? – Vijay

+0

@Vijay:該問題將「查找相關性」定義爲「調用函數get_relatedness(arg1,arg2)」。這個問題是可以回答的,不需要知道該函數內發生了什麼。 –

回答

1
my @a = ('church.n.01','church.n.02','church_service.n.01','church.n.04'); 
my @b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01'); 

use Data::Dumper; 
print Dumper [ get_relatedness(\@a, \@b) ]; 

sub get_relatedness { 
    my ($c, $d) = @_; 

    return map { my $t=$_; map [$t, $_], @$d } @$c; 
} 

輸出

$VAR1 = [ 
     [ 
     'church.n.01', 
     'temple.n.01' 
     ], 
     [ 
     'church.n.01', 
     'temple.n.02' 
     ], 
     [ 
     'church.n.01', 
     'temple.n.03' 
     ], 
     [ 
     'church.n.01', 
     'synagogue.n.01' 
     ], 
     [ 
     'church.n.02', 
     'temple.n.01' 
     ], 
     [ 
     'church.n.02', 
     'temple.n.02' 
     ], 
     [ 
     'church.n.02', 
     'temple.n.03' 
     ], 
     [ 
     'church.n.02', 
     'synagogue.n.01' 
     ], 
     [ 
     'church_service.n.01', 
     'temple.n.01' 
     ], 
     [ 
     'church_service.n.01', 
     'temple.n.02' 
     ], 
     [ 
     'church_service.n.01', 
     'temple.n.03' 
     ], 
     [ 
     'church_service.n.01', 
     'synagogue.n.01' 
     ], 
     [ 
     'church.n.04', 
     'temple.n.01' 
     ], 
     [ 
     'church.n.04', 
     'temple.n.02' 
     ], 
     [ 
     'church.n.04', 
     'temple.n.03' 
     ], 
     [ 
     'church.n.04', 
     'synagogue.n.01' 
     ] 
    ]; 
1

爲了比較使用兩個嵌套循環的兩個陣列元件的所有組合,你只需要通過一個循環,並且對於所述第一陣列中的每個元素中,執行一個內循環遍歷第二個數組的元素:

my @a = ('church.n.01','church.n.02','church_service.n.01','church.n.04'); 
my @b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01'); 

my $relatedness; 

for my $outer (@a) { 
    for my $inner (@b) { 
    $relatedness += get_relatedness($outer, $inner); 
    } 
}