       Re: Operating on every k-th element of list?

• To: mathgroup at smc.vnet.net
• Subject: [mg37096] Re: [mg37080] Operating on every k-th element of list?
• From: Omega Consulting <omega_consulting at yahoo.com>
• Date: Wed, 9 Oct 2002 05:25:50 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```At 06:17 AM 10/8/2002, AES wrote:
>I want to apply a function to every  k-th  element of a long list and
>add the result to the  k+1  element.
>
>[Actually  k = 3  and I just want to multiply  myList[[k]]  by a
>constant (independent of k)  and add the result to  myList[[k+1]]  for
>every value of  k  that's divisible by 3.]
lst = Table[Random[], {20}]

fact = 2

Here's a matrix method. f represents an indexed element of a matrix.

f[x_,x_] := If[Mod[x,3]==0, fact, 1]

f[x_, y_] := If[Mod[x,3]==0&&y\[Equal]x+1, 2, 0]

Create a matrix from the elements.

arr = Array[f,{Length[lst], Length[lst]}];

Then matrix multiply.

newlst1 = lst.arr

Here's another way with the highly underrated MapIndexed.
Create pairs of the nth and n-1th values.

pairs = Transpose[{lst, Prepend[Drop[lst,-1],0]}]

Create a function that takes the nth value (val), the n-1th value
(prevval), and the index (num).

multlst[{val_, prevval_}, {num_}] :=
Switch[Mod[num, 3],
0, fact*val,
1,val+ fact*prevval,
2, val
]

Then, MapIndexed across the pairs.

newlst2=MapIndexed[multlst, pairs]

--------------------------------------------------------------
Omega Consulting
"The final answer to your Mathematica needs"

Spend less time searching and more time finding.
http://www.wz.com/internet/Mathematica.html

```

• Prev by Date: Re: Operating on every k-th element of list?
• Next by Date: Re: Operating on every k-th element of list?
• Previous by thread: Re: Operating on every k-th element of list?
• Next by thread: Re: Operating on every k-th element of list?