mathsteps-experimental-fork
Version:
Step by step math solutions. Experimental Fork
43 lines (38 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const config = require('../config.js');
require('../index.js');
const myNodeToString = require('../newServices/nodeServices/myNodeToString.js');
const parseText = require('../newServices/nodeServices/parseText.js');
const kemuSimplifyCommonServices = require('../simplifyExpression/kemuSimplifyCommonServices.js');
require('../util/regex.js');
require('../node/Type.js');
function extractFractionSides(node) {
if (config.isOperatorNode(node) && node.op === "/" && node.args.length === 2) {
const [num, den] = node.args;
return { numerator: num, denominator: den };
}
return null;
}
const countDivisionFn = (strOrNode) => {
const stringVersion = typeof strOrNode === "string" ? strOrNode : myNodeToString.myNodeToString(strOrNode);
return stringVersion.split("/").length - 1;
};
function getCrossMultiplication(_leftNode, _rightNode) {
if (countDivisionFn(_leftNode) !== 1 || countDivisionFn(_rightNode) !== 1)
return null;
const leftNode = typeof _leftNode === "string" ? kemuSimplifyCommonServices.kemuFlatten(parseText.parseText(_leftNode)) : _leftNode;
const rightNode = typeof _rightNode === "string" ? kemuSimplifyCommonServices.kemuFlatten(parseText.parseText(_rightNode)) : _rightNode;
const leftFrac = extractFractionSides(leftNode);
const rightFrac = extractFractionSides(rightNode);
if (!leftFrac || !rightFrac)
return null;
const leftNum = leftFrac.numerator;
const leftDenom = leftFrac.denominator;
const rightNum = rightFrac.numerator;
const rightDenom = rightFrac.denominator;
const crossLeft = kemuSimplifyCommonServices.kemuFlatten(parseText.parseText(`(${myNodeToString.myNodeToString(leftNum)}) * (${myNodeToString.myNodeToString(rightDenom)})`));
const crossRight = kemuSimplifyCommonServices.kemuFlatten(parseText.parseText(`(${myNodeToString.myNodeToString(leftDenom)}) * (${myNodeToString.myNodeToString(rightNum)})`));
return { crossLeft, crossRight };
}
exports.getCrossMultiplication = getCrossMultiplication;