Re: Re: Re: Re: finding the position of a pattern in list (Correction)

*To*: mathgroup at smc.vnet.net*Subject*: [mg64724] Re: [mg64660] Re: [mg64619] Re: Re: [mg64583] finding the position of a pattern in list (Correction)*From*: ggroup at sarj.ca*Date*: Wed, 1 Mar 2006 04:11:42 -0500 (EST)*References*: <200602240518.AAA17528@smc.vnet.net> <C187B55A-4417-481E-A6E7-394BCE24F6E5@mimuw.edu.pl> <200602250753.CAA13989@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On Sat, 25 Feb 2006 02:53:21 -0500 (EST), Carl K. Woll wrote <snip> > Thanks for advocating my "method" while I've been attending another > matter. There's been a new addition to my family, and I've been > enjoying that. Congratulations! > Concerning your implementation, I would construct the sparse array > differently, avoiding ListConvolve: I'm trying to understand what this method is doing: > pos5[li_] := Module[{m, r}, > m = Most[li]; > r = Rest[li]; > SparseArray[(r - m)r] /. SparseArray[_,_,_,p_]:>Flatten[p[[2,2]]] > ] <snip> If I understand correctly, the basic method is: 1. Construct a list "(r-m)r" which has the value 1 anywhere that there is a 0->1 transition, and zero everywhere else. 2. Create a SparseArray, which will effectively extract the positions of the elements = 1. 3. Extract this positional information using pattern matching. What isn't clear to me from the documentation is; what is the structure of the data stored in the pattern p? In other words, how would you know that you want element p[[2,2]] as opposed to some other element of p? Thanks!