Re: Or in a Select question

• To: mathgroup at smc.vnet.net
• Subject: [mg67078] Re: Or in a Select question
• From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
• Date: Fri, 9 Jun 2006 01:06:41 -0400 (EDT)
• Organization: Uni Leipzig
• References: <e68q6i\$d0p\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

Select[pp,
(And @@ (UnsameQ @@@ #)) & ]

look not soooo complicated and the pattern matcher
in

Cases[] should try more than one possibility to
match the

pattern.

Regards

Jens

"János" <janos.lobb at yale.edu> schrieb im
Newsbeitrag news:e68q6i\$d0p\$1 at smc.vnet.net...
| 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?
|
| Interestingly if I just use either the left or
right side of the Or,
| that partial select is working.  For example:
|
| In[65]:=
| Select[pp, #1[[1,1]] =!=
|     #1[[1,2]] & ]
| Out[65]=
| {{{a, b}, {a, c}},
|   {{a, c}, {b, a}},
|   {{b, a}, {b, b}},
|   {{b, c}, {c, a}},
|   {{c, a}, {c, b}},
|   {{c, b}, {c, c}}}
|
| Now if I try with Cases and conditional pattern
matching then the
| selection for sublists with identical elements
works:
|
| In[98]:=
| Cases[pp, {u_, v_} /;
|    u[[1]] === u[[2]] ||
|     v[[1]] === v[[2]]]
| Out[98]=
| {{{a, a}, {a, b}},
|   {{b, a}, {b, b}},
|   {{b, b}, {b, c}},
|   {{c, b}, {c, c}}}
|
| If I change here the === to =!=, then I do not
get again that I expect:
|
| In[103]:=
| Cases[pp,
|   (({u_, v_} /; u[[1]]) =!=
|      u[[2]] || v[[1]]) =!=
|    v[[2]]]
| From In[103]:=
| \!\(\*
|   RowBox[{\(Part::"partd"\),
|     ":", "\<\"Part specification \\!\\(u
\[LeftDoubleBracket] 2 \
| \[RightDoubleBracket]\\) is longer than depth of
object. \
| \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\",
ButtonStyle->\\
| \\\", ButtonFrame->None,
ButtonData:>\\\"General::partd\\\"]\\)\"\>"}]\)
| From In[103]:=
| \!\(\*
|   RowBox[{\(Part::"partd"\),
|     ":", "\<\"Part specification \\!\\(v
\[LeftDoubleBracket] 2 \
| \[RightDoubleBracket]\\) is longer than depth of
object. \
| \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\",
ButtonStyle->\\
| \\\", ButtonFrame->None,
ButtonData:>\\\"General::partd\\\"]\\)\"\>"}]\)
| Out[103]=
| {}
| From In[104]:=
| Part::"partd":"Part specification \!\(u
\[LeftDoubleBracket] 2 \
| \[RightDoubleBracket]\) is longer than depth of
object. \
| \!\(\*ButtonBox[\"More\[Ellipsis]\",
| \", \
| ButtonFrame->None,
ButtonData:>\"General::partd\"]\)"
| From In[104]:=
| Part::"partd":"Part specification \!\(v
\[LeftDoubleBracket] 2 \
| \[RightDoubleBracket]\) is longer than depth of
object. \
| \!\(\*ButtonBox[\"More\[Ellipsis]\",
| \", \
| ButtonFrame->None,
ButtonData:>\"General::partd\"]\)"
|
| if I change =!= to only != then I still do not
get that I expect:
|
| In[108]:=
| Cases[pp, {u_, v_} /;
|    u[[1]] != u[[2]] ||
|     v[[1]] != v[[2]]]
| Out[108]=
| {}
|
| Obviously I am not GETting something here :)
|
|
| János
| P.S.  It is 5.1 on OSX 10.4.6.  I know that Or
evaluates in a non-
| traditional way and looked the Appendix - that
is how I ended up with
| Xor.
|
|
|
|
|
|
| ----------------------------------------------
| Trying to argue with a politician is like
lifting up the head of a
| corpse.
| (S. Lem: His Master Voice)
|

```

• Prev by Date: Re: Using a list as a variable
• Next by Date: Re: Or in a Select question
• Previous by thread: Re: Or in a Select question
• Next by thread: Re: Or in a Select question