def initialize( line_or_array, column = 0, val = 0 )
if line_or_array.kind_of?(Array)
line = line_or_array.size
column = nil
line_or_array.size.times do |l|
unless line_or_array[l].kind_of?(Array)
raise ArgumentError, "Wrong matrix definition"
end
column = line_or_array[l].size if column.nil?
unless line_or_array[l].size == column
raise ArgumentError, "Wrong matrix definition"
end
line_or_array[l].size.times do |c|
unless line_or_array[l][c].kind_of?(Numeric)
raise ValueError, "Element at [#{l+1}, #{c+1}] is not a number"
end
end
end
@matrix = line_or_array
@line = line
@column = column
elsif line_or_array.kind_of?(Integer) and column > 0
@matrix = Array.new(line_or_array)
@matrix.size.times do |l|
@matrix[l] = Array.new(column)
@matrix[l].size.times do |c|
@matrix[l][c] = val
end
end
@line = line_or_array
@column = column
else
raise ArgumentError, "Wrong matrix definition"
end
end