Хочется сделать рефакторинг пис-оф-кода.
Нужно для массива длиной в M элементов получить в другом массиве пары чисел, позволяющие считать первый массив равными порциями «по частям».
См. код ниже. Здесь $m - это количество элементов в массиве. $c - это размер порции для считывания.
Я это делаю сейчас так:
use Data::Dumper;
my $m=90;
my $c=15;
my @seq=map {
my $t1=$_*$c;
my $t2=$t1+$c-1;
$t2>($m-1)?$t1==$m?():[$t1=>$m-1]:[$t1=>$t2]
} 0..int($m/$c);
print Dumper \@seq
На выходе получаю массив @seq:
$VAR1 = [
[
0,
14
],
[
15,
29
],
[
30,
44
],
[
45,
59
],
[
60,
74
],
[
75,
89
]
];
Внимание, вопрос: как сделать то же самое:
а) Быстрее
б) Экономичнее
в) Лаконичнее
?
Например, использование splice не отвечает требованиям «быстрее» и «экономичнее», хотя удовлетворяет «лаконичнее».
Предыдущая часть мучений на ту же тему: «Разделяй и властвуй»: как обрабатывать списки «порциями»