[chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=1 0 : from 0 to 9999997 (9999998) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=2 0 : from 0 to 4999998 (4999999) 1 : from 4999999 to 9999997 (4999999) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=3 0 : from 0 to 3333331 (3333332) 1 : from 3333332 to 6666664 (3333333) 2 : from 6666665 to 9999997 (3333333) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=4 0 : from 0 to 2499998 (2499999) 1 : from 2499999 to 4999998 (2500000) 2 : from 4999999 to 7499997 (2499999) 3 : from 7499998 to 9999997 (2500000) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=5 0 : from 0 to 1999998 (1999999) 1 : from 1999999 to 3999998 (2000000) 2 : from 3999999 to 5999997 (1999999) 3 : from 5999998 to 7999997 (2000000) 4 : from 7999998 to 9999997 (2000000) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=6 0 : from 0 to 1666665 (1666666) 1 : from 1666666 to 3333331 (1666666) 2 : from 3333332 to 4999998 (1666667) 3 : from 4999999 to 6666664 (1666666) 4 : from 6666665 to 8333330 (1666666) 5 : from 8333331 to 9999997 (1666667) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=7 0 : from 0 to 1428570 (1428571) 1 : from 1428571 to 2857141 (1428571) 2 : from 2857142 to 4285712 (1428571) 3 : from 4285713 to 5714283 (1428571) 4 : from 5714284 to 7142854 (1428571) 5 : from 7142855 to 8571425 (1428571) 6 : from 8571426 to 9999997 (1428572) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=8 0 : from 0 to 1249998 (1249999) 1 : from 1249999 to 2499998 (1250000) 2 : from 2499999 to 3749998 (1250000) 3 : from 3749999 to 4999998 (1250000) 4 : from 4999999 to 6249997 (1249999) 5 : from 6249998 to 7499997 (1250000) 6 : from 7499998 to 8749997 (1250000) 7 : from 8749998 to 9999997 (1250000) [chris@pineapple ranges-892828]$ perl ranges -M=9999997 -N=9 0 : from 0 to 1111109 (1111110) 1 : from 1111110 to 2222220 (1111111) 2 : from 2222221 to 3333331 (1111111) 3 : from 3333332 to 4444442 (1111111) 4 : from 4444443 to 5555553 (1111111) 5 : from 5555554 to 6666664 (1111111) 6 : from 6666665 to 7777775 (1111111) 7 : from 7777776 to 8888886 (1111111) 8 : from 8888887 to 9999997 (1111111) #### [chris@pineapple ranges-892828]$ perl ranges -M=9 -N=1 0 : from 0 to 9 ( 10) [chris@pineapple ranges-892828]$ perl ranges -M=9 -N=2 0 : from 0 to 4 ( 5) 1 : from 5 to 9 ( 5) [chris@pineapple ranges-892828]$ perl ranges -M=9 -N=3 0 : from 0 to 2 ( 3) 1 : from 3 to 5 ( 3) 2 : from 6 to 9 ( 4) [chris@pineapple ranges-892828]$ perl ranges -M=9 -N=4 0 : from 0 to 1 ( 2) 1 : from 2 to 4 ( 3) 2 : from 5 to 6 ( 2) 3 : from 7 to 9 ( 3) [chris@pineapple ranges-892828]$ perl ranges -M=9 -N=5 0 : from 0 to 1 ( 2) 1 : from 2 to 3 ( 2) 2 : from 4 to 5 ( 2) 3 : from 6 to 7 ( 2) 4 : from 8 to 9 ( 2) [chris@pineapple ranges-892828]$ perl ranges -M=9 -N=6 0 : from 0 to 0 ( 1) 1 : from 1 to 2 ( 2) 2 : from 3 to 4 ( 2) 3 : from 5 to 5 ( 1) 4 : from 6 to 7 ( 2) 5 : from 8 to 9 ( 2) [chris@pineapple ranges-892828]$ perl ranges -M=4 -N=0 N < 1 makes no sense. [chris@pineapple ranges-892828]$ perl ranges -M=4 -N=1 0 : from 0 to 4 ( 5) [chris@pineapple ranges-892828]$ perl ranges -M=4 -N=2 0 : from 0 to 1 ( 2) 1 : from 2 to 4 ( 3) [chris@pineapple ranges-892828]$ perl ranges -M=4 -N=3 0 : from 0 to 0 ( 1) 1 : from 1 to 2 ( 2) 2 : from 3 to 4 ( 2) [chris@pineapple ranges-892828]$ perl ranges -M=4 -N=4 0 : from 0 to 0 ( 1) 1 : from 1 to 1 ( 1) 2 : from 2 to 2 ( 1) 3 : from 3 to 4 ( 2) [chris@pineapple ranges-892828]$ perl ranges -M=4 -N=5 M must be equal to N or larger than N. #### #! perl -slw use strict; our $N //= 2; our $M //= 1e6; die "N < 1 makes no sense.\n\n" if $N < 1; die "M must be equal to N or larger than N.\n\n" if $M < $N; my $size = ( $M + 1 ) / $N; my @ranges; for ( my $i = 0; $i < $M; $i += $size ) { my ( $j, $k ) = ( int $i, int ($i + $size) ); push @ranges, [ $j, $k - 1, $k - $j ]; } ( printf "%2d : from %7d to %7d (%7d)\n", $_, @{ $ranges[ $_ ] } ) for 0 .. $#ranges; __END__