亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標題:
求教:如何對歸屬關系進行等級標注?
[打印本頁]
作者:
huang6894
時間:
2014-10-23 09:13
標題:
求教:如何對歸屬關系進行等級標注?
對于以下文本,右邊是左邊的子類,右邊只可能有一個,應該怎么做才能對他們的等級進行標注呢?
__DATA__
A B
B;C;D E
B C
B;E F
C;G I
I;J;B K
C J
標注為:
A : A->B->C->I;J->K;
D: D->E->F;
G:G->I->K;
作者:
xiumu2280
時間:
2014-10-23 09:13
本帖最后由 xiumu2280 于 2014-10-23 14:37 編輯
my %family;
while (<DATA>) {
chomp;
my @person = split /;|\s+/;
my $son = pop @person;
$family{$_}{$son} = 1 for @person;
}
my @all_data;
for my $person ( sort keys %family ) {
my @team;
_repeat ($person,\%family,\@team);
}
@all_data = _uniq(@all_data);
for my $f (@all_data) {
print +(join "->",@{$f})."\n";
}
sub _repeat {
my ($goal,$family,$team) = @_;
my %hash = %{$family};
my @t = @{$team};
if ($hash{$goal}) {
push @t,$goal;
for my $key (keys %{$hash{$goal}}) {
_repeat($key,$family,\@t);
}
}else{
push @t,$goal;
push @all_data,[@t];
return;
}
}
sub _uniq {
my @data = @_;
for my $n (0..$#data) {
my $arr = $data[$n];
for my $array (@data) {
if (defined $array && scalar(@$arr) < scalar(@$array)) {
my %uniq;
@uniq{@$arr}=@$arr;
my @uni = grep{$uniq{$_}}@$array;
if (@uni == @$arr) {
undef ($data[$n]);
}
}
}
}
@data = grep {defined}@data;
return @data;
}
__DATA__
A B
B;C;D E
B C
B;E F
C;G I
I;J;B K
C J
復制代碼
這個東東,還是有點意思啊··
寫到一半,mark一下。
A->B->C->J->K
A->B->C->I->K
A->B->C->E->F
D->E->F
G->I->K
復制代碼
我想問下
A->B->C->I;J->K
A->B->C->E->F
是如何取舍的?取元素最多那個?
作者:
lpnueg4
時間:
2014-10-23 11:23
我的理解的,從圖上得到
A: A->B
B: B->E
C: C->E
D: D->E
B: B->C
B: B->F
E: E->F
C: C->I
G: G->I
I: I->K
J: J->K
B: B->K
C: C->J
這些基本信息,然后根據(jù)關系組合在一起,對嗎?
作者:
huang6894
時間:
2014-10-23 12:25
本帖最后由 huang6894 于 2014-10-23 12:26 編輯
回復
2#
lpnueg4
是呀~很糾結(jié)不知道如何排列組合,因為基本情況中的兩個元素中間可能會有其它元素
作者:
huang6894
時間:
2014-10-23 14:49
回復
4#
xiumu2280
sorry,是我太馬虎了。。。
不用取舍,就是求個家族史:
A->B->C->I;J->K
A->B->C->E->F
是對的,謝謝大神,我需要好好研究一下您的代碼,謝謝,謝謝
作者:
lpnueg4
時間:
2014-10-23 15:44
寫了一大堆,還沒寫出來,結(jié)果就看見大神寫好了,厲害!
作者:
huang6894
時間:
2014-10-23 17:48
回復
6#
lpnueg4
謝謝
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2