Я пытаюсь вычислить расстояния между набором координат в одной и той же области. Используя тип distance = sqrt (x2-x1) ^ 2 + (y2-y1) ^ 2) . Я знаю, что я близок к тому, чтобы сделать это, но я как-то сложил, поэтому мне нужна помощь.
Вот что я написал:
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
use POSIX; #gia dekadikous se akairaious
my$x=0;
my$y=0;
my$i=0;
my $flag = 1;
my @temp; #gia na kratisei tin loopa. an den isxei shmainei oti den exoume pinaka
my @proigoumeno;
my @dis;
my @row;
#my $counter=0;
my$final;
my $filename = 'myfile.txt';
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
while(<$fh>) {
@temp = split ' ';
if( $flag ) {
@proigoumeno = @temp;
$flag = 0;
next;
}
if( $#temp != $#proigoumeno ) {
} else {
my @data = map {(($proigoumeno[$_]-$temp[$_])) } 0..$#temp;
push my@dis, \@data;
foreach $row(@dis){
my$x = $row [$i] ;
my$y = $row [$i+1];
my$final = sqrt(($x**2)+($y**2));
my$ceil=ceil(my$final;)
#my$counter =my$counter+1;
say join ' ',$ceil;
}
}
}
Мой входной файл выглядит так:
area1 73070 74098 stop
area1 79689 79934 stop
area2 57000 59336 signal
area2 69391 72882 signal
area3 65205 66473 triangle
area3 66888 68294 triangle
area4 44491 48216 block
area4 269762 273388 block
area5 390882 392312 signal
area5 85172 85501 signal
Итак, мой желаемый вывод, я хочу быть таким:
area1 DISTANCE stop
area2 DISTANCE signal
area3 DISTANCE triangle
area4 DISTANCE block
area5 DISTANCE signal
, в котором DISTANCE = sqrt (second_line второго столбца - первая строка второго столбца ^ 2 + вторая строка третьего столбца - первая строка второго столбца ^ 2) моего входного файла.
Относительно желаемого результата:
a) Я хочу напечатать 1-й столбец Мой файл, а также 4-й после расчета координат. Поскольку мой уровень недостаточно хорош, чтобы делать то, что я хочу, я могу напечатать первый столбец только с помощью счетчика в начале и напечатать его так: "say join" area, $ counter '", или использовать командную строку | paste в моем выходном файле, чтобы добавить эти столбцы. Но внутри кода я понятия не имею, как это сделать, поэтому, если кто-то может помочь в этой части, я буду благодарен.
b) Сначала я проверил свой код, выполнив только вычитание из 2 колонки и работает отлично, но когда я попытался добавить sqrt в foreach l oop я испортил