gpt4 book ai didi

arrays - Perl - 将数组拆分为更小的均匀分布的数组

转载 作者:行者123 更新时间:2023-12-01 07:16:06 25 4
gpt4 key购买 nike

如何将任意大小的 Perl 数组拆分为可变数量的较小数组,并使每个较小数组中的元素数量尽可能均匀分布?不得破坏原始数组。

最佳答案

在我的头顶:

use strict;
use warnings;

use Data::Dumper; # for debugging only

print Dumper(distribute(7, [1..30]));

# takes number+arrayref, returns ref to array of arrays
sub distribute {
my ($n, $array) = @_;

my @parts;
my $i = 0;
foreach my $elem (@$array) {
push @{ $parts[$i++ % $n] }, $elem;
};
return \@parts;
};

这保证了@parts 中的元素数量只能相差一。还有另一个解决方案可以预先计算数字并使用拼接:
push @parts, [ @$array[$offset..$offset+$chunk] ];
$offset += chunk;
# alter $chunk if needed.

关于arrays - Perl - 将数组拆分为更小的均匀分布的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com