def each_open
      self.each { |r, c, _| yield(r, c) if open?(r, c) }
    end
def each_open
      self.each { |r, c, _| yield(r, c) if open?(r, c) }
    end
Iterates over all the open positions of this grid from left to right and top to bottom.

 @example
  g = Grid.new

  g[1, 1] = g[2, 1] = Grid::X
  g[2, 2] = g[3, 1] = Grid::O

  g.each_open do |r, c|
    puts "(#{r}, #{c}) is open"
  end