Re: Re: finding the position of a pattern in list
- To: mathgroup at smc.vnet.net
- Subject: [mg64617] Re: Re: [mg64583] finding the position of a pattern in list
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Fri, 24 Feb 2006 00:18:12 -0500 (EST)
- Reply-to: hanlonr at cox.net
- Sender: owner-wri-mathgroup at wolfram.com
Here is a faster method than the one that I first suggested. pos1[data_]:=Position[Partition[data,2,1],{0,1}]//Flatten; pos2[data_]:=Position[RotateLeft[data]-data,1]//Flatten; data=Table[Random[Integer],{100000}]; pos1[data]==pos2[data] True Timing[pos1[data]][[1]] 0.39032 Second Timing[pos2[data]][[1]] 0.128189 Second Bob Hanlon > > From: Bob Hanlon <hanlonr at cox.net> To: mathgroup at smc.vnet.net > Subject: [mg64617] Re: [mg64583] finding the position of a pattern in list > > data={0,0,1,1,1,0,0,1,1,1,0}; > > Position[Partition[data,2,1],{0,1}]//Flatten > > {2,7} > > > Bob Hanlon > > > > > From: Gang Ma <contactmagang at gmail.com> To: mathgroup at smc.vnet.net > > Subject: [mg64617] [mg64583] finding the position of a pattern in list > > > > Hi, > > I am working on a program to do the following: My data is a list of 0 > > and 1. For example, {0,0,1,1,1,0,0,1,1,1,0}. I want to find the > > positions of all the pattern of {0,1}. In my previous example, the > > first {0,1} is at 2 and and the second {0,1} appears at 7. I can > > write a loop to do this, but I have several thousands such lists, > > the computation will be time consuming using loop. > > > > My question is whether it is possible to use the pattern match to do > > this quickly. If not for the list, do I need to convert the list to > > string then use some pattern match for string? Thank you very much. > > > > regards, > > > > Gang Ma > > > > > > > > >