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 )