Re: Re: Select in Math.
- To: mathgroup at smc.vnet.net
- Subject: [mg16611] Re: [mg16518] Re: Select in Math.
- From: "Wolf, Hartmut" <hwolf at debis.com>
- Date: Fri, 19 Mar 1999 12:53:44 -0500
- Organization: debis Systemhaus
- References: <199903160859.DAA09380@smc.vnet.net.>
- Sender: owner-wri-mathgroup at wolfram.com
> > In a message dated 3/8/99 6:43:38 PM, kewjoi at hixnet.co.za writes: > > >My question is how can I extract (select) list of lists in increasing > >order? > >For example: > >In[2]:=list={{{1,2,3,4},{1,2,4,3}},{{2,3,1},{5}},{6,7}} > >Out[2]={{{1,2,3,4},{1,2,4,3}},{{2,3,1},{5}},{6,7}} > > > >I 'd like to obtain only the parts in increased order, therefore the > >result should be : > >Out[3]={{1,2,3,4},{5},{6,7}} > >I did try (Cases, Select, and Extract) but definitely not in proper way. > > > > Eugene, > What is your Problem? Another guess is illustrated by the procedure: In[1]:= list={{{1,2,3,4},{1,2,4,3}},{{2,3,1},{5}},{6,7}} Out[1]= {{{1,2,3,4},{1,2,4,3}},{{2,3,1},{5}},{6,7}} Picking out the sublists at the lowest level: In[2]:= Flatten at MapIndexed[subList, list, {-2}] Out[2]= {subList[{1,2,3,4},{1,1}],subList[{1,2,4,3},{1,2}],subList[{2,3,1},{2,1}], subList[{5},{2,2}],subList[{6,7},{3}]} Removing the clutter: In[3]:= l= %/. subList[x_,_]:>x Out[3]= {{1,2,3,4},{1,2,4,3},{2,3,1},{5},{6,7}} far (and dropping emptied lists): Defining In[4]:= f[x_, y_] := If[(c=Complement[y,Flatten[x]]) =!={},Append[x,c],x] In[5]:= akindofUniqueLists[ll_]:= Module[{subList}, Block[{fl=Flatten at MapIndexed[g, ll, {-2}] /. subList[x_,_]:>x}, Fold[f,{},fl] ]] In[6]:= r0=akindofUniqueLists[list] Out[6]= {{1,2,3,4},{5},{6,7}} If that procedure really does what you want in general, you may decide looking at different test cases: In[7]:= l1={{{5},{{},{4,3}}},{{{2,1},{2,3,4}},{2,5}},{}}; In[8]:= r1=akindofUniqueLists[l1] Out[8]= {{5},{3,4},{1,2}} In[9]:= l2={{{{{1},{1,2}},{1,2,3}},{1,2,3,4}},{0}} In[10]:= r2=akindofUniqueLists[l2] Out[10]= {{1},{2},{3},{4},{0}} If you want your results sorted, then do that In[11]:= p= #1[[1]] < #2[[1]]&; In[12]:= Sort[r0,p] Out[12]= {{1,2,3,4},{5},{6,7}} In[13]:= Sort[r1, p] Out[13]= {{1,2},{3,4},{5}} In[14]:= Sort[r2, p] Out[14]= {{0},{1},{2},{3},{4}} ---Hartmut __________________________________________________ Hartmut Wold, debis Systemhaus, Darmstadt, Germany
- References:
- Re: Select in Math.
- From: BobHanlon@aol.com
- Re: Select in Math.