use strict;
use warnings;
my @array = map { sprintf q{%02d}, $_ } 1 .. 17;
print q{=} x 25, qq{\n};
for ( 1 .. 10 )
{
print qq{Partition size = $_\n};
my @newArray = partitionArray( $_, @array );
printAoA( @newArray );
}
sub partitionArray
{
my( $ps, @array ) = @_;
my @newArray =
map {
[
exists $array[ $ps * $_ + $ps - 1 ]
? @array[ ( $ps * $_ ).. ( $ps * $_ + $ps - 1 ) ]
: @array[ ( $ps * $_ ) .. $#array]
]
}
0 .. $#array / $ps;
}
sub printAoA
{
foreach my $raSubArray ( @_ )
{
local $" = q{, };
print qq{[ @$raSubArray ]\n};
}
print q{=} x 25, qq{\n};
}
####
=========================
Partition size = 1
[ 01 ]
[ 02 ]
[ 03 ]
[ 04 ]
[ 05 ]
[ 06 ]
[ 07 ]
[ 08 ]
[ 09 ]
[ 10 ]
[ 11 ]
[ 12 ]
[ 13 ]
[ 14 ]
[ 15 ]
[ 16 ]
[ 17 ]
=========================
Partition size = 2
[ 01, 02 ]
[ 03, 04 ]
[ 05, 06 ]
[ 07, 08 ]
[ 09, 10 ]
[ 11, 12 ]
[ 13, 14 ]
[ 15, 16 ]
[ 17 ]
=========================
Partition size = 3
[ 01, 02, 03 ]
[ 04, 05, 06 ]
[ 07, 08, 09 ]
[ 10, 11, 12 ]
[ 13, 14, 15 ]
[ 16, 17 ]
=========================
Partition size = 4
[ 01, 02, 03, 04 ]
[ 05, 06, 07, 08 ]
[ 09, 10, 11, 12 ]
[ 13, 14, 15, 16 ]
[ 17 ]
=========================
Partition size = 5
[ 01, 02, 03, 04, 05 ]
[ 06, 07, 08, 09, 10 ]
[ 11, 12, 13, 14, 15 ]
[ 16, 17 ]
=========================
Partition size = 6
[ 01, 02, 03, 04, 05, 06 ]
[ 07, 08, 09, 10, 11, 12 ]
[ 13, 14, 15, 16, 17 ]
=========================
Partition size = 7
[ 01, 02, 03, 04, 05, 06, 07 ]
[ 08, 09, 10, 11, 12, 13, 14 ]
[ 15, 16, 17 ]
=========================
Partition size = 8
[ 01, 02, 03, 04, 05, 06, 07, 08 ]
[ 09, 10, 11, 12, 13, 14, 15, 16 ]
[ 17 ]
=========================
Partition size = 9
[ 01, 02, 03, 04, 05, 06, 07, 08, 09 ]
[ 10, 11, 12, 13, 14, 15, 16, 17 ]
=========================
Partition size = 10
[ 01, 02, 03, 04, 05, 06, 07, 08, 09, 10 ]
[ 11, 12, 13, 14, 15, 16, 17 ]
=========================
####
use strict;
use warnings;
my @array = map { sprintf q{%02d}, $_ } 1 .. 17;
print q{=} x 25, qq{\n};
for ( 1 .. 10 )
{
print qq{Partition size = $_\n};
my @newArray = partitionArray( $_, @array );
printAoA( @newArray );
}
sub partitionArray
{
my( $partSize, @array ) = @_;
my @partitioned = ();
while( scalar @array > $partSize )
{
push @partitioned, [ splice @array, 0, $partSize ];
}
push @partitioned, \ @array;
return @partitioned;
}
sub printAoA
{
foreach my $raSubArray ( @_ )
{
local $" = q{, };
print qq{[ @$raSubArray ]\n};
}
print q{=} x 25, qq{\n};
}