Feature #2771

Matrix: constructor to build with block

Added by Marc-Andre Lafortune almost 2 years ago. Updated 10 months ago.

[ruby-core:28272]
Status:Closed Start date:02/21/2010
Priority:Normal Due date:
Assignee:Marc-Andre Lafortune % Done:

100%

Category:lib
Target version:1.9.2

Description

I believe the following simple constructor could be a helpful addition to matrix.rb

class Matrix
  #
  # Creates a matrix of +row_size+ x +column_size+.
  # It fills the values by calling the given block,
  # passing the current row and column.
  #
  #   m = Matrix.build(2, 4) {|row, col| col - row }
  #     => Matrix[[0, 1, 2, 3], [-1, 0, 1, 2]]
  #   m = Matrix.build(3) { rand }
  #     => a 3x3 matrix with random elements
  #
  def self.build(row_size, column_size = row_size)
    raise ArgumentError if row_size < 0 || column_size < 0
    return to_enum :build, row_size, column_size unless block_given?
    rows = row_size.times.map do |i|
      column_size.times.map do |j|
        yield i, j
      end
    end
    new rows, column_size
  end
end

Associated revisions

Revision 27315
Added by Marc-Andre Lafortune almost 2 years ago

* lib/matrix.rb: New method Matrix.build [ruby-core:28272]

History

Updated by Keiju Ishitsuka almost 2 years ago

Hi, Marc-André

Please commit it.

Updated by Marc-Andre Lafortune almost 2 years ago

  • Status changed from Open to Assigned
  • Assignee changed from Keiju Ishitsuka to Marc-Andre Lafortune

Updated by Marc-Andre Lafortune almost 2 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100
This issue was solved with changeset r27315.
Marc-Andre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Also available in: Atom PDF