青山です。

現在問題になっているのがどの部分か読み切れていないのですが、なんとなく、
Array のサイズを知る方法が無い事が問題になっているような気がします。
こんな感じのがあったりすると少し問題解決に役立ったりするでしょうか?

class Array
  def select
    case s = yield(self.length - 1)
    when Range
      self[s]
    when Array
      tmp = []
      for i in s
        tmp.push(self[i])
      end
      tmp
    end
  end
end

p [1,2,3,4,5].select{|last| 0..(last-1) } # ==> [1, 2, 3, 4]
p [1,2,3,4,5].select{ [1,3] }             # ==> [2, 4]

(現在も Array に何か select が定義されていますが、これ、何でしょう?)


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>