Re: Need a nice way to do this
- To: mathgroup at smc.vnet.net
- Subject: [mg40313] Re: Need a nice way to do this
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Mon, 31 Mar 2003 04:01:23 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <b63r1a$3oc$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
UnequalLeft[lst_, symbs_] := Module[{l, i},
Map[
(i = 0;
l[#1] = Map[Function[{x}, If[x =!= #1, i++, i]] , lst]) &,
symbs];
MapIndexed[l[#][[First[#2]]] &, lst]
]
and call it with
UnequalLeft[s, {a, b}]
Regards
Jens
Steve Gray wrote:
>
> Given a list consisting of only two distinct values, such as
> s={a,b,b,a,a,a,b,a,b,a,a}, I want to derive a list of equal length
> g={0,1,1,2,2,2,4,3,5,4,4}. The rule is: for each position
> 1<=p<=Length[s], look at list s and set g[[p]] to the number of
> elements in s to the left of p which are not equal to s[[p]].
> In a more general version, which I do not need now, s would
> not be restricted to only two distinct values.
>
> Thank you for any ideas, including other applications where
> this particular calculation is used. The current application is an
> unusual conjecture in geometry.