[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: "JensPeer Kuska" <kuska at informatik.unileipzig.de>
 Date: Fri, 9 Jun 2006 01:06:41 0400 (EDT)
 Organization: Uni Leipzig
 References: <e68q6i$d0p$1@smc.vnet.net>
 Sender: ownerwrimathgroup 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
 