Re: extract from list and keep track
- To: mathgroup at smc.vnet.net
- Subject: [mg62178] Re: extract from list and keep track
- From: "Scout" <Scout at nodomain.com>
- Date: Sun, 13 Nov 2005 21:16:14 -0500 (EST)
- References: <dl4ah1$j48$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
"Andrea" <andrea at radargift.com> ha scritto nel messaggio news:dl4ah1$j48$1 at smc.vnet.net... > I'm trying to write a program for the following. Seems simple, but I'm > unable to to do it: > > I have a list of increasing odd numbers. I want to create a table that > indicates which numbers in this list are 1(mod 8) and 7(mod 8) and what > position in the list these numbers have. > Then I would like to have them removed form the list to get a new > (reduced) > list. > > > Example: 3, 7, 9, 21, 43, 57, 63, 71, 75, 99. I want to form this a > Table: > > 2 7 > 3 9 > 6 57 > 7 63 > 8 71 > > 7 is 7(mod 8) and is the 2nd member in the list, 9 is 1(mod 8) and is the > 3rd member in the list, etc. > > The next list would become, having removed the ones in the table: > > 3, 21, 43, 75, 99 > > And I would be using some other congruence criteria. Etc. > > Thanks, > Andrea > Hi Andrea, there are many ways to solve the problem. I've tried this: In[1]:= data={3,7,9,21,43,57,63,71,75,99}; In[2]:= myQ[x_]:=MemberQ[{1,7},x]; In[3]:= mat=Transpose[{Range[Length[data]],data}]; In[4]:= Pick[mat,Mod[data,8],_?myQ] Out[4]= {{2,7},{3,9},{6,57},{7,63},{8,71}} In[5]:= Complement[mat,%] Out[5]= {{1,3},{4,21},{5,43},{9,75},{10,99}} ~Scout~