0

整数の配列を取得しましたが、累積頻度配列をどのようにコーディングするのか疑問に思っていました。for ループを使用する必要がありますか、それとももっと簡単な方法がありますか。

たとえば、与えられた整数: 1 2 3 4 5 6 7 8 新しい配列は次のように出力されます: 1 3 6 10 15 21 28 36 ありがとう!

4

3 に答える 3

0

map次の代わりに使用することもできますforeach ... push

#!/usr/bin/perl -w
use strict;
my @arr = 1..10;
my $sum;
my @newarr = map { $sum += $_ } @arr;
print "@newarr\n";
于 2012-08-31T10:45:03.733 に答える
0

forこれは、単一のループで非常に簡単に実行できます

use strict;
use warnings;

my @data = 1 .. 8;

my @cumulative = $data[0];
push @cumulative, $cumulative[-1] + $_ for @data[1..$#data];

print "@cumulative\n";

出力

1 3 6 10 15 21 28 36
于 2012-08-31T13:19:35.267 に答える
-1

一方向、非常に非効率的:

    #!/usr/bin/env perl
    use strict;
    use warnings;
    use List::Util qw/sum/;

    my @arr = (1..10);
    my @newarr;

for my $i (0..$#arr) {
    $newarr[$i] = sum(@arr[0..$i]) 
}

ループと合計ははるかに優れています。

use strict;
use warnings;

my @arr = (1..10);
my @newarr;
my $mid;

for my $i (0..$#arr) {
  $mid += $arr[$i];
  push(@newarr,$mid);
}
于 2012-08-31T10:10:45.300 に答える