Add an extra datum to @probs and the output layout goes a bit ga ga as well.

$ cat spw759180_NetWallah #!/usr/bin/perl # use strict; use warnings; my @probs =(0,0.1,0.53,0.51,0.59,0.67,0.2,0.04,0.05,0.56,0.89,0.75,0.6 +); my $t; print $_ . (",","\n")[$t=1-$t] for grep {($probs[$_] >=.5 .. $probs[$_]> .5) and $t=!$t } 0..$#probs $ ./spw759180_NetWallah 2 4,9 11,$

I think you have to separate the task of finding the in-range values from that of determining the range boundaries as you have no idea what the next datum will be when processing the current one. Also, I think the start and stop conditions of the flip-flop should be consistent (and both > 0.5 since that is the requirement in the OP). In the following code I've added some data to show how single-element ranges are treated.

use strict; use warnings; my @probs = ( 0, 0.1, 0.53, 0.51, 0.59, 0.67, 0.2, 0.04, 0.05, 0.56, 0.89, 0.75, 0.1, 0.51, 0.6, 0.2, 0.7, ); my @inRange = grep { $probs[ $_ ] > 0.5 .. $probs[ $_ ] > 0.5 } 0 .. $#probs; my @starts = map { $inRange[ $_ ] } grep { $_ == 0 || $inRange[ $_ ] - $inRange[ $_ - 1 ] != 1 } 0 .. $#inRange; my @ends = map { $inRange[ $_ ] } grep { $_ == $#inRange || $inRange[ $_ + 1 ] - $inRange[ $_ ] != 1 } 0 .. $#inRange; printf qq{%3d%3d\n}, $starts[ $_ ], $ends[ $_ ] for 0 .. $#starts;

The output.

2 5 9 11 13 14 16 16

I hope this is of interest.

Cheers,

JohnGG


In reply to Re^2: printing array positions that match a condition by johngg
in thread printing array positions that match a condition by coldy

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.