APIdock / Ruby
/
method

minor

ruby latest stable - Class: Matrix
minor(*param)
public

Returns a section of the matrix. The parameters are either:

  • start_row, nrows, start_col, ncols; OR

  • row_range, col_range

Matrix .diagonal (9, 5, -3).minor (0..1, 0..2)
 => 9 0 0
 0 5 0

Like Array#[], negative indices count backward from the end of the row or column (-1 is the last element). Returns nil if the starting row or column is greater than row_count or column_count respectively.

# File lib/matrix.rb, line 545
 def minor(*param)
 case param.size
 when 2
 row_range, col_range = param
 from_row = row_range.first
 from_row += row_count if from_row < 0
 to_row = row_range.end
 to_row += row_count if to_row < 0
 to_row += 1 unless row_range.exclude_end?
 size_row = to_row - from_row
 from_col = col_range.first
 from_col += column_count if from_col < 0
 to_col = col_range.end
 to_col += column_count if to_col < 0
 to_col += 1 unless col_range.exclude_end?
 size_col = to_col - from_col
 when 4
 from_row, size_row, from_col, size_col = param
 return nil if size_row < 0 || size_col < 0
 from_row += row_count if from_row < 0
 from_col += column_count if from_col < 0
 else
 raise ArgumentError, param.inspect
 end
 return nil if from_row > row_count || from_col > column_count || from_row < 0 || from_col < 0
 rows = @rows[from_row, size_row].collect{|row|
 row[from_col, size_col]
 }
 new_matrix rows, [column_count - from_col, size_col].min
 end

AltStyle によって変換されたページ (->オリジナル) /