# This file contains the Ruby code from book of # "Data Structures and Algorithms # with Object-Oriented Design Patterns in Ruby" # by Bruno R. Preiss. # # Copyright (c) 2004 by Bruno R. Preiss, P.Eng. All rights reserved. class DenseMatrix < Matrix def initialize(rows, cols) super @array = MultiDimensionalArray.new(rows, cols) end def [](i, j) @array[i,j] end def []=(i, j, value) @array[i,j] = value end def *(mat) assert { numberOfColumns == mat.numberOfRows } result = DenseMatrix.new( numberOfRows, mat.numberOfColumns) for i in 0 ... numberOfRows for j in 0 ... mat.numberOfColumns sum = 0 for k in 0 ... numberOfColumns sum += self[i,k] * mat[k,j] end result[i,j] = sum end end result end end