谁能帮我解决这个问题?我正在尝试编写一个脚本,该脚本需要许多 N 大小的数组的总和。(1,2)
在下面的示例中,数组的平均值为(0+1+2+1)/4 = 1
和(2+3+2+1)/4 = 2
。目前,下面的代码仅适用于大小为 2 的数组。我将如何处理大小为 100 的数组以使 @results 的长度为 100?我想我需要一个柜台,对吧?
use strict;
use warnings;
my @w = (0, 2);
my @x = (1, 3);
my @y = (2, 2);
my @z = (1, 1);
my @arrays = \(@w, @x, @y, @z);
my ($x, $y) = (0, 0);
foreach my $arr(@arrays) {
$x += $arr->[0];
$y += $arr->[1];
}
my @result = ( $x / @arrays, $y / @arrays);
print "@result\n"; # <---- prints 1 2
#######
# my attempt
my @avg;
for my $i(0..$w) {
# I'm guessing the result 'map...' returns is an array
@avg[$i] = sum(\(map $_->[$i], @arrays)) / @arrays;
}
# sum the elements in an array and return its value
sub sum{
# takes 1 param: an arrey_ref
my $sum = 0;
for ( @{$_[0]} ) {
$sum += $_;
}
return $sum;
}
我的尝试很接近,但它不起作用。我想在不使用模块的情况下做到这一点。