Я пытаюсь вычислить абсолютные значения строки 2 - значения строки 1, а затем горизонтальные абсолютные значения каждой строки в моем входном файле. Вот часть этого ввода.
43 402 51 360
63 60 69 63
65 53 89 55
103 138 135 135
109 36 123 38
Чтобы быть более точным в том, что я пытаюсь сделать, я сделал следующий пример
initial data
0 2 0 0
0 1 1 1
next stage (absolute value after subscription the second line minus the first line)
2 2 0
1 0 0
final stage (horizontal application of abs values until one column remained)
0
1
Приведенный ниже код был неудачной попыткой получить финальная стадия одного столбца. Моя проблема здесь в том, что я не знаю, как получить последний (желательный) этап с помощью подпрограммы, так как считаю, что это лучший способ решения моей проблемы. Конечно, любая идея или лучший подход приветствуется.
#!/usr/bin/perl
use feature qw(say);
use strict;
use warnings;
use Data::Dumper;
my @rows = 'table_only_numbers';
open(my $fh, '<:encoding(UTF-8)', $rows)
sub ori {
for ($num_cols=@{ $rows[$r-1]}; $num_cols=1; $num_cols-- ){
my @diff_diffs = map { abs($diffs[$_-1] - $diffs[$_]) } 1..$num_cols-1;
@final=@diff_diffs;
say join ' ',@final;
return (final) }
my $num_cols = @{ $rows[0] };
for my $r (1..$#rows) {
die "Bad format!" if @{ $rows[$r] } != $num_cols;
my @diffs = map { abs($rows[$r-1][$_] - $rows[$r][$_]) } 0..$num_cols-1;
while ($num_cols>1)
{
$final_output = ori(@{ $rows[0] })
say "final_output";
}
}
close $fh;