Re: Intersection[...,SameTest] ?
- To: mathgroup at smc.vnet.net
- Subject: [mg33076] Re: Intersection[...,SameTest] ?
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Fri, 1 Mar 2002 06:51:29 -0500 (EST)
- References: <a5htcj$hsk$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Konstantin, With a = {1,3, 5, 0,0,8}; b = {7,6, 8, 0,0}; Default Intersection[a,b] gives a the list of elements which occur in both a and b; no element is included twice; and the answer is sorted. Intersection[a, b] {0,8} Your test gives Intersection[a, b, SameTest -> (#1 == 2 #2 & )] {0,0} We might expect {0,1,3}. Change the test so as to use the equivalence relation generated: tst = #1/2^IntegerExponent[#1, 2] === #2/2^IntegerExponent[#2, 2] & ; But we still get the following Intersection[a, b, SameTest -> tst] {0,0,1,3,8} However the following corrects this Union[%, SameTest -> tst] {0,1,3} -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Konstantin L Kouptsov" <klk206 at is5.nyu.edu> wrote in message news:a5htcj$hsk$1 at smc.vnet.net... > > Intersection[..., SameTest->test] seem to do just that. However: > > 1. It is not clear from the manual (book or help browser), what this command > is supposed to return. > > 2. It simply does not work: > > In[83]:= > a={1,2,3,4}; > b={2,4,7,8}; > Intersection[a,b,SameTest->(#1==2*#2&)] > > Out[83]= > {1} > > or more sophisticated: > > In[85]:= > a={1,2,3,4}; > b={2,4,7,8}; > Intersection[a,b,SameTest-> > ((Print[#1,"=?=",#2]||True) > &==2*#2 > &&(Print[True]||True)&) > ] > > 2 =?= 1 > True > 3 =?= 1 > 4 =?= 3 > 2 =?= 1 > True > 4 =?= 3 > 4 =?= 4 > > Out[85]= > {1} > > which does not seem to enumerate all pairs. > > What idea stands behind this function? what is supposed to do? > > (well, for my task I sure could run double For[] cycle, but I am > curious about Intersection[]) >