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!