#!/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)