Re: Filtering a list of list for certain elements that are neighbours
- To: mathgroup at smc.vnet.net
- Subject: [mg88895] Re: Filtering a list of list for certain elements that are neighbours
- From: Steven Siew <stevensiew2 at gmail.com>
- Date: Tue, 20 May 2008 06:53:51 -0400 (EDT)
- References: <g0p4a2$nc4$1@smc.vnet.net>
Thank you everyone who responded to me. I was busy for a few days but now I can respond. I have listed all those who has responded below. A big big thank you to all of you who has contributed. I was amazed at the different ways of doing exactly the same thing. Steven Siew ------------------- I have a list of lists mylist={{a,b,c},{a,c,b},{b,a,c},{b,c,a},{c,a,b},{c,b,a}} I want to filter out all lists that have "a being a neighbor to b". I am looking for the following result. {{a,c,b},{b,c,a}} ------------------- (1) W Craig Carter In[1]:= mylist={{a,b,c},{a,c,b},{b,a,c},{b,c,a},{c,a,b},{c,b,a}} Out[1]= {{a,b,c},{a,c,b},{b,a,c},{b,c,a},{c,a,b},{c,b,a}} In[2]:= neighboring[list_List,a_,b_]:= Or@@Map[MatchQ[#,Sort[{a,b}]]&, Map[Sort,Rest[Transpose[{list,RotateRight[list]}]]]]; In[3]:= notNeighboring[list_List,a_,b_]:=Not[neighboring[list,a,b]]; In[4]:= Select[mylist,notNeighboring[#,a,b]&] Out[4]= {{a,c,b},{b,c,a}} ------------------- (2) Bob Hanlon In[5]:= filter[x_List,n1_,n2_]:= x/.{{___,n1,n2,___}\[Rule]Sequence[],{___,n2,n1,___}\ [Rule]Sequence[]}; In[6]:= filter[mylist,a,b] Out[6]= {{a,c,b},{b,c,a}} ------------------- (3) Curtis Osterhoudt In[7]:= (MatchQ[#1,{a,_,b}]||MatchQ[#1,{b,_,a}]&)/@mylist // Pick[mylist,#]& Out[7]= {{a,c,b},{b,c,a}} ------------------- (4) Curtis Osterhoudt In[8]:= Cases[Cases[mylist,Except[{___,a,b,___}]],Except[{___,b,a,___}]] Out[8]= {{a,c,b},{b,c,a}} ------------------- (5) Carl Wolf MATHEMATICA 6 REQUIRED In[9]:= DeleteCases[mylist, {___, PatternSequence[a, b] | PatternSequence[b, a], ___}] Out[9]= {{a, c, b}, {b, c, a}} ------------------- (6) dh In[10]:= DeleteCases[mylist,{___,a,b,___}|{___,b,a,___}] Out[10]= {{a,c,b},{b,c,a}} ------------------- (7) Szabolcs Horvat In[11]:= Cases[mylist,Except[{___,a,b,___}|{___,b,a,___}]] Out[11]= {{a,c,b},{b,c,a}} ------------------- (8) Jens-Peer Kuska In[12]:= Cases[mylist,{a,___,b}|{b,___,a}] Out[12]= {{a,c,b},{b,c,a}} -------------------