On Thu, Mar 07, 2002 at 04:59:54PM -0500, Charles Lu wrote:
>   I am trying to think of a quick and simple way to find out if a number 
> appears only in consecutive fashion once.  In other words, a function that 
> will return true if a particular number in a list appears only 
> consecutively once.
> 
> For example:  Does "2" appear only in consecutive fashion?
> 
> (1,2,2,2,3)  = True;

This result is inconsistent with your description and your further examples;
2 occurs twice.  I'll assume this example is incorrect.


>    (1,2,2,3,4,2) = False 
>
> (1,2,2,3,4,2,2,) =  False <-- consecutive but appears more than once
>
> (1,2,3,4,5,2,2,2,2,2) = False ( see previous reason)
> 
> (1,2,3,4)  = true <---  appearing only once is okay


I used a subroutine because of the ease of returning a value.  You should
adapt it to taste.

    sub is_consecutive {
        my $last = shift;
        foreach my $num (@_) {
            return 0 if $num != $last + 1;
            $last = $num;
        }

        return 1;
    }


You didn't include an example such as:

    1,2,4,5

but you said consecutive, so that list must result in a false, and does with
the code I showed.

Also, none of your examples included fractional numbers (e.g. 1.2, 4.5,
etc.) so I assumed you're only dealing with integers.

 
Michael
--
Administrator                      www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to