Not necessarily recommended for an interview response, but gives a rare opportunity to employ List::MoreUtils::part():
c:\@Work\Perl>perl -wMstrict -le "use Test::More 'no_plan'; use Test::NoWarnings; ;; use List::MoreUtils qw(part); ;; sub ascending_runs { my $prev = $_[0]; my $i = 0; return part { ++$i if $_ < $prev; $prev = $_; $i; } @_; }; ;; VECTOR: for my $ar_vector ( [ [ 1..8, 3, 5, 6, 3, 8, 1, 7, 8 ], [ 1..8 ], [ 3, 5, 6 ], [ 3, 8 ], [ 1, 7, 8 ], ], [ [], ], [ [ 0 ], [ 0 ] ], [ [ 1 ], [ 1 ] ], [ [ -7 ], [ -7 ] ], [ [ 0, 7 ], [ 0, 7 ] ], [ [ 7, 0 ], [ 7 ], [ 0 ] ], [ [ -1, 0], [ -1, 0 ] ], [ [ 0, -1 ], [ 0 ], [ -1 ] ], ) { my ($ar_in, @expected) = @$ar_vector; is_deeply [ ascending_runs(@$ar_in) ], \@expected; } " ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 - no warnings 1..10
In reply to Re: Spliting array into nested sequential arrays
by AnomalousMonk
in thread Spliting array into nested sequential arrays
by Hameed
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |