我想找到节点之间的最近距离。
这是我的示例数据:
节点,x,y
1、3、5 2、6、9 3、13、15 4、16、20 5、30、50
例如,从节点 1 到节点 2 的最近距离为 5。我想找到与所有节点的最近距离为节点 2、3、4、5。
我如何在 Perl 中实现这一点?
这是我到目前为止所拥有的:
use strict;
use warnings;
use Data::Dumper;
open(IN , "<" , "sample.txt" ) or die "Can't open this file.";
my @two_dimentional_array;
while (my $line=<IN>)
{
my @arr_line=split (" *, *" , $line);
my @one_dimentional_array;
push @one_dimentional_array , @arr_line;
push @two_dimentional_array, [@arr_line];
}
for(my $i=0 ; $i<=$#two_dimentional_array ; $i++)
{
my ($n_1 , $X_1 , $y_1)=@{$two_dimentional_array[$i]};
for (my $j=0 ; $j<=$#two_dimentional_array ; $j++)
{
my ($n_2 , $X_2 , $y_2)=@{$two_dimentional_array[$j]};
chomp($y_1);
chomp($y_2);
if($n_1 != $n_2)
{
my $distance=sqrt(($X_2-$X_1)**2 + ($y_2-$y_1)**2);
print "Distance ".$distance." from node ".$n_1." to node ".$n_2."\n";
}
}
}
#print Dumper(\@two_dimentional_array);