Sha256: e13cf72e72b8aaf65858a27e0404f0072f93cbeacdb73f7684f9d30235a6e6ea
Contents?: true
Size: 1.09 KB
Versions: 11
Compression:
Stored size: 1.09 KB
Contents
require_relative '../../deep_dup/deep_dup.rb' class Data_table include Deep_dup # constructor def initialize(data) self.data = data end # row count def row_count self.data.size end # column count def col_count if self.data.empty? return 0 end self.data[0].size end # get element def get(row, col) raise IndexError, "Row out of bounds" unless self.valid_row?(row) raise IndexError, "Column out of bounds" unless self.valid_col?(col) self.deep_dup(self.data[row][col]) end private attr_reader :data # data setter def data=(data) unless data.is_a?(Array) && data.all? {|row| row.is_a?(Array)} raise ArgumentError, "Data must be a two-dimensional array" end @data = data.map{ |row| row.map { |element| deep_dup(element) }} end # row validation def valid_row?(row) row.between?(0, self.row_count - 1) end # column validation def valid_col?(col) col.between?(0, self.col_count - 1) end end
Version data entries
11 entries across 11 versions & 1 rubygems