#!/usr/bin/ruby func matrix_multi(a, b) { var m = [[]] for r in ^a { for c in ^b[0] { for i in ^b { m[r][c] := 0 += (a[r][i] * b[i][c]) } } } return m } var a = [ [1, 2], [3, 4], [5, 6], [7, 8] ] var b = [ [1, 2, 3], [4, 5, 6] ] var m = matrix_multi(a, b) for line in m { say line.map{|i|'%3d' % i }.join(', ') } var result = [ [ 9, 12, 15], [19, 26, 33], [29, 40, 51], [39, 54, 69], ] assert_eq(m, result)