Re: Or in a Select question
- To: mathgroup at smc.vnet.net
- Subject: [mg67109] Re: Or in a Select question
- From: "Ray Koopman" <koopman at sfu.ca>
- Date: Fri, 9 Jun 2006 01:09:21 -0400 (EDT)
- References: <e68q6i$d0p$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
János wrote: > Hi, > > I have a list > > lst={a,b,c} > > I make another list from it the following way: > > In[2]:= > pp = Partition[Tuples[lst, 2], 2, 1] > Out[2]= > {{{a, a}, {a, b}}, > {{a, b}, {a, c}}, > {{a, c}, {b, a}}, > {{b, a}, {b, b}}, > {{b, b}, {b, c}}, > {{b, c}, {c, a}}, > {{c, a}, {c, b}}, > {{c, b}, {c, c}}} > > From here I would like to select all the elements whose sublists > contain only different elements. So my "logical" selection was: > > In[54]:= > Select[pp, #1[[1,1]] =!= #1[[1,2]] || #1[[2,1]] =!= #1[[2,2]] & ] > Out[54]= > {{{a, a}, {a, b}}, > {{a, b}, {a, c}}, > {{a, c}, {b, a}}, > {{b, a}, {b, b}}, > {{b, b}, {b, c}}, > {{b, c}, {c, a}}, > {{c, a}, {c, b}}, > {{c, b}, {c, c}}} > > Well, that did not do any damage to the list. > After some time I came up with this one: > > In[49]:= > Complement[pp, Select[pp, Xor[#1[[1,1]] =!= #1[[1,2]], #1[[2,1]] =!= #1[[2,2]]] & ]] > Out[49]= > {{{a, b}, {a, c}}, > {{a, c}, {b, a}}, > {{b, c}, {c, a}}, > {{c, a}, {c, b}}} > > That looks OK, but also looks too complicated. > Why my "logical" one does not work here? Are you sure you don't want AND instead of OR ? In[4]:= Select[pp, UnsameQ@@#[[1]] && UnsameQ@@#[[2]] & ] Out[4]= {{{a,b},{a,c}}, {{a,c},{b,a}}, {{b,c},{c,a}}, {{c,a},{c,b}}}