Re: Re: Need a nice way to do this
- To: mathgroup at smc.vnet.net
- Subject: [mg40520] Re: Re: Need a nice way to do this
- From: "Carl K. Woll" <carlw at u.washington.edu>
- Date: Wed, 9 Apr 2003 01:32:16 -0400 (EDT)
- Organization: University of Washington
- References: <200304070853.EAA07971@smc.vnet.net> <b6tsjh$n0r$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Bobby,
You didn't mention Hartmut Wolf's solution, but then his function wouldn't
work on your test data. However, his basic idea demonstrates a useful
technique, since he increments a symbol, and not a function of a symbol as
most of the other solutions do. We can incorporate this concept and arrive
at the following function:
carl[s_] := Block[{f},
f[i_] := With[{j = Unique[]}, f[i] := ++j; j = 1];
Range[Length[s]] - f /@ s]
In my timing tests, this function is faster than all of the others that have
been posted.
Carl Woll
Physics Dept
U of Washington
"Dr Bob" <majort at cox-internet.com> wrote in message
news:b6tsjh$n0r$1 at smc.vnet.net...
> We have a new winner! (For two-value lists.)
>
> n = 100000;
> test = Array[Random[Integer] &, n];
> Timing[drbob[test];]
> Timing[drbob2[test];]
> Timing[drbob3[test];]
> Timing[drbob4[test];]
> Timing[andrzej2[test];]
> Timing[kuska2[test];]
> Timing[deLouis2[test];]
>
> {0.781 Second,Null}
> {1.328 Second,Null}
> {1.328 Second,Null}
> {0.735 Second,Null}
> {0.5 Second,Null}
> {1.344 Second,Null}
> {0.328 Second,Null}
>
> Bobby
>
> On Mon, 7 Apr 2003 04:53:53 -0400 (EDT), Dana DeLouis
> <delouis at bellsouth.net> wrote:
>
> > Hello. I'm too new at this to contribute much.
> > I modified Andrzej's second code slightly for two variables. I seem to
> > get
> > a 30% speed increase with the following idea.
> > f3[s_List] := Module[
> > {v, t}, v = Length /@ Split[s]; t = Transpose[Partition[v, 2, 2, {1, 1},
> > 0]]; t = (FoldList[Plus, 0, #1] & ) /@ t; t =
> > Take[Rest[Flatten[Transpose[t]]], Length[v]];
Flatten[MapThread[Table[#1,
> > {#2}] & , {t, v}]]
> > ]
> >
>
>
>
> --
> majort at cox-internet.com
> Bobby R. Treat
>
>
- References:
- Re: Need a nice way to do this
- From: "Dana DeLouis" <delouis@bellsouth.net>
- Re: Need a nice way to do this