List diddling
- To: mathgroup at yoda.physics.unc.edu
- Subject: List diddling
- From: Richard Mercer <richard at rmercer.wright.edu>
- Date: Tue, 13 Jul 1993 09:10:44 -0400
Martin McClain requests:
>Dear MathGroupers:
>I need a pure function that operates on {x,{a,b,c}},
>where x, a, b, and c are all simple lists. The output must be
>{Ints[x,a],Ints[x,b],Ints[x,c]}, where Ints means Intersection.
Try this one:
Fudge[{x_List,lsts__List}]:=
Map[(Intersection @@ #)&,Prepend[List[#],x]& /@ lsts];
x = {2,3,5,7,11,13};
a = {1,2,3,4,5};
b = {6,7,8,9,10};
c = {11,12,13,14,15};
In[1]:= Fudge[{x,{a,b,c}}]
Out[1]= {{2, 3, 5}, {7}, {11, 13}}
Obviously this will work with any number of lists replacing {a,b,c}.
Experienced Mathematica programmers know better than to claim a
"shortest" solution! Perhaps something more elegant will come along.
(Incidentally, I have written a routine called ListThread which
threads together lists of different lengths. I'd be glad to send it
along if you wish.)
Richard Mercer