R, 7845
function(x,r){for(i in 1:r){n=sum(x|T);x=c(x[1],filterx=c(x,c(1,1)0)[-n]+c(0,x[n]x)};x} Example usage:
fun <- function(x,r){for(i in 1:r){n=sum(x|T);x=c(x[1],filterx=c(x,c(1,1)0)[-n]+c(0,x[n]x)};x} fun(c(3, 1, 2), 1) [1] 3 4 3 2 fun(c(3, 1, 2), 2) [1] 3 7 7 5 2 fun(c(3, 1, 2), 5) [1] 3 16 37 50 45 28 11 2