def apply_rule(study)
      next_grid = @grid.map.with_index do |cell, index|
        @rule.apply_rule(index, @grid, study)
      end
      @grid = next_grid
    end
def apply_rule(study)
      next_grid = @grid.map.with_index do |cell, index|
        @rule.apply_rule(index, @grid, study)
      end
      @grid = next_grid
    end
Apply rule to the entire grid. @grid becomes the next generation.

 study - Study instance.

 Returns nothing.