Re: Detect pairs, tripples in a list
- To: mathgroup at smc.vnet.net
- Subject: [mg22491] Re: [mg22442] Detect pairs, tripples in a list
- From: "Tomas Garza" <tgarza at mail.internet.com.mx>
- Date: Wed, 8 Mar 2000 02:22:32 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hans Friedrich Steffani [hans.steffani at e-technik.tu-chemnitz.de] wrote:
> I have a list with many 0s and some 1s. Now I want to detect pairs
> and tripples of 1s with no 0 between to substitute them by a single 1
> and the apropriate number of 0. How can this be done?
Am I right in assuming that you want to detect not only pairs and triples,
but all n-tuples, and substitute each of these as stated? If that is the
case, then you may define
In[1]:=
f[x_, n_] := x /. Table[1, {n}] -> Prepend[Table[0, {n - 1}], 1]
and then use
Flatten[Fold[f, Split[myList], Range[Length[myList]]]]
Example:
In[2]:=
myList = Table[Random[Integer, {1, 0}], {20}]
Out[2]=
{0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1}
In[3]:=
Flatten[Fold[f, Split[myList], Range[Length[myList]]]]
Out[3]=
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}
Tomas Garza
Mexico City