Re: Need a nice way to do this
- To: mathgroup at smc.vnet.net
- Subject: [mg40290] Re: Need a nice way to do this
- From: Mark Fisher <mark at markfisher.net>
- Date: Sun, 30 Mar 2003 04:08:08 -0500 (EST)
- References: <b63r1a$3oc$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Here's my attempt: Different[s_List] := Module[{types, i}, types = Union[s]; Thread[(i /@ types) == 0] /. Equal -> Set; (i[#]++; Tr[i /@ DeleteCases[types, #]]) & /@ s ] --Mark 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. > >