..., 0.3, 0.58, 0.2, ...
####
20
####
20 20
####
#!/usr/bin/perl
use strict;
use warnings;
my @probs;
{
local $/;
@probs = split " ", ;
}
my $segs = get_ranges( sub { return ( $_[0] > 0.5 ) },
\@probs );
print "$_\n" for ( @$segs );
sub get_ranges
{
my ( $cmp, $list ) = @_;
my @ranges = ();
my @current_range = ();
my $endpoint = 0;
for ( 0 .. $#$list ) {
if ( $cmp->( $$list[$_] )) {
$current_range[$endpoint] = $_;
$endpoint = 1;
}
elsif ( @current_range ) {
push @ranges, "@current_range";
@current_range = ();
$endpoint = 0;
}
}
return \@ranges;
}
__DATA__
0 0.1 0.53 0.51 0.59 0.67 0.2
0.04 0.05 0.56 0.89 0.75
0.3 0.58 0.25