Re: extract from list and keep track
- To: mathgroup at smc.vnet.net
- Subject: [mg62155] Re: extract from list and keep track
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 13 Nov 2005 02:08:35 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <dl4ah1$j48$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Andrea wrote: > 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, Since your question looks like a homework assignment and you did not show whatever you tried, I will show you one possible approaches with a related problem (we look for numbers,say , greater than 10). From this working solution and using a combination of *Mod* built-in functions you should be able to answer your original problem. In[1]:= data = {3, 7, 9, 21, 43, 57, 63, 71, 75, 99} Out[1]= {3, 7, 9, 21, 43, 57, 63, 71, 75, 99} In[2]:= Position[data, _?(#1 > 10 & )] Out[2]= {{4}, {5}, {6}, {7}, {8}, {9}, {10}} In[3]:= data[[Flatten[%]]] Out[3]= {21, 43, 57, 63, 71, 75, 99} In[4]:= TableForm[Transpose[{%%, %}]] In[5]:= DeleteCases[data, _?(#1 > 10 & )] Out[5]= {3, 7, 9} Best regards, /J.M.