math-exercises 2.2.95 → 2.2.96
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/calculLitteral/distributivity/firstIdentity.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/distributivity/firstIdentity.js +82 -34
- package/lib/exercises/math/calculLitteral/distributivity/secondIdentity.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/distributivity/secondIdentity.js +86 -36
- package/lib/exercises/math/calculLitteral/distributivity/thirdIdentity.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/distributivity/thirdIdentity.js +82 -32
- package/lib/exercises/math/calculLitteral/factorisation/factoType1Exercise.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/factorisation/factoType1Exercise.js +1 -0
- package/lib/exercises/math/calculLitteral/simplifying/distributeAndSimplify.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/simplifying/distributeAndSimplify.js +38 -16
- package/lib/exercises/math/calculLitteral/simplifying/reduceExpression.d.ts +3 -3
- package/lib/exercises/math/calculLitteral/simplifying/reduceExpression.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/simplifying/reduceExpression.js +171 -75
- package/lib/exercises/math/dataReading/index.d.ts +2 -0
- package/lib/exercises/math/dataReading/index.d.ts.map +1 -0
- package/lib/exercises/math/dataReading/index.js +17 -0
- package/lib/exercises/math/dataReading/tableReading.d.ts +8 -0
- package/lib/exercises/math/dataReading/tableReading.d.ts.map +1 -0
- package/lib/exercises/math/dataReading/tableReading.js +105 -0
- package/lib/exercises/math/derivation/derivative/powerCompositionDerivation.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/powerCompositionDerivation.js +75 -11
- package/lib/exercises/math/functions/affines/affineExpressionFromTwoImages.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/affineExpressionFromTwoImages.js +0 -1
- package/lib/exercises/math/functions/affines/affineExpressionReading.d.ts.map +1 -1
- package/lib/exercises/math/index.d.ts +1 -0
- package/lib/exercises/math/index.d.ts.map +1 -1
- package/lib/exercises/math/index.js +1 -0
- package/lib/exercises/math/probaStat/diceBasicProbas.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/diceBasicProbas.js +72 -20
- package/lib/exercises/vea/rationalVEA.js +1 -1
- package/lib/index.d.ts +6 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/tree/nodes/algebraicNode.d.ts +1 -0
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/addNode.d.ts +2 -1
- package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/addNode.js +21 -3
- package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/multiplyNode.d.ts +2 -1
- package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/multiplyNode.js +12 -0
- package/lib/tree/nodes/operators/operatorNode.d.ts +5 -0
- package/lib/tree/nodes/operators/operatorNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/operatorNode.js +5 -1
- package/lib/tree/nodes/polynomials/monomNode.d.ts +2 -6
- package/lib/tree/nodes/polynomials/monomNode.d.ts.map +1 -1
- package/lib/tree/nodes/polynomials/monomNode.js +102 -94
- package/lib/tree/parsers/affineParser.d.ts +1 -1
- package/lib/tree/parsers/affineParser.d.ts.map +1 -1
- package/lib/tree/parsers/affineParser.js +16 -21
- package/lib/tree/parsers/polynomialParser.d.ts +5 -1
- package/lib/tree/parsers/polynomialParser.d.ts.map +1 -1
- package/lib/tree/parsers/polynomialParser.js +3 -3
- package/lib/tree/parsers/purifyLatex.d.ts +1 -1
- package/lib/tree/parsers/purifyLatex.js +1 -1
- package/lib/utils/alea/shuffle.js +1 -1
- package/package.json +1 -1
|
@@ -16,10 +16,10 @@ function isMonomNode(a) {
|
|
|
16
16
|
return a.type === node_1.NodeType.monom;
|
|
17
17
|
}
|
|
18
18
|
exports.isMonomNode = isMonomNode;
|
|
19
|
-
function parseToMonomNode(a
|
|
19
|
+
function parseToMonomNode(a) {
|
|
20
20
|
if (!(0, algebraicNode_1.isAlgebraicNode)(a))
|
|
21
21
|
return false;
|
|
22
|
-
return (0, exports.parseToMonom)(a
|
|
22
|
+
return (0, exports.parseToMonom)(a);
|
|
23
23
|
}
|
|
24
24
|
exports.parseToMonomNode = parseToMonomNode;
|
|
25
25
|
/**
|
|
@@ -80,75 +80,70 @@ class MonomNode {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
exports.MonomNode = MonomNode;
|
|
83
|
-
const parseToMonom = (node
|
|
84
|
-
variable
|
|
85
|
-
maxDegree
|
|
86
|
-
minDegree
|
|
87
|
-
}) => {
|
|
88
|
-
variable = variable ?? "x";
|
|
89
|
-
maxDegree = maxDegree ?? undefined;
|
|
90
|
-
minDegree = minDegree ?? 1;
|
|
83
|
+
const parseToMonom = (node) => {
|
|
84
|
+
// variable = variable ?? "x";
|
|
85
|
+
// maxDegree = maxDegree ?? undefined;
|
|
86
|
+
// minDegree = minDegree ?? 1;
|
|
91
87
|
if (isMonomNode(node)) {
|
|
92
|
-
if (node.variable !== variable)
|
|
93
|
-
|
|
94
|
-
if (
|
|
95
|
-
return false;
|
|
96
|
-
if (minDegree && node.degree < minDegree)
|
|
97
|
-
return false;
|
|
88
|
+
// if (node.variable !== variable) return false;
|
|
89
|
+
// if (maxDegree && node.degree > maxDegree) return false;
|
|
90
|
+
// if (minDegree && node.degree < minDegree) return false;
|
|
98
91
|
return node;
|
|
99
92
|
}
|
|
100
93
|
if (node.isNumeric)
|
|
101
94
|
return false;
|
|
102
|
-
if ((0, variableNode_1.isVariableNode)(node)
|
|
103
|
-
return new MonomNode(1, 1, { variable });
|
|
95
|
+
if ((0, variableNode_1.isVariableNode)(node))
|
|
96
|
+
return new MonomNode(1, 1, { variable: node.name });
|
|
104
97
|
if ((0, oppositeNode_1.isOppositeNode)(node) &&
|
|
105
|
-
(0, variableNode_1.isVariableNode)(node.child)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
98
|
+
(0, variableNode_1.isVariableNode)(node.child)
|
|
99
|
+
// &&
|
|
100
|
+
// node.child.name === variable &&
|
|
101
|
+
// minDegree < 2
|
|
102
|
+
)
|
|
103
|
+
return new MonomNode(-1, 1, { variable: node.child.name });
|
|
109
104
|
if ((0, powerNode_1.isSquareNode)(node)) {
|
|
110
|
-
if (minDegree > 2)
|
|
105
|
+
// if (minDegree > 2) return false;
|
|
106
|
+
// if (maxDegree && maxDegree < 2) return false;
|
|
107
|
+
if (!(0, variableNode_1.isVariableNode)(node.leftChild)
|
|
108
|
+
// || node.leftChild.name !== variable
|
|
109
|
+
)
|
|
111
110
|
return false;
|
|
112
|
-
|
|
113
|
-
return false;
|
|
114
|
-
if (!(0, variableNode_1.isVariableNode)(node.leftChild) || node.leftChild.name !== variable)
|
|
115
|
-
return false;
|
|
116
|
-
return new MonomNode(1, 2, { variable });
|
|
111
|
+
return new MonomNode(1, 2, { variable: node.leftChild.name });
|
|
117
112
|
}
|
|
118
113
|
if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isSquareNode)(node.child)) {
|
|
119
|
-
if (minDegree > 2)
|
|
120
|
-
|
|
121
|
-
if (
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return false;
|
|
126
|
-
return new MonomNode(-1, 2, { variable });
|
|
114
|
+
// if (minDegree > 2) return false;
|
|
115
|
+
// if (maxDegree && maxDegree < 2) return false;
|
|
116
|
+
if (!(0, variableNode_1.isVariableNode)(node.child.leftChild)
|
|
117
|
+
// ||
|
|
118
|
+
// node.child.leftChild.name !== variable
|
|
119
|
+
)
|
|
120
|
+
return false;
|
|
121
|
+
return new MonomNode(-1, 2, { variable: node.child.leftChild.name });
|
|
127
122
|
}
|
|
128
123
|
if ((0, powerNode_1.isPowerNode)(node)) {
|
|
129
124
|
if (!node.rightChild.isNumeric)
|
|
130
125
|
return false;
|
|
131
126
|
const powerEv = node.rightChild.evaluate();
|
|
132
|
-
if (maxDegree && powerEv > maxDegree)
|
|
133
|
-
|
|
134
|
-
if (
|
|
127
|
+
// if (maxDegree && powerEv > maxDegree) return false;
|
|
128
|
+
// if (minDegree && powerEv < minDegree) return false;
|
|
129
|
+
if (!(0, variableNode_1.isVariableNode)(node.leftChild)
|
|
130
|
+
// || node.leftChild.name !== variable
|
|
131
|
+
)
|
|
135
132
|
return false;
|
|
136
|
-
|
|
137
|
-
return false;
|
|
138
|
-
return new MonomNode(1, powerEv, { variable });
|
|
133
|
+
return new MonomNode(1, powerEv, { variable: node.leftChild.name });
|
|
139
134
|
}
|
|
140
135
|
if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isPowerNode)(node.child)) {
|
|
141
136
|
if (!node.child.rightChild.isNumeric)
|
|
142
137
|
return false;
|
|
143
138
|
const powerEv = node.child.rightChild.evaluate();
|
|
144
|
-
if (maxDegree && powerEv > maxDegree)
|
|
145
|
-
|
|
146
|
-
if (
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return false;
|
|
151
|
-
return new MonomNode(-1, powerEv, { variable });
|
|
139
|
+
// if (maxDegree && powerEv > maxDegree) return false;
|
|
140
|
+
// if (minDegree && powerEv < minDegree) return false;
|
|
141
|
+
if (!(0, variableNode_1.isVariableNode)(node.child.leftChild)
|
|
142
|
+
// ||
|
|
143
|
+
// node.child.leftChild.name !== variable
|
|
144
|
+
)
|
|
145
|
+
return false;
|
|
146
|
+
return new MonomNode(-1, powerEv, { variable: node.child.leftChild.name });
|
|
152
147
|
}
|
|
153
148
|
if ((0, multiplyNode_1.isMultiplyNode)(node)) {
|
|
154
149
|
const numericChildPosition = node.leftChild.isNumeric
|
|
@@ -161,68 +156,71 @@ const parseToMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
161
156
|
const numericChild = numericChildPosition === "left" ? node.leftChild : node.rightChild;
|
|
162
157
|
const varChild = numericChildPosition === "left" ? node.rightChild : node.leftChild;
|
|
163
158
|
if ((0, variableNode_1.isVariableNode)(varChild)) {
|
|
164
|
-
if (varChild.name !== variable || minDegree > 1)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return new MonomNode(numericChild, 1, { variable });
|
|
159
|
+
// if (varChild.name !== variable || minDegree > 1) return false;
|
|
160
|
+
// else
|
|
161
|
+
return new MonomNode(numericChild, 1, { variable: varChild.name });
|
|
168
162
|
}
|
|
169
163
|
if ((0, powerNode_1.isSquareNode)(varChild)) {
|
|
170
|
-
if (minDegree > 2)
|
|
171
|
-
|
|
172
|
-
if (
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
164
|
+
// if (minDegree > 2) return false;
|
|
165
|
+
// if (maxDegree && maxDegree < 2) return false;
|
|
166
|
+
if (!(0, variableNode_1.isVariableNode)(varChild.leftChild)
|
|
167
|
+
// ||
|
|
168
|
+
// varChild.leftChild.name !== variable
|
|
169
|
+
)
|
|
176
170
|
return false;
|
|
177
|
-
return new MonomNode(numericChild, 2, {
|
|
171
|
+
return new MonomNode(numericChild, 2, {
|
|
172
|
+
variable: varChild.leftChild.name,
|
|
173
|
+
});
|
|
178
174
|
}
|
|
179
175
|
if ((0, oppositeNode_1.isOppositeNode)(varChild) && (0, powerNode_1.isSquareNode)(varChild.child)) {
|
|
180
|
-
if (minDegree > 2)
|
|
181
|
-
|
|
182
|
-
if (
|
|
176
|
+
// if (minDegree > 2) return false;
|
|
177
|
+
// if (maxDegree && maxDegree < 2) return false;
|
|
178
|
+
if (!(0, variableNode_1.isVariableNode)(varChild.child.leftChild)
|
|
179
|
+
// ||
|
|
180
|
+
// varChild.child.leftChild.name !== variable
|
|
181
|
+
)
|
|
183
182
|
return false;
|
|
184
|
-
|
|
185
|
-
varChild.child.leftChild.name
|
|
186
|
-
|
|
187
|
-
return new MonomNode((0, oppositeNode_1.opposite)(numericChild), 2, { variable });
|
|
183
|
+
return new MonomNode((0, oppositeNode_1.opposite)(numericChild), 2, {
|
|
184
|
+
variable: varChild.child.leftChild.name,
|
|
185
|
+
});
|
|
188
186
|
}
|
|
189
187
|
if ((0, powerNode_1.isPowerNode)(varChild) &&
|
|
190
188
|
(0, variableNode_1.isVariableNode)(varChild.leftChild) &&
|
|
191
|
-
varChild.leftChild.name === variable &&
|
|
189
|
+
// varChild.leftChild.name === variable &&
|
|
192
190
|
varChild.rightChild.isNumeric) {
|
|
193
191
|
const powerEv = varChild.rightChild.evaluate();
|
|
194
|
-
if (maxDegree && powerEv > maxDegree)
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
// if (maxDegree && powerEv > maxDegree) return false;
|
|
193
|
+
// if (minDegree && powerEv < minDegree) return false;
|
|
194
|
+
return new MonomNode(numericChild, powerEv, {
|
|
195
|
+
variable: varChild.leftChild.name,
|
|
196
|
+
});
|
|
199
197
|
}
|
|
200
198
|
if ((0, oppositeNode_1.isOppositeNode)(varChild) &&
|
|
201
199
|
(0, powerNode_1.isPowerNode)(varChild.child) &&
|
|
202
200
|
(0, variableNode_1.isVariableNode)(varChild.child.leftChild) &&
|
|
203
|
-
varChild.child.leftChild.name === variable &&
|
|
201
|
+
// varChild.child.leftChild.name === variable &&
|
|
204
202
|
varChild.child.rightChild.isNumeric) {
|
|
205
203
|
const powerEv = varChild.child.rightChild.evaluate();
|
|
206
|
-
if (maxDegree && powerEv > maxDegree)
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
204
|
+
// if (maxDegree && powerEv > maxDegree) return false;
|
|
205
|
+
// if (minDegree && powerEv < minDegree) return false;
|
|
206
|
+
return new MonomNode((0, oppositeNode_1.opposite)(numericChild), powerEv, {
|
|
207
|
+
variable: varChild.child.leftChild.name,
|
|
208
|
+
});
|
|
211
209
|
}
|
|
212
210
|
}
|
|
213
211
|
return false;
|
|
214
212
|
};
|
|
215
213
|
exports.parseToMonom = parseToMonom;
|
|
216
214
|
const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
217
|
-
variable:
|
|
215
|
+
variable: undefined,
|
|
218
216
|
maxDegree: undefined,
|
|
219
217
|
minDegree: 0,
|
|
220
218
|
}) => {
|
|
221
|
-
variable = variable ??
|
|
219
|
+
variable = variable ?? undefined;
|
|
222
220
|
maxDegree = maxDegree ?? undefined;
|
|
223
221
|
minDegree = minDegree ?? 0;
|
|
224
222
|
if (isMonomNode(node)) {
|
|
225
|
-
if (node.variable !== variable)
|
|
223
|
+
if (variable && node.variable !== variable)
|
|
226
224
|
return false;
|
|
227
225
|
if (maxDegree && node.degree > maxDegree)
|
|
228
226
|
return false;
|
|
@@ -233,12 +231,14 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
233
231
|
if (node.isNumeric && minDegree === 0)
|
|
234
232
|
return true;
|
|
235
233
|
//not monom
|
|
236
|
-
if ((0, variableNode_1.isVariableNode)(node) &&
|
|
234
|
+
if ((0, variableNode_1.isVariableNode)(node) &&
|
|
235
|
+
(!variable || node.name === variable) &&
|
|
236
|
+
minDegree < 2)
|
|
237
237
|
return true;
|
|
238
238
|
//new MonomNode(1, 1, { variable });
|
|
239
239
|
if ((0, oppositeNode_1.isOppositeNode)(node) &&
|
|
240
240
|
(0, variableNode_1.isVariableNode)(node.child) &&
|
|
241
|
-
node.child.name === variable &&
|
|
241
|
+
(!variable || node.child.name === variable) &&
|
|
242
242
|
minDegree < 2)
|
|
243
243
|
return true;
|
|
244
244
|
// new MonomNode(-1, 1, {variable})
|
|
@@ -247,14 +247,16 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
247
247
|
return false;
|
|
248
248
|
if (maxDegree && maxDegree < 2)
|
|
249
249
|
return false;
|
|
250
|
-
return (0, variableNode_1.isVariableNode)(node.leftChild) &&
|
|
250
|
+
return ((0, variableNode_1.isVariableNode)(node.leftChild) &&
|
|
251
|
+
(!variable || node.leftChild.name === variable));
|
|
251
252
|
}
|
|
252
253
|
if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isSquareNode)(node.child)) {
|
|
253
254
|
if (minDegree > 2)
|
|
254
255
|
return false;
|
|
255
256
|
if (maxDegree && maxDegree < 2)
|
|
256
257
|
return false;
|
|
257
|
-
return ((0, variableNode_1.isVariableNode)(node.child.leftChild) &&
|
|
258
|
+
return ((0, variableNode_1.isVariableNode)(node.child.leftChild) &&
|
|
259
|
+
(!variable || node.child.leftChild.name === variable));
|
|
258
260
|
}
|
|
259
261
|
if ((0, powerNode_1.isPowerNode)(node)) {
|
|
260
262
|
if (!node.rightChild.isNumeric)
|
|
@@ -264,7 +266,8 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
264
266
|
return false;
|
|
265
267
|
if (minDegree && powerEv < minDegree)
|
|
266
268
|
return false;
|
|
267
|
-
return (0, variableNode_1.isVariableNode)(node.leftChild) &&
|
|
269
|
+
return ((0, variableNode_1.isVariableNode)(node.leftChild) &&
|
|
270
|
+
(!variable || node.leftChild.name === variable));
|
|
268
271
|
}
|
|
269
272
|
if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isPowerNode)(node.child)) {
|
|
270
273
|
if (!node.child.rightChild.isNumeric)
|
|
@@ -274,7 +277,8 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
274
277
|
return false;
|
|
275
278
|
if (minDegree && powerEv < minDegree)
|
|
276
279
|
return false;
|
|
277
|
-
return ((0, variableNode_1.isVariableNode)(node.child.leftChild) &&
|
|
280
|
+
return ((0, variableNode_1.isVariableNode)(node.child.leftChild) &&
|
|
281
|
+
(!variable || node.child.leftChild.name === variable));
|
|
278
282
|
}
|
|
279
283
|
if ((0, multiplyNode_1.isMultiplyNode)(node)) {
|
|
280
284
|
const numericChild = node.leftChild.isNumeric
|
|
@@ -285,11 +289,13 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
285
289
|
if (!numericChild)
|
|
286
290
|
return false;
|
|
287
291
|
const varChild = numericChild === "left" ? node.rightChild : node.leftChild;
|
|
288
|
-
if ((0, variableNode_1.isVariableNode)(varChild) &&
|
|
292
|
+
if ((0, variableNode_1.isVariableNode)(varChild) &&
|
|
293
|
+
(!variable || varChild.name === variable) &&
|
|
294
|
+
minDegree < 2)
|
|
289
295
|
return true;
|
|
290
296
|
if ((0, powerNode_1.isSquareNode)(varChild) &&
|
|
291
297
|
(0, variableNode_1.isVariableNode)(varChild.leftChild) &&
|
|
292
|
-
varChild.leftChild.name === variable) {
|
|
298
|
+
(!variable || varChild.leftChild.name === variable)) {
|
|
293
299
|
if (maxDegree && maxDegree < 2)
|
|
294
300
|
return false;
|
|
295
301
|
if (minDegree > 2)
|
|
@@ -299,7 +305,7 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
299
305
|
}
|
|
300
306
|
if ((0, powerNode_1.isPowerNode)(varChild) &&
|
|
301
307
|
(0, variableNode_1.isVariableNode)(varChild.leftChild) &&
|
|
302
|
-
varChild.leftChild.name === variable &&
|
|
308
|
+
(!variable || varChild.leftChild.name === variable) &&
|
|
303
309
|
varChild.rightChild.isNumeric) {
|
|
304
310
|
const powerEv = varChild.rightChild.evaluate();
|
|
305
311
|
if (maxDegree && powerEv > maxDegree)
|
|
@@ -319,12 +325,14 @@ const isMonom = (node, { variable, maxDegree, minDegree } = {
|
|
|
319
325
|
if (!numericChild)
|
|
320
326
|
return false;
|
|
321
327
|
const varChild = numericChild === "left" ? node.child.rightChild : node.child.leftChild;
|
|
322
|
-
if ((0, variableNode_1.isVariableNode)(varChild) &&
|
|
328
|
+
if ((0, variableNode_1.isVariableNode)(varChild) &&
|
|
329
|
+
(!variable || varChild.name === variable) &&
|
|
330
|
+
minDegree < 2)
|
|
323
331
|
return true;
|
|
324
332
|
//new MonomNode(numericChild, 1, {variable});
|
|
325
333
|
if ((0, powerNode_1.isPowerNode)(varChild) &&
|
|
326
334
|
(0, variableNode_1.isVariableNode)(varChild.leftChild) &&
|
|
327
|
-
varChild.leftChild.name === variable &&
|
|
335
|
+
(!variable || varChild.leftChild.name === variable) &&
|
|
328
336
|
varChild.rightChild.isNumeric) {
|
|
329
337
|
const powerEv = varChild.rightChild.evaluate();
|
|
330
338
|
if (maxDegree && powerEv > maxDegree)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const affineParser: (ans: string, variable?: string) => false
|
|
1
|
+
export declare const affineParser: (ans: string, variable?: string) => false;
|
|
2
2
|
//# sourceMappingURL=affineParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affineParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/affineParser.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,QAAS,MAAM,aAAY,MAAM,
|
|
1
|
+
{"version":3,"file":"affineParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/affineParser.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,QAAS,MAAM,aAAY,MAAM,UAwBzD,CAAC"}
|
|
@@ -2,30 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.affineParser = void 0;
|
|
4
4
|
const handleVEAError_1 = require("../../utils/errors/handleVEAError");
|
|
5
|
-
const addNode_1 = require("../nodes/operators/addNode");
|
|
6
|
-
const substractNode_1 = require("../nodes/operators/substractNode");
|
|
7
|
-
const monomNode_1 = require("../nodes/polynomials/monomNode");
|
|
8
|
-
const latexParser_1 = require("./latexParser");
|
|
9
|
-
const monomParser_1 = require("./monomParser");
|
|
10
5
|
const affineParser = (ans, variable = "x") => {
|
|
11
6
|
try {
|
|
7
|
+
throw new Error("not sure this works");
|
|
12
8
|
//double parse, pas opti
|
|
13
|
-
const monom =
|
|
14
|
-
if (monom)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return false;
|
|
9
|
+
// const monom = monomParser(ans, { variable, maxDegree: 1 });
|
|
10
|
+
// if (monom) return monom;
|
|
11
|
+
// const parsed = parseAlgebraic(ans);
|
|
12
|
+
// if (isAddNode(parsed) || isSubstractNode(parsed)) {
|
|
13
|
+
// const numericChild = parsed.leftChild.isNumeric
|
|
14
|
+
// ? "left"
|
|
15
|
+
// : parsed.rightChild.isNumeric
|
|
16
|
+
// ? "right"
|
|
17
|
+
// : undefined;
|
|
18
|
+
// if (!numericChild) return false;
|
|
19
|
+
// const varChild =
|
|
20
|
+
// numericChild === "left" ? parsed.rightChild : parsed.leftChild;
|
|
21
|
+
// return isMonom(varChild, { variable, maxDegree: 1 }) ? parsed : false;
|
|
22
|
+
// }
|
|
23
|
+
// return false;
|
|
29
24
|
}
|
|
30
25
|
catch (err) {
|
|
31
26
|
return (0, handleVEAError_1.handleVEAError)(err);
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { AlgebraicNode } from "../nodes/algebraicNode";
|
|
2
|
-
|
|
2
|
+
type Opts = {
|
|
3
|
+
variable?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const polynomialParser: (ans: string, opts?: Opts) => false | AlgebraicNode | import("../nodes/numbers/constantNode").ConstantNode | import("../nodes/numbers/numberNode").NumberNode | import("../nodes/operators/substractNode").SubstractNode | import("../nodes/operators/addNode").AddNode;
|
|
6
|
+
export {};
|
|
3
7
|
//# sourceMappingURL=polynomialParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polynomialParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/polynomialParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"polynomialParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/polynomialParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AASvD,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF,eAAO,MAAM,gBAAgB,QAAS,MAAM,SAAS,IAAI,8OAkCxD,CAAC"}
|
|
@@ -11,13 +11,13 @@ const monomParser_1 = require("./monomParser");
|
|
|
11
11
|
const numberParser_1 = require("./numberParser");
|
|
12
12
|
//!parses polynomes sous forme développée
|
|
13
13
|
//minDegree = 0, max = undefined
|
|
14
|
-
const polynomialParser = (ans) => {
|
|
14
|
+
const polynomialParser = (ans, opts) => {
|
|
15
15
|
try {
|
|
16
16
|
const nb = (0, numberParser_1.numberParser)(ans);
|
|
17
17
|
if (nb !== false) {
|
|
18
18
|
return nb.unfrenchify().toTree();
|
|
19
19
|
}
|
|
20
|
-
const monom = (0, monomParser_1.monomParser)(ans);
|
|
20
|
+
const monom = (0, monomParser_1.monomParser)(ans, opts);
|
|
21
21
|
if (monom)
|
|
22
22
|
return monom;
|
|
23
23
|
const parsed = (0, latexParser_1.parseAlgebraic)(ans);
|
|
@@ -39,7 +39,7 @@ const polynomialParser = (ans) => {
|
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
recursive(parsed);
|
|
42
|
-
if (externals.every((node) => (0, monomNode_1.isMonom)(node))) {
|
|
42
|
+
if (externals.every((node) => (0, monomNode_1.isMonom)(node, opts))) {
|
|
43
43
|
return parsed;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* supprime les éléments superflus sans aucun calcul maths
|
|
3
3
|
* ex : transforme (2) en 2
|
|
4
4
|
* ex : transforme (9)/3 en 9/3 mais pas en 3
|
|
5
|
-
* doit-il transformer 1*x en x ?
|
|
5
|
+
* doit-il transformer 1*x en x ? -> je dirais que non
|
|
6
6
|
* @param str réponse élève
|
|
7
7
|
*/
|
|
8
8
|
export declare const purifyLatex: (str: string) => void;
|
|
@@ -5,7 +5,7 @@ exports.purifyLatex = void 0;
|
|
|
5
5
|
* supprime les éléments superflus sans aucun calcul maths
|
|
6
6
|
* ex : transforme (2) en 2
|
|
7
7
|
* ex : transforme (9)/3 en 9/3 mais pas en 3
|
|
8
|
-
* doit-il transformer 1*x en x ?
|
|
8
|
+
* doit-il transformer 1*x en x ? -> je dirais que non
|
|
9
9
|
* @param str réponse élève
|
|
10
10
|
*/
|
|
11
11
|
const purifyLatex = (str) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.shuffle = void 0;
|
|
4
|
-
/* Randomize array
|
|
4
|
+
/* Randomize array using Durstenfeld shuffle algorithm */
|
|
5
5
|
function shuffle(array) {
|
|
6
6
|
const res = [...array];
|
|
7
7
|
for (var i = res.length - 1; i > 0; i--) {
|