UNPKG

mathball

Version:

A JavaScript library for Competitive Programming

82 lines (71 loc) 1.9 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); } } /*Subtraction across all data-types and data-structures *Function: M.sub(m,n) */ var Complex = require('../complex'); var validate = require('../validation/argument-length'); var subNum = function subNum(a, b) { return a - b; }; var subString = function subString(a, b) { var diff = Number(a) - Number(b); return diff.toString(10); }; var subArray = function subArray(a, b) { var diff = new Array(a.length); for (var i = 0; i < a.length; i++) { var l = a[i] - b[i]; diff.push(l); diff = diff.filter(function (n) { return n; }); } return diff; }; var subMatrix = function subMatrix(a, b) { var diff = [].concat(_toConsumableArray(Array(b.length))).map(function (x) { return Array(b[0].length).fill(0); }); for (var i = 0; i < b.length; i++) { for (var j = 0; j < b[0].length; j++) { diff[i][j] = a[i][j] - b[i][j]; } } return diff; }; var subComplex = function subComplex(a, b) { var diff = { re: 0, im: 0 }; diff.re = a.re - b.re; diff.im = a.im - b.im; return diff; }; var sub = function sub(a, b) { switch (a.constructor) { case Number: return subNum(a, b); case String: return subString(a, b); case Array: if (a[0].constructor === Array) { return subMatrix(a, b); } else { return subArray(a, b); } case Complex: return subComplex(a, b); } }; module.exports = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args.length > 2) { throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n\'sub()\' only accepts two parameters!\n'); } validate(args); return sub(args[0], args[1]); };