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}}}