RE: variation on Split

• To: mathgroup at smc.vnet.net
• Subject: [mg12684] RE: [mg12636] variation on Split
• Date: Mon, 1 Jun 1998 23:16:55 -0400
• Sender: owner-wri-mathgroup at wolfram.com

```lucb"@ea.com   wrote:

|
|Split[{a,b,c,d,d,e,f,g,g,h,h,h}] returns
|{{a},{b},{c},{d,d},{e},{f},{g,g},{h,h,h}} |
|What do you have to do to get:
|{{a,b,c},{d,d},{e,f},{g,g},{h,h,h}} |?
|

Here is the way I would do it.
__________________________________

In[1]:=
lst=Split[{a,b,c,d,d,e,f,g,g,h,h,h}]

Out[1]=
{{a},{b},{c},{d,d},{e},{f},{g,g},{h,h,h}}

The next line splits the list into adjacent lists that have only one
element  and other lists that have more than one element.

In[2]:=
ss=Split[lst,(Length[#1]===Length[#2]===1)&]

Out[2]=
{{{a},{b},{c}},{{d,d}},{{e},{f}},{{g,g}},{{h,h,h}}}

Now I apply the function Join to each sublist above.

In[3]:=
Apply[Join,ss,1]

Out[3]=
{{a,b,c},{d,d},{e,f},{g,g},{h,h,h}}

________________________________
The next line is a new function that puts all the above in a module.

In[4]:=
Split2[lst_List]:=Module[{ss},
ss=Split[ Split[lst], (Length[#1]===Length[#2]===1)&];
Apply[Join, ss, 1]
]

In[5]:=
Split2[{a,b,c,d,d,e,f,g,g,h,h,h}]

Out[5]=
{{a,b,c},{d,d},{e,f},{g,g},{h,h,h}}

________________________________________ Members of the group can
explain further if you don't understand "
(Length[#1]===Length[#2]===1)& ".

Ted Ersek

```

• Prev by Date: Re: Exporting Graphics to EPS
• Next by Date: Re: Displayed characters not matching typed characters (help!)
• Previous by thread: Re: variation on Split
• Next by thread: Re: Mathematica's nesting.