Re: Re: Counting Runs

```I timed the posted methods except Andrzej's -- it's the only one that works only for +1/-1 data -- plus a couple of my own that I haven't posted. David Park's method seems the same as the fastest method, hanlon3. I modified all methods to return a pair {x, number of runs in x} for each x in the data.

Two of Bob Hanlon's methods beat all the rest of us -- but one of his is the slowest method, too.

I've posted a notebook at the Run Counts link at:

http://eclecticdreams.net/DrBob/mathematica.htm

Bobby

On Fri, 5 Nov 2004 02:17:54 -0500 (EST), Selwyn Hollis <sh2.7183 at misspelled.erthlink.net> wrote:

> Hi Greg,
>
> The following seems to work pretty well:
>
>    runscount[lst_?VectorQ] :=
>      Module[{elems, flips, counts},
>        elems = Union[lst];
>        flips = Cases[Partition[lst, 2, 1], {x_, y_} /; x =!= y];
>        counts = {#, Count[Most[flips], {#, _}]} & /@ elems;
>        {x1, x2} = Last[flips];
>        counts /. {{x1, y_} -> {x1, y+1}, {x2, y_} -> {x2, y+1}}]
>
> Example:
>
>   Table[Random[Integer, {1, 5}], {20}]
>   runscount[%]
>
>       {2, 2, 3, 1, 3, 2, 2, 3, 1, 1, 2, 3, 1, 1, 3, 1, 1, 2, 2, 2}
>
>       {{1, 4}, {2, 4}, {3, 5}}
>
>
> -----
> Selwyn Hollis
> http://www.appliedsymbols.com
>
>
> On Nov 4, 2004, at 1:50 AM, Gregory Lypny wrote:
>
>> Looking for an elegant way to count runs to numbers in a series.
>> Suppose I have a list of ones and negative ones such as
>> 	v={1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1}.
>> I'd like to create a function that counts the number of runs of 1s and
>> -1s, which in this case is 3 and 2.
>>
>> 	Greg
>>
>>
>
>
>
>

--
DrBob at bigfoot.com
www.eclecticdreams.net

```

• Prev by Date: Re: Re: Garbage collection problem
• Next by Date: Re: normal digits base 10 ( used to be: bimodal ditribution form counting signs of Pi digits differences)
• Previous by thread: Re: Counting Runs
• Next by thread: Re: Re: Re: Counting Runs