class Matrizdensa
Public Class Methods
new(*args)
click to toggle source
# File lib/matrixfamily/matrizdensa.rb, line 3 def initialize(*args) #args recogerá en un array las filas de nuestra matriz. @matriz = Array.new() for i in args do if i.size == args.size then #controlamos que es una matriz cuadrada. @matriz.push(i) else raise "La matriz debe ser cuadrada" end end @dimension = args.size #Guardamos en una variable de instancia la dimension de la matriz. end
Public Instance Methods
*(other)
click to toggle source
MULTIPLICACIÓN
# File lib/matrixfamily/matrizdensa.rb, line 42 def *(other) matriz3 = Array.new(@dimension) {|i| #creamos un array de arrays, de dimension @dimension, y cuyo contenido en la posicion[i][j] será el resultado del bloque. Array.new(@dimension) {|j| (0...@dimension).inject(0) do |resultado, k| #El inject(0) inicializa a 0 el primer argumento (resultado). resultado + @matriz[i][k] * other[k][j] #Operacion para realizar la multiplicacion de matrices. end } } end
+(other)
click to toggle source
SUMA
# File lib/matrixfamily/matrizdensa.rb, line 24 def +(other) matriz3 = Array.new(@dimension) {|i| #creamos un array de arrays, de dimension @dimension, y cuyo contenido en la posicion[i][j] será el resultado del bloque. Array.new(@dimension) {|j| @matriz[i][j] + other[i][j] } } end
-(other)
click to toggle source
RESTA
# File lib/matrixfamily/matrizdensa.rb, line 33 def -(other) matriz3 = Array.new(@dimension) {|i| #creamos un array de arrays, de dimension @dimension, y cuyo contenido en la posicion[i][j] será el resultado del bloque. Array.new(@dimension) {|j| @matriz[i][j] - other[i][j] } } end
[](*ij)
click to toggle source
RECIBE ARGUNMENTOS
# File lib/matrixfamily/matrizdensa.rb, line 16 def [] (*ij) return @matriz[*ij] if ij.size == 1 #si el numero de argumentos es solo 1, entonces devolvemos toda la fila indicada. @matriz[ij.first][ij.last] #si son 2, devuelveme el elemento indicado. end
array()
click to toggle source
# File lib/matrixfamily/matrizdensa.rb, line 52 def array @matriz end
coerce(other)
click to toggle source
# File lib/matrixfamily/matrizdensa.rb, line 56 def coerce(other) [self, other] end