Ruby で作った。
まず、ある整数n を取得して、インデックスをnだけ後ろにずらす、関数を作る

idx = 0 で、n = 2 なら、idx = 2 になる。
idx = 2 で、n = 3 なら、idx = 5 になる。
idx = 5 で、n = 2 なら、idx = 7 になる

次のインデックスを求める関数。
引数には、今のインデックスとその値(数字)を渡す。
例えば、今のインデックスが0 で、値が2 なら、次のインデックスは2 になる

def nextIndex(index, value)
return index + value
end

numbers = [2,2,3,3,3,2,2,2,2,1]
results = []
idx = 0

loop do
if idx >= numbers.length
break
else
results.push numbers[idx]
end
idx = nextIndex(idx, numbers[idx])
end

p results #=> [2, 3, 2, 2, 1]