例えばインデックス表す式を3n-2としたときに、その式に適合するインデックスの要素だけを配列から抜き出したいといった場合があります。

(概念的にはこんな感じ)
[a,b,c,d,e,f,g]  => [b,e] ※ 1 <= n <= 2 のとき

最初は以下のようなものを考えてみたのですが、これだとnの範囲をあらかじめ分かっていないと使えません。

a = [:a, :b, :c, :d, :e, :f, :g]
b = []
1.upto(2){|n| b << a[n * 3 - 2]}
#=> 1
b.compact
#=> [:b, :e]

泥臭いやり方でも、スマートなやり方でも、どちらでも良いので、nの範囲をあらかじめ考えずともできる方法を探しているのですが思いつきません。
言語リファレンスを見ながら考えてはみたのですが、試しているうちに混乱してしまいました。
初歩的な質問かもしれませんが、どなたか良い解法がありましたら教えてください。