math-exercises 2.2.45 → 2.2.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/exercises/math/calcul/fractions/fractionsSum.js +1 -1
- package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.js +12 -0
- package/lib/exercises/math/complex/argumentFromAlgebraicComplex.d.ts.map +1 -1
- package/lib/exercises/math/complex/argumentFromAlgebraicComplex.js +4 -5
- package/lib/exercises/math/derivation/derivative/sqrtCompositionDerivation.js +1 -1
- package/lib/exercises/math/functions/affines/affineExpressionFromTwoImages.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/affineExpressionFromTwoImages.js +35 -19
- package/lib/exercises/math/geometry/cartesian/readAbscissOnLine.js +3 -3
- package/lib/exercises/math/geometry/cartesian/readAbscissOnSemiLine.js +3 -3
- package/lib/exercises/math/geometry/euclidian/choseMethodToCalculateLength.d.ts +1 -0
- package/lib/exercises/math/geometry/euclidian/choseMethodToCalculateLength.d.ts.map +1 -0
- package/lib/exercises/math/geometry/euclidian/choseMethodToCalculateLength.js +79 -0
- package/lib/exercises/math/geometry/euclidian/index.d.ts +1 -0
- package/lib/exercises/math/geometry/euclidian/index.d.ts.map +1 -0
- package/lib/exercises/math/geometry/euclidian/index.js +1 -0
- package/lib/exercises/math/geometry/index.js +1 -0
- package/lib/exercises/math/geometry/pythagore/index.d.ts +1 -0
- package/lib/exercises/math/geometry/pythagore/index.d.ts.map +1 -1
- package/lib/exercises/math/geometry/pythagore/index.js +1 -0
- package/lib/exercises/math/geometry/pythagore/isTriangleRight.d.ts +11 -0
- package/lib/exercises/math/geometry/pythagore/isTriangleRight.d.ts.map +1 -0
- package/lib/exercises/math/geometry/pythagore/isTriangleRight.js +108 -0
- package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.d.ts.map +1 -1
- package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.js +3 -3
- package/lib/exercises/math/matrices/matrixInversibilityDomain.js +4 -4
- package/lib/exercises/math/percent/reciprocalPercentage.d.ts.map +1 -1
- package/lib/exercises/math/percent/reciprocalPercentage.js +32 -17
- package/lib/exercises/math/trigonometry/equationCosOnRandomInterval.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/mainAngleMeasure.js +1 -1
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/math/sets/intervals/intervals.d.ts +1 -1
- package/lib/math/utils/geometry/pythagoricianTriplets.d.ts +2 -0
- package/lib/math/utils/geometry/pythagoricianTriplets.d.ts.map +1 -0
- package/lib/math/utils/geometry/pythagoricianTriplets.js +21 -0
- package/lib/playground.d.ts.map +1 -1
- package/lib/playground.js +4 -5
- package/lib/tree/nodes/algebraicNode.d.ts +1 -0
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/algebraicNode.js +3 -0
- package/lib/tree/nodes/complex/complexNode.d.ts +1 -0
- package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
- package/lib/tree/nodes/complex/complexNode.js +3 -0
- package/lib/tree/nodes/equations/equalNode.d.ts +2 -0
- package/lib/tree/nodes/equations/equalNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/equalNode.js +6 -1
- package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
- package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
- package/lib/tree/nodes/equations/multiEqualNode.d.ts +1 -0
- package/lib/tree/nodes/equations/multiEqualNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/multiEqualNode.js +3 -0
- package/lib/tree/nodes/functions/integralNode.d.ts +1 -0
- package/lib/tree/nodes/functions/integralNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/integralNode.js +3 -0
- package/lib/tree/nodes/geometry/pointNode.d.ts +1 -0
- package/lib/tree/nodes/geometry/pointNode.d.ts.map +1 -1
- package/lib/tree/nodes/geometry/pointNode.js +3 -0
- package/lib/tree/nodes/geometry/vectorNode.d.ts +1 -0
- package/lib/tree/nodes/geometry/vectorNode.d.ts.map +1 -1
- package/lib/tree/nodes/geometry/vectorNode.js +3 -0
- package/lib/tree/nodes/inequations/inequationNode.d.ts +1 -0
- package/lib/tree/nodes/inequations/inequationNode.d.ts.map +1 -1
- package/lib/tree/nodes/inequations/inequationNode.js +3 -0
- package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
- package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
- package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
- package/lib/tree/nodes/node.d.ts +1 -0
- package/lib/tree/nodes/node.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/percentNode.d.ts +1 -0
- package/lib/tree/nodes/numbers/percentNode.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/percentNode.js +3 -0
- package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/multiplyNode.js +4 -0
- package/lib/tree/nodes/sets/belongsNode.d.ts +1 -0
- package/lib/tree/nodes/sets/belongsNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/belongsNode.js +3 -0
- package/lib/tree/nodes/sets/discreteSetNode.d.ts +1 -0
- package/lib/tree/nodes/sets/discreteSetNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/discreteSetNode.js +3 -0
- package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
- package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/intervalNode.js +3 -0
- package/lib/tree/nodes/sets/unionIntervalNode.d.ts +1 -0
- package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/unionIntervalNode.js +3 -0
- package/lib/tree/parsers/affineParser.js +1 -1
- package/lib/tree/parsers/equationSolutionParser.d.ts +3 -0
- package/lib/tree/parsers/equationSolutionParser.d.ts.map +1 -0
- package/lib/tree/parsers/equationSolutionParser.js +29 -0
- package/lib/tree/parsers/latexParser.d.ts +4 -1
- package/lib/tree/parsers/latexParser.d.ts.map +1 -1
- package/lib/tree/parsers/latexParser.js +54 -6
- package/package.json +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseLatex = exports.tokenize = void 0;
|
|
3
|
+
exports.parseLatex = exports.parseAlgebraic = exports.tokenize = void 0;
|
|
4
|
+
const equalNode_1 = require("../nodes/equations/equalNode");
|
|
4
5
|
const oppositeNode_1 = require("../nodes/functions/oppositeNode");
|
|
5
6
|
const sqrtNode_1 = require("../nodes/functions/sqrtNode");
|
|
7
|
+
const inequationNode_1 = require("../nodes/inequations/inequationNode");
|
|
6
8
|
const numberNode_1 = require("../nodes/numbers/numberNode");
|
|
7
9
|
const piNode_1 = require("../nodes/numbers/piNode");
|
|
8
10
|
const addNode_1 = require("../nodes/operators/addNode");
|
|
@@ -24,6 +26,7 @@ const functions = [
|
|
|
24
26
|
const operators = ["+", "-", "\\div", "\\times", "^"];
|
|
25
27
|
//cmds childless, like \\pi
|
|
26
28
|
const symbols = [{ tex: "\\pi", node: piNode_1.PiNode }];
|
|
29
|
+
const separators = ["=", "<", ">", "\\leq", "\\geq"];
|
|
27
30
|
const isDyck = (tokens) => {
|
|
28
31
|
const brackets = tokens.filter((el) => el === "(" || el === ")");
|
|
29
32
|
while (brackets.length) {
|
|
@@ -50,7 +53,7 @@ const tokenize = (latex) => {
|
|
|
50
53
|
const char = latex[i];
|
|
51
54
|
if (char === " ")
|
|
52
55
|
continue;
|
|
53
|
-
const match = char.match(/[\+\-\(\)\^a-zA-Z_
|
|
56
|
+
const match = char.match(/[\+\-\(\)\^a-zA-Z_=<>\{\}]/);
|
|
54
57
|
if (match) {
|
|
55
58
|
tokens.push(char);
|
|
56
59
|
continue;
|
|
@@ -72,14 +75,14 @@ const tokenize = (latex) => {
|
|
|
72
75
|
return tokens;
|
|
73
76
|
};
|
|
74
77
|
exports.tokenize = tokenize;
|
|
75
|
-
const
|
|
78
|
+
const parseAlgebraic = (latex) => {
|
|
76
79
|
const formattedLatex = latex
|
|
77
80
|
.replaceAll("\\left", "")
|
|
78
81
|
.replaceAll("\\right", "");
|
|
79
|
-
const tokens = (0, exports.tokenize)(formattedLatex);
|
|
80
|
-
if (!isDyck(tokens))
|
|
81
|
-
throw Error("Problème de parenthèses.");
|
|
82
82
|
try {
|
|
83
|
+
const tokens = (0, exports.tokenize)(formattedLatex);
|
|
84
|
+
if (!isDyck(tokens))
|
|
85
|
+
throw Error("Problème de parenthèses.");
|
|
83
86
|
const parsed = buildTree(tokens);
|
|
84
87
|
return parsed;
|
|
85
88
|
}
|
|
@@ -87,6 +90,51 @@ const parseLatex = (latex) => {
|
|
|
87
90
|
throw err;
|
|
88
91
|
}
|
|
89
92
|
};
|
|
93
|
+
exports.parseAlgebraic = parseAlgebraic;
|
|
94
|
+
const parseLatex = (latex) => {
|
|
95
|
+
const formattedLatex = latex
|
|
96
|
+
.replaceAll("\\left", "")
|
|
97
|
+
.replaceAll("\\right", "");
|
|
98
|
+
try {
|
|
99
|
+
const tokens = (0, exports.tokenize)(formattedLatex);
|
|
100
|
+
if (!isDyck(tokens))
|
|
101
|
+
throw Error("Problème de parenthèses.");
|
|
102
|
+
if (tokens.some((el) => separators.includes(el))) {
|
|
103
|
+
const groups = [];
|
|
104
|
+
for (const token of tokens) {
|
|
105
|
+
if (separators.includes(token)) {
|
|
106
|
+
if (typeof groups[groups.length - 1] === "string") {
|
|
107
|
+
throw Error("Consecutive separators not allowed");
|
|
108
|
+
}
|
|
109
|
+
groups.push(token);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
if (Array.isArray(groups[groups.length - 1]))
|
|
113
|
+
groups[groups.length - 1].push(token);
|
|
114
|
+
else
|
|
115
|
+
groups.push([token]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (groups.length !== 3)
|
|
119
|
+
throw Error("Consecutive separators not implemented");
|
|
120
|
+
const children = [
|
|
121
|
+
buildTree(groups[0]),
|
|
122
|
+
buildTree(groups[2]),
|
|
123
|
+
];
|
|
124
|
+
const parsed = groups[1] === "="
|
|
125
|
+
? new equalNode_1.EqualNode(children[0], children[1])
|
|
126
|
+
: new inequationNode_1.InequationNode(children, groups[1]);
|
|
127
|
+
return parsed;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const parsed = buildTree(tokens);
|
|
131
|
+
return parsed;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
throw err;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
90
138
|
exports.parseLatex = parseLatex;
|
|
91
139
|
const buildTree = (tokens) => {
|
|
92
140
|
let currentDepth = 0;
|