mathball
Version:
A JavaScript library for Competitive Programming
57 lines (46 loc) • 1.51 kB
JavaScript
;
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var validate = require('../validation/number-array');
function dimValidation(arr) {
var dimension = arr[0].length;
for (var i = 1; i < arr.length; i++) {
if (arr[i].length !== dimension) {
return false;
} else {
continue;
}
}
return true;
}
function multiply(arr1, arr2) {
var noOfRows = arr1.length,
noOfCols = arr2[0].length;
var temp = [],
answer = [],
sum = 0,
i = void 0,
j = void 0,
k = void 0;
for (i = 0; i < noOfRows; i++) {
for (j = 0; j < noOfCols; j++) {
for (k = 0; k < arr2.length; k++) {
sum += arr1[i][k] * arr2[k][j];
}
temp.push(sum);
sum = 0;
}
answer.push(temp);
temp = [];
}
return answer;
}
module.exports = function (arr1, arr2) {
var _ref, _ref2;
validate((_ref = []).concat.apply(_ref, _toConsumableArray(arr1)), 'multiply');
validate((_ref2 = []).concat.apply(_ref2, _toConsumableArray(arr2)), 'multiply');
if (!dimValidation(arr1) || !dimValidation(arr2) || arr1[0].length !== arr2.length) {
return "Matrices are not compatible for multiplication";
} else {
return multiply(arr1, arr2);
}
};