我想写的程序与File row confrontation具有相同的目标。这次我的文件以不同的方式放置:
1 2
1 3
1 4
2 1
2 3
2 4
2 5
3 1
...
8 6
8 7
8 9
9 8
我想找到:
文件已排序。
在这种情况下,程序将开始在文件中创建第一个“couple”1 2但反转,它将在第4行(2 1)找到它。然后它查看3(第二行和1的邻居)是否也存在于2中(并且情况是因为它存在2 3),依此类推。最后它会发现“有链接1 2”并且“找到2个三角形”(1 - 2 - 3和1 - 2 - 4)。我认为答案与上层链接中的答案不一样,但我不知道如何从这样的文件中排列文件。
答案 0 :(得分:0)
问题的第一部分是只查找反向匹配对的索引?在昨天阅读这个问题时,我觉得grep可能有用;
#!usr/bin/perl
use warnings;
use strict;
my @parry;
while (<DATA>){
push @parry, [split(' ',$_)];
}
#@remind is reverse matched indices;
my @remind = grep {
my $ind = $_;
grep { #reverse @{$parry[$_]} == @{parry[$ind]} did not appear to work.
@{$parry[$_]}[0] == @{$parry[$ind]}[1] &&
@{$parry[$_]}[1] == @{$parry[$ind]}[0];
} 0..$#parry
} 0..$#parry;
grep { print $_,': ',@{$parry[$_]},$/ } @remind;
__END__
1 2
1 3
1 4
2 1
2 3
2 4
2 5
3 1
8 6
8 7
8 9
9 8
输出
0: 12
1: 13
3: 21
7: 31
10: 89
11: 98
从这里你想找到发言权 7 [0] 7 [1](3 1)与邻居行6和8与col 2?
6[1]
7[1] (1 5) and/or
7[1] (1 6) exist in the original set (in @parry)?
8[1]
他们不是没有三角形。