UNPKG

mathball

Version:

A JavaScript library for Competitive Programming

57 lines (46 loc) 1.51 kB
'use strict'; 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); } };