math-exercises 2.2.78 → 2.2.79

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.
Files changed (87) hide show
  1. package/lib/exercises/math/derivation/derivative/firstDegreeDerivative.d.ts.map +1 -1
  2. package/lib/exercises/math/derivation/derivative/firstDegreeDerivative.js +44 -5
  3. package/lib/exercises/math/derivation/derivative/rootFunctionDerivative.d.ts.map +1 -1
  4. package/lib/exercises/math/derivation/derivative/rootFunctionDerivative.js +57 -26
  5. package/lib/exercises/math/derivation/derivative/secondDegreeDerivative.d.ts.map +1 -1
  6. package/lib/exercises/math/derivation/derivative/secondDegreeDerivative.js +50 -8
  7. package/lib/exercises/math/derivation/derivative/thirdDegreeDerivative.d.ts.map +1 -1
  8. package/lib/exercises/math/derivation/derivative/thirdDegreeDerivative.js +67 -13
  9. package/lib/exercises/math/derivation/derivative/usualderivative.d.ts.map +1 -1
  10. package/lib/exercises/math/derivation/derivative/usualderivative.js +1 -2
  11. package/lib/exercises/math/functions/exponentials/exponentialsVariations.d.ts +9 -0
  12. package/lib/exercises/math/functions/exponentials/exponentialsVariations.d.ts.map +1 -0
  13. package/lib/exercises/math/functions/exponentials/exponentialsVariations.js +124 -0
  14. package/lib/exercises/math/functions/exponentials/index.d.ts +2 -0
  15. package/lib/exercises/math/functions/exponentials/index.d.ts.map +1 -0
  16. package/lib/exercises/math/functions/exponentials/index.js +17 -0
  17. package/lib/exercises/math/functions/index.d.ts +1 -0
  18. package/lib/exercises/math/functions/index.d.ts.map +1 -1
  19. package/lib/exercises/math/functions/index.js +1 -0
  20. package/lib/exercises/math/geometry/areas/rectangleArea.d.ts.map +1 -1
  21. package/lib/exercises/math/geometry/areas/rectangleArea.js +5 -2
  22. package/lib/exercises/math/index.d.ts +1 -0
  23. package/lib/exercises/math/index.d.ts.map +1 -1
  24. package/lib/exercises/math/index.js +1 -0
  25. package/lib/exercises/math/percent/applyPercent.d.ts.map +1 -1
  26. package/lib/exercises/math/percent/applyPercent.js +2 -0
  27. package/lib/exercises/math/percent/findEndValueAfterEvolution.d.ts +8 -0
  28. package/lib/exercises/math/percent/findEndValueAfterEvolution.d.ts.map +1 -0
  29. package/lib/exercises/math/percent/findEndValueAfterEvolution.js +104 -0
  30. package/lib/exercises/math/percent/index.d.ts +1 -0
  31. package/lib/exercises/math/percent/index.d.ts.map +1 -1
  32. package/lib/exercises/math/percent/index.js +1 -0
  33. package/lib/exercises/math/powers/index.d.ts +1 -0
  34. package/lib/exercises/math/powers/index.d.ts.map +1 -1
  35. package/lib/exercises/math/powers/index.js +1 -0
  36. package/lib/exercises/math/powers/powersMixOperations.d.ts +11 -0
  37. package/lib/exercises/math/powers/powersMixOperations.d.ts.map +1 -0
  38. package/lib/exercises/math/powers/powersMixOperations.js +99 -0
  39. package/lib/exercises/math/sampling/confidenceInterval.d.ts +9 -0
  40. package/lib/exercises/math/sampling/confidenceInterval.d.ts.map +1 -0
  41. package/lib/exercises/math/sampling/confidenceInterval.js +134 -0
  42. package/lib/exercises/math/sampling/fluctuationInterval.d.ts +9 -0
  43. package/lib/exercises/math/sampling/fluctuationInterval.d.ts.map +1 -0
  44. package/lib/exercises/math/sampling/fluctuationInterval.js +131 -0
  45. package/lib/exercises/math/sampling/index.d.ts +4 -0
  46. package/lib/exercises/math/sampling/index.d.ts.map +1 -0
  47. package/lib/exercises/math/sampling/index.js +19 -0
  48. package/lib/exercises/math/sampling/isSamplingRepresentative.d.ts +11 -0
  49. package/lib/exercises/math/sampling/isSamplingRepresentative.d.ts.map +1 -0
  50. package/lib/exercises/math/sampling/isSamplingRepresentative.js +116 -0
  51. package/lib/exercises/math/sequences/geometric/geometricVariations.d.ts +9 -0
  52. package/lib/exercises/math/sequences/geometric/geometricVariations.d.ts.map +1 -0
  53. package/lib/exercises/math/sequences/geometric/geometricVariations.js +124 -0
  54. package/lib/exercises/math/sequences/geometric/index.d.ts +1 -0
  55. package/lib/exercises/math/sequences/geometric/index.d.ts.map +1 -1
  56. package/lib/exercises/math/sequences/geometric/index.js +1 -0
  57. package/lib/index.d.ts +29 -0
  58. package/lib/index.d.ts.map +1 -1
  59. package/lib/math/numbers/rationals/rational.d.ts +3 -1
  60. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  61. package/lib/math/numbers/rationals/rational.js +3 -1
  62. package/lib/playground.d.ts.map +1 -1
  63. package/lib/playground.js +6 -1
  64. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  65. package/lib/tree/nodes/operators/addNode.js +15 -1
  66. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  67. package/lib/tree/nodes/operators/fractionNode.js +8 -0
  68. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  69. package/lib/tree/nodes/operators/multiplyNode.js +4 -0
  70. package/lib/tree/nodes/polynomials/monomNode.d.ts +6 -0
  71. package/lib/tree/nodes/polynomials/monomNode.d.ts.map +1 -1
  72. package/lib/tree/nodes/polynomials/monomNode.js +126 -2
  73. package/lib/tree/parsers/affineParser.d.ts.map +1 -1
  74. package/lib/tree/parsers/affineParser.js +2 -1
  75. package/lib/tree/parsers/intervalParser.d.ts +8 -0
  76. package/lib/tree/parsers/intervalParser.d.ts.map +1 -0
  77. package/lib/tree/parsers/intervalParser.js +38 -0
  78. package/lib/tree/parsers/monomParser.d.ts +1 -3
  79. package/lib/tree/parsers/monomParser.d.ts.map +1 -1
  80. package/lib/tree/parsers/monomParser.js +7 -129
  81. package/lib/tree/parsers/polynomialParser.d.ts.map +1 -1
  82. package/lib/tree/parsers/polynomialParser.js +2 -1
  83. package/lib/tree/parsers/powerParser.d.ts +1 -1
  84. package/lib/tree/parsers/powerParser.d.ts.map +1 -1
  85. package/lib/tree/parsers/powerParser.js +2 -1
  86. package/lib/tree/parsers/trinomParser.js +2 -2
  87. package/package.json +1 -1
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseToMonom = exports.MonomNode = exports.parseToMonomNode = exports.isMonomNode = exports.monom = void 0;
3
+ exports.isMonom = exports.parseToMonom = exports.MonomNode = exports.parseToMonomNode = exports.isMonomNode = exports.monom = void 0;
4
4
  const algebraicNode_1 = require("../algebraicNode");
5
5
  const oppositeNode_1 = require("../functions/oppositeNode");
6
6
  const node_1 = require("../node");
7
- // import { NodeIdentifiers } from "../nodeConstructor";
8
7
  const multiplyNode_1 = require("../operators/multiplyNode");
9
8
  const powerNode_1 = require("../operators/powerNode");
10
9
  const variableNode_1 = require("../variables/variableNode");
@@ -214,3 +213,128 @@ const parseToMonom = (node, { variable, maxDegree, minDegree } = {
214
213
  return false;
215
214
  };
216
215
  exports.parseToMonom = parseToMonom;
216
+ const isMonom = (node, { variable, maxDegree, minDegree } = {
217
+ variable: "x",
218
+ maxDegree: undefined,
219
+ minDegree: 0,
220
+ }) => {
221
+ variable = variable ?? "x";
222
+ maxDegree = maxDegree ?? undefined;
223
+ minDegree = minDegree ?? 0;
224
+ if (isMonomNode(node)) {
225
+ if (node.variable !== variable)
226
+ return false;
227
+ if (maxDegree && node.degree > maxDegree)
228
+ return false;
229
+ if (minDegree && node.degree < minDegree)
230
+ return false;
231
+ return true;
232
+ }
233
+ if (node.isNumeric && minDegree === 0)
234
+ return true;
235
+ //not monom
236
+ if ((0, variableNode_1.isVariableNode)(node) && node.name === variable && minDegree < 2)
237
+ return true;
238
+ //new MonomNode(1, 1, { variable });
239
+ if ((0, oppositeNode_1.isOppositeNode)(node) &&
240
+ (0, variableNode_1.isVariableNode)(node.child) &&
241
+ node.child.name === variable &&
242
+ minDegree < 2)
243
+ return true;
244
+ // new MonomNode(-1, 1, {variable})
245
+ if ((0, powerNode_1.isSquareNode)(node)) {
246
+ if (minDegree > 2)
247
+ return false;
248
+ if (maxDegree && maxDegree < 2)
249
+ return false;
250
+ return (0, variableNode_1.isVariableNode)(node.leftChild) && node.leftChild.name === "x";
251
+ }
252
+ if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isSquareNode)(node.child)) {
253
+ if (minDegree > 2)
254
+ return false;
255
+ if (maxDegree && maxDegree < 2)
256
+ return false;
257
+ return ((0, variableNode_1.isVariableNode)(node.child.leftChild) && node.child.leftChild.name === "x");
258
+ }
259
+ if ((0, powerNode_1.isPowerNode)(node)) {
260
+ if (!node.rightChild.isNumeric)
261
+ return false;
262
+ const powerEv = node.rightChild.evaluate();
263
+ if (maxDegree && powerEv > maxDegree)
264
+ return false;
265
+ if (minDegree && powerEv < minDegree)
266
+ return false;
267
+ return (0, variableNode_1.isVariableNode)(node.leftChild) && node.leftChild.name === "x";
268
+ }
269
+ if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isPowerNode)(node.child)) {
270
+ if (!node.child.rightChild.isNumeric)
271
+ return false;
272
+ const powerEv = node.child.rightChild.evaluate();
273
+ if (maxDegree && powerEv > maxDegree)
274
+ return false;
275
+ if (minDegree && powerEv < minDegree)
276
+ return false;
277
+ return ((0, variableNode_1.isVariableNode)(node.child.leftChild) && node.child.leftChild.name === "x");
278
+ }
279
+ if ((0, multiplyNode_1.isMultiplyNode)(node)) {
280
+ const numericChild = node.leftChild.isNumeric
281
+ ? "left"
282
+ : node.rightChild.isNumeric
283
+ ? "right"
284
+ : undefined;
285
+ if (!numericChild)
286
+ return false;
287
+ const varChild = numericChild === "left" ? node.rightChild : node.leftChild;
288
+ if ((0, variableNode_1.isVariableNode)(varChild) && varChild.name === variable && minDegree < 2)
289
+ return true;
290
+ if ((0, powerNode_1.isSquareNode)(varChild) &&
291
+ (0, variableNode_1.isVariableNode)(varChild.leftChild) &&
292
+ varChild.leftChild.name === variable) {
293
+ if (maxDegree && maxDegree < 2)
294
+ return false;
295
+ if (minDegree > 2)
296
+ return false;
297
+ // new MonomNode(numericChild, powerEv, { variable });
298
+ return true;
299
+ }
300
+ if ((0, powerNode_1.isPowerNode)(varChild) &&
301
+ (0, variableNode_1.isVariableNode)(varChild.leftChild) &&
302
+ varChild.leftChild.name === variable &&
303
+ varChild.rightChild.isNumeric) {
304
+ const powerEv = varChild.rightChild.evaluate();
305
+ if (maxDegree && powerEv > maxDegree)
306
+ return false;
307
+ if (powerEv < minDegree)
308
+ return false;
309
+ // new MonomNode(numericChild, powerEv, { variable });
310
+ return true;
311
+ }
312
+ }
313
+ if ((0, oppositeNode_1.isOppositeNode)(node) && (0, multiplyNode_1.isMultiplyNode)(node.child)) {
314
+ const numericChild = node.child.leftChild.isNumeric
315
+ ? "left"
316
+ : node.child.rightChild.isNumeric
317
+ ? "right"
318
+ : undefined;
319
+ if (!numericChild)
320
+ return false;
321
+ const varChild = numericChild === "left" ? node.child.rightChild : node.child.leftChild;
322
+ if ((0, variableNode_1.isVariableNode)(varChild) && varChild.name === variable && minDegree < 2)
323
+ return true;
324
+ //new MonomNode(numericChild, 1, {variable});
325
+ if ((0, powerNode_1.isPowerNode)(varChild) &&
326
+ (0, variableNode_1.isVariableNode)(varChild.leftChild) &&
327
+ varChild.leftChild.name === variable &&
328
+ varChild.rightChild.isNumeric) {
329
+ const powerEv = varChild.rightChild.evaluate();
330
+ if (maxDegree && powerEv > maxDegree)
331
+ return false;
332
+ if (powerEv < minDegree)
333
+ return false;
334
+ // new MonomNode(numericChild, powerEv, { variable });
335
+ return true;
336
+ }
337
+ }
338
+ return false;
339
+ };
340
+ exports.isMonom = isMonom;
@@ -1 +1 @@
1
- {"version":3,"file":"affineParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/affineParser.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,QAAS,MAAM,aAAY,MAAM,qKAuBzD,CAAC"}
1
+ {"version":3,"file":"affineParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/affineParser.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,QAAS,MAAM,aAAY,MAAM,qKAuBzD,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.affineParser = void 0;
4
4
  const addNode_1 = require("../nodes/operators/addNode");
5
5
  const substractNode_1 = require("../nodes/operators/substractNode");
6
+ const monomNode_1 = require("../nodes/polynomials/monomNode");
6
7
  const latexParser_1 = require("./latexParser");
7
8
  const monomParser_1 = require("./monomParser");
8
9
  const affineParser = (ans, variable = "x") => {
@@ -21,7 +22,7 @@ const affineParser = (ans, variable = "x") => {
21
22
  if (!numericChild)
22
23
  return false;
23
24
  const varChild = numericChild === "left" ? parsed.rightChild : parsed.leftChild;
24
- return (0, monomParser_1.isMonom)(varChild, { variable, maxDegree: 1 }) ? parsed : false;
25
+ return (0, monomNode_1.isMonom)(varChild, { variable, maxDegree: 1 }) ? parsed : false;
25
26
  }
26
27
  return false;
27
28
  }
@@ -0,0 +1,8 @@
1
+ import { IntervalNode } from "../nodes/sets/intervalNode";
2
+ type Opts = {
3
+ allowCommaInsteadOfSemicolon?: boolean;
4
+ allowNoBrackets?: boolean;
5
+ };
6
+ export declare const intervalParser: (ans: string, opts?: Opts) => false | IntervalNode;
7
+ export {};
8
+ //# sourceMappingURL=intervalParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/intervalParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,KAAK,IAAI,GAAG;IACV,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,eAAO,MAAM,cAAc,QAAS,MAAM,SAAS,IAAI,yBAuCtD,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.intervalParser = void 0;
4
+ const closure_1 = require("../nodes/sets/closure");
5
+ const intervalNode_1 = require("../nodes/sets/intervalNode");
6
+ const latexParser_1 = require("./latexParser");
7
+ const intervalParser = (ans, opts) => {
8
+ const allowCommaInsteadOfSemicolon = opts?.allowCommaInsteadOfSemicolon ?? false;
9
+ const allowNoBrackets = opts?.allowNoBrackets ?? false;
10
+ let formated = ans.replaceAll("\\ ", "");
11
+ if (allowNoBrackets && !["]", "["].includes(formated[0])) {
12
+ formated = "[" + formated;
13
+ }
14
+ if (allowNoBrackets && !["]", "["].includes(formated[formated.length - 1])) {
15
+ formated = formated + "]";
16
+ }
17
+ const leftBracket = formated[0];
18
+ const rightBracket = formated[formated.length - 1];
19
+ if ((!allowNoBrackets && !["]", "["].includes(leftBracket)) ||
20
+ !["]", "["].includes(rightBracket))
21
+ return false;
22
+ let bornes = formated.split(";");
23
+ if (!allowCommaInsteadOfSemicolon && bornes.length !== 2)
24
+ return false;
25
+ if (bornes.length !== 2) {
26
+ bornes = formated.split(",");
27
+ if (bornes.length !== 2)
28
+ return false;
29
+ }
30
+ const aParsed = (0, latexParser_1.parseAlgebraic)(bornes[0]);
31
+ if (!aParsed)
32
+ return false;
33
+ const bParsed = (0, latexParser_1.parseAlgebraic)(bornes[1]);
34
+ if (!bParsed)
35
+ return false;
36
+ return new intervalNode_1.IntervalNode(aParsed, bParsed, closure_1.Closure.fromBrackets(leftBracket, rightBracket));
37
+ };
38
+ exports.intervalParser = intervalParser;
@@ -1,10 +1,8 @@
1
- import { AlgebraicNode } from "../nodes/algebraicNode";
2
1
  type Opts = {
3
2
  variable?: string;
4
3
  maxDegree?: number;
5
4
  minDegree?: number;
6
5
  };
7
- export declare const monomParser: (str: string, { variable, maxDegree, minDegree }?: Opts) => false | AlgebraicNode;
8
- export declare const isMonom: (node: AlgebraicNode, { variable, maxDegree, minDegree }?: Opts) => boolean;
6
+ export declare const monomParser: (str: string, { variable, maxDegree, minDegree }?: Opts) => false | import("../nodes/algebraicNode").AlgebraicNode;
9
7
  export {};
10
8
  //# sourceMappingURL=monomParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"monomParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/monomParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,WAAW,QACjB,MAAM,uCACyB,IAAI,0BAgBzC,CAAC;AAEF,eAAO,MAAM,OAAO,SACZ,aAAa,uCACiB,IAAI,YAoHzC,CAAC"}
1
+ {"version":3,"file":"monomParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/monomParser.ts"],"names":[],"mappings":"AAGA,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,WAAW,QACjB,MAAM,uCACyB,IAAI,2DAiBzC,CAAC"}
@@ -1,12 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMonom = exports.monomParser = void 0;
4
- const oppositeNode_1 = require("../nodes/functions/oppositeNode");
5
- const fractionNode_1 = require("../nodes/operators/fractionNode");
6
- const multiplyNode_1 = require("../nodes/operators/multiplyNode");
7
- const powerNode_1 = require("../nodes/operators/powerNode");
3
+ exports.monomParser = void 0;
8
4
  const monomNode_1 = require("../nodes/polynomials/monomNode");
9
- const variableNode_1 = require("../nodes/variables/variableNode");
10
5
  const latexParser_1 = require("./latexParser");
11
6
  const monomParser = (str, { variable, maxDegree, minDegree } = {
12
7
  variable: "x",
@@ -15,132 +10,15 @@ const monomParser = (str, { variable, maxDegree, minDegree } = {
15
10
  }) => {
16
11
  try {
17
12
  const parsed = (0, latexParser_1.parseAlgebraic)(str);
18
- return (0, exports.isMonom)(parsed, { variable, maxDegree, minDegree }) ? parsed : false;
19
- if ((0, fractionNode_1.isFractionNode)(parsed)) {
20
- //!unimplemented
21
- return false;
22
- }
23
- else
24
- return false;
13
+ // const parsed = (2).toTree();
14
+ return (0, monomNode_1.isMonom)(parsed, { variable, maxDegree, minDegree }) ? parsed : false;
15
+ // if (isFractionNode(parsed)) {
16
+ // !unimplemented
17
+ // return false;
18
+ // } else return false;
25
19
  }
26
20
  catch (err) {
27
21
  return false;
28
22
  }
29
23
  };
30
24
  exports.monomParser = monomParser;
31
- const isMonom = (node, { variable, maxDegree, minDegree } = {
32
- variable: "x",
33
- maxDegree: undefined,
34
- minDegree: 0,
35
- }) => {
36
- variable = variable ?? "x";
37
- maxDegree = maxDegree ?? undefined;
38
- minDegree = minDegree ?? 0;
39
- if ((0, monomNode_1.isMonomNode)(node)) {
40
- if (node.variable !== variable)
41
- return false;
42
- if (maxDegree && node.degree > maxDegree)
43
- return false;
44
- if (minDegree && node.degree < minDegree)
45
- return false;
46
- return true;
47
- }
48
- if (node.isNumeric && minDegree === 0)
49
- return true;
50
- //not monom
51
- if ((0, variableNode_1.isVariableNode)(node) && node.name === variable && minDegree < 2)
52
- return true;
53
- //new MonomNode(1, 1, { variable });
54
- if ((0, oppositeNode_1.isOppositeNode)(node) &&
55
- (0, variableNode_1.isVariableNode)(node.child) &&
56
- node.child.name === variable &&
57
- minDegree < 2)
58
- return true;
59
- // new MonomNode(-1, 1, {variable})
60
- if ((0, powerNode_1.isSquareNode)(node)) {
61
- if (minDegree > 2)
62
- return false;
63
- if (maxDegree && maxDegree < 2)
64
- return false;
65
- return (0, variableNode_1.isVariableNode)(node.leftChild) && node.leftChild.name === "x";
66
- }
67
- if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isSquareNode)(node.child)) {
68
- if (minDegree > 2)
69
- return false;
70
- if (maxDegree && maxDegree < 2)
71
- return false;
72
- return ((0, variableNode_1.isVariableNode)(node.child.leftChild) && node.child.leftChild.name === "x");
73
- }
74
- if ((0, powerNode_1.isPowerNode)(node)) {
75
- if (!node.rightChild.isNumeric)
76
- return false;
77
- const powerEv = node.rightChild.evaluate();
78
- if (maxDegree && powerEv > maxDegree)
79
- return false;
80
- if (minDegree && powerEv < minDegree)
81
- return false;
82
- return (0, variableNode_1.isVariableNode)(node.leftChild) && node.leftChild.name === "x";
83
- }
84
- if ((0, oppositeNode_1.isOppositeNode)(node) && (0, powerNode_1.isPowerNode)(node.child)) {
85
- if (!node.child.rightChild.isNumeric)
86
- return false;
87
- const powerEv = node.child.rightChild.evaluate();
88
- if (maxDegree && powerEv > maxDegree)
89
- return false;
90
- if (minDegree && powerEv < minDegree)
91
- return false;
92
- return ((0, variableNode_1.isVariableNode)(node.child.leftChild) && node.child.leftChild.name === "x");
93
- }
94
- if ((0, multiplyNode_1.isMultiplyNode)(node)) {
95
- const numericChild = node.leftChild.isNumeric
96
- ? "left"
97
- : node.rightChild.isNumeric
98
- ? "right"
99
- : undefined;
100
- if (!numericChild)
101
- return false;
102
- const varChild = numericChild === "left" ? node.rightChild : node.leftChild;
103
- if ((0, variableNode_1.isVariableNode)(varChild) && varChild.name === variable && minDegree < 2)
104
- return true;
105
- //new MonomNode(numericChild, 1, {variable});
106
- if ((0, powerNode_1.isPowerNode)(varChild) &&
107
- (0, variableNode_1.isVariableNode)(varChild.leftChild) &&
108
- varChild.leftChild.name === variable &&
109
- varChild.rightChild.isNumeric) {
110
- const powerEv = varChild.rightChild.evaluate();
111
- if (maxDegree && powerEv > maxDegree)
112
- return false;
113
- if (minDegree && powerEv < minDegree)
114
- return false;
115
- // new MonomNode(numericChild, powerEv, { variable });
116
- return true;
117
- }
118
- }
119
- if ((0, oppositeNode_1.isOppositeNode)(node) && (0, multiplyNode_1.isMultiplyNode)(node.child)) {
120
- const numericChild = node.child.leftChild.isNumeric
121
- ? "left"
122
- : node.child.rightChild.isNumeric
123
- ? "right"
124
- : undefined;
125
- if (!numericChild)
126
- return false;
127
- const varChild = numericChild === "left" ? node.child.rightChild : node.child.leftChild;
128
- if ((0, variableNode_1.isVariableNode)(varChild) && varChild.name === variable && minDegree < 2)
129
- return true;
130
- //new MonomNode(numericChild, 1, {variable});
131
- if ((0, powerNode_1.isPowerNode)(varChild) &&
132
- (0, variableNode_1.isVariableNode)(varChild.leftChild) &&
133
- varChild.leftChild.name === variable &&
134
- varChild.rightChild.isNumeric) {
135
- const powerEv = varChild.rightChild.evaluate();
136
- if (maxDegree && powerEv > maxDegree)
137
- return false;
138
- if (minDegree && powerEv < minDegree)
139
- return false;
140
- // new MonomNode(numericChild, powerEv, { variable });
141
- return true;
142
- }
143
- }
144
- return false;
145
- };
146
- exports.isMonom = isMonom;
@@ -1 +1 @@
1
- {"version":3,"file":"polynomialParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/polynomialParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,eAAO,MAAM,gBAAgB,QAAS,MAAM,8OAmC3C,CAAC"}
1
+ {"version":3,"file":"polynomialParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/polynomialParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAWvD,eAAO,MAAM,gBAAgB,QAAS,MAAM,8OAmC3C,CAAC"}
@@ -4,6 +4,7 @@ exports.polynomialParser = void 0;
4
4
  const oppositeNode_1 = require("../nodes/functions/oppositeNode");
5
5
  const addNode_1 = require("../nodes/operators/addNode");
6
6
  const substractNode_1 = require("../nodes/operators/substractNode");
7
+ const monomNode_1 = require("../nodes/polynomials/monomNode");
7
8
  const latexParser_1 = require("./latexParser");
8
9
  const monomParser_1 = require("./monomParser");
9
10
  const numberParser_1 = require("./numberParser");
@@ -37,7 +38,7 @@ const polynomialParser = (ans) => {
37
38
  }
38
39
  };
39
40
  recursive(parsed);
40
- if (externals.every((node) => (0, monomParser_1.isMonom)(node))) {
41
+ if (externals.every((node) => (0, monomNode_1.isMonom)(node))) {
41
42
  return parsed;
42
43
  }
43
44
  }
@@ -1,2 +1,2 @@
1
- export declare const powerParser: (ans: string) => false | import("../nodes/operators/powerNode").PowerNode | import("../nodes/operators/fractionNode").FractionNode;
1
+ export declare const powerParser: (ans: string) => false | import("../nodes/functions/sqrtNode").SqrtNode | import("../nodes/operators/powerNode").PowerNode | import("../nodes/operators/fractionNode").FractionNode;
2
2
  //# sourceMappingURL=powerParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"powerParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/powerParser.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAS,MAAM,sHAgBtC,CAAC"}
1
+ {"version":3,"file":"powerParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/powerParser.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,QAAS,MAAM,uKAgBtC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.powerParser = void 0;
4
+ const sqrtNode_1 = require("../nodes/functions/sqrtNode");
4
5
  const numberNode_1 = require("../nodes/numbers/numberNode");
5
6
  const fractionNode_1 = require("../nodes/operators/fractionNode");
6
7
  const powerNode_1 = require("../nodes/operators/powerNode");
@@ -10,7 +11,7 @@ const powerParser = (ans) => {
10
11
  const parsed = (0, latexParser_1.parseAlgebraic)(ans);
11
12
  if (!parsed)
12
13
  return false;
13
- if ((0, powerNode_1.isPowerNode)(parsed))
14
+ if ((0, powerNode_1.isPowerNode)(parsed) || (0, sqrtNode_1.isSqrtNode)(parsed))
14
15
  return parsed;
15
16
  if ((0, fractionNode_1.isFractionNode)(parsed) &&
16
17
  (0, numberNode_1.isNumberNode)(parsed.leftChild) &&
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trinomParser = void 0;
4
4
  const addNode_1 = require("../nodes/operators/addNode");
5
5
  const substractNode_1 = require("../nodes/operators/substractNode");
6
+ const monomNode_1 = require("../nodes/polynomials/monomNode");
6
7
  const latexParser_1 = require("./latexParser");
7
- const monomParser_1 = require("./monomParser");
8
8
  const trinomParser = (ans, variable = "x") => {
9
9
  try {
10
10
  //! difficile !
@@ -13,7 +13,7 @@ const trinomParser = (ans, variable = "x") => {
13
13
  const parsed = (0, latexParser_1.parseAlgebraic)(ans);
14
14
  if (!parsed)
15
15
  return false;
16
- if ((0, monomParser_1.isMonom)(parsed, { variable, maxDegree: 2, minDegree: 2 }))
16
+ if ((0, monomNode_1.isMonom)(parsed, { variable, maxDegree: 2, minDegree: 2 }))
17
17
  return parsed;
18
18
  if ((0, addNode_1.isAddNode)(parsed) || (0, substractNode_1.isSubstractNode)(parsed)) {
19
19
  const children = [parsed.leftChild, parsed.rightChild];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "2.2.78",
3
+ "version": "2.2.79",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [