|
[Date Index]
[Thread Index]
[Author Index]
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->\\
| \"RefGuideLinkText\
| \\\", 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->\\
| \"RefGuideLinkText\
| \\\", 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]\",
ButtonStyle->\"RefGuideLinkText
| \", \
| 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]\",
ButtonStyle->\"RefGuideLinkText
| \", \
| 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 :)
|
| Thanks ahead,
|
| 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
|