List-SomeUtils
view release on metacpan or search on metacpan
lib/List/SomeUtils/PP.pm view on Meta::CPAN
return ( $min, $max );
}
sub part (&@) {
my ( $code, @list ) = @_;
my @parts;
push @{ $parts[ $code->($_) ] }, $_ foreach @list;
return @parts;
}
sub bsearch(&@) {
my $code = shift;
my $rc;
my $i = 0;
my $j = @_;
do {
my $k = int( ( $i + $j ) / 2 );
$k >= @_ and return;
lib/List/SomeUtils/PP.pm view on Meta::CPAN
$i = $k + 1;
}
else {
$j = $k - 1;
}
} until $i > $j;
return;
}
sub bsearchidx(&@) {
my $code = shift;
my $rc;
my $i = 0;
my $j = @_;
do {
my $k = int( ( $i + $j ) / 2 );
$k >= @_ and return -1;
lib/List/SomeUtils/PP.pm view on Meta::CPAN
$i = $k + 1;
}
else {
$j = $k - 1;
}
} until $i > $j;
return -1;
}
sub sort_by(&@) {
my ( $code, @list ) = @_;
return map { $_->[0] }
sort { $a->[1] cmp $b->[1] }
map { [ $_, scalar( $code->() ) ] } @list;
}
sub nsort_by(&@) {
my ( $code, @list ) = @_;
return map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, scalar( $code->() ) ] } @list;
}
sub mode (@) {
my %v;
$v{$_}++ for @_;
my $max = max( values %v );
( run in 1.641 second using v1.01-cache-2.11-cpan-49f99fa48dc )