class SimpleMatrix < Array def initialize(w, h, val = 0) @w = w @h = h super(w * h, val) end def invCoord(x) return [x % @w, (x / @w).floor] end def coord(a, b) return (b * @w + a) end def get(a, b) self[coord(a, b)] end def put(a, b, x) self[coord(a, b)] = x end def eachCoord self.each_index do |x| yield [invCoord(x), self[x]] end end end =begin a = SimpleMatrix.new(10, 10) puts a.get(9, 9) a.put(5, 6, 15) puts a.get(5, 6) #a.each do |x| # puts x #end puts "---" puts a.invCoord(9) puts "---" puts a.invCoord(10) puts "---" a.eachCoord do |x| puts "---" puts x end =end