math-exercises 2.2.59 → 2.2.61

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 (94) hide show
  1. package/lib/exercises/exercise.d.ts +6 -0
  2. package/lib/exercises/exercise.d.ts.map +1 -1
  3. package/lib/exercises/math/calcul/fractions/fractionAndIntegerDivision.d.ts +1 -1
  4. package/lib/exercises/math/calcul/fractions/fractionAndIntegerDivision.d.ts.map +1 -1
  5. package/lib/exercises/math/calcul/fractions/fractionAndIntegerDivision.js +75 -37
  6. package/lib/exercises/math/calcul/fractions/fractionAndIntegerProduct.d.ts +6 -2
  7. package/lib/exercises/math/calcul/fractions/fractionAndIntegerProduct.d.ts.map +1 -1
  8. package/lib/exercises/math/calcul/fractions/fractionAndIntegerProduct.js +88 -40
  9. package/lib/exercises/math/calcul/fractions/fractionAndIntegerSum.d.ts +4 -1
  10. package/lib/exercises/math/calcul/fractions/fractionAndIntegerSum.d.ts.map +1 -1
  11. package/lib/exercises/math/calcul/fractions/fractionAndIntegerSum.js +23 -5
  12. package/lib/exercises/math/calcul/fractions/fractionsDivision.d.ts.map +1 -1
  13. package/lib/exercises/math/calcul/fractions/fractionsDivision.js +24 -6
  14. package/lib/exercises/math/calcul/fractions/fractionsProduct.d.ts +4 -1
  15. package/lib/exercises/math/calcul/fractions/fractionsProduct.d.ts.map +1 -1
  16. package/lib/exercises/math/calcul/fractions/fractionsProduct.js +24 -6
  17. package/lib/exercises/math/calcul/fractions/fractionsSum.d.ts +2 -2
  18. package/lib/exercises/math/calcul/fractions/fractionsSum.d.ts.map +1 -1
  19. package/lib/exercises/math/calcul/fractions/fractionsSum.js +20 -11
  20. package/lib/exercises/math/calcul/fractions/fractionsSumsMultiplesDenominators.js +1 -1
  21. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.js +1 -1
  22. package/lib/exercises/math/calcul/fractions/fractionsSumsSameDenominators.d.ts.map +1 -1
  23. package/lib/exercises/math/calcul/fractions/fractionsSumsSameDenominators.js +2 -2
  24. package/lib/exercises/math/calcul/proportionality/findCoeffInProportionalTableNonIntegers.d.ts +7 -2
  25. package/lib/exercises/math/calcul/proportionality/findCoeffInProportionalTableNonIntegers.d.ts.map +1 -1
  26. package/lib/exercises/math/calcul/proportionality/findCoeffInProportionalTableNonIntegers.js +52 -44
  27. package/lib/exercises/math/calcul/proportionality/isTableProportionalNonInteger.d.ts +7 -2
  28. package/lib/exercises/math/calcul/proportionality/isTableProportionalNonInteger.d.ts.map +1 -1
  29. package/lib/exercises/math/calcul/proportionality/isTableProportionalNonInteger.js +55 -40
  30. package/lib/exercises/math/calculLitteral/systems/basicSystemResolution.d.ts.map +1 -1
  31. package/lib/exercises/math/calculLitteral/systems/basicSystemResolution.js +5 -2
  32. package/lib/exercises/math/functions/affines/signFunction.js +1 -1
  33. package/lib/exercises/math/functions/trinoms/factorizedFormFromRoots.d.ts.map +1 -1
  34. package/lib/exercises/math/functions/trinoms/factorizedFormFromRoots.js +1 -0
  35. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts.map +1 -1
  36. package/lib/exercises/math/geometry/thales/thalesCalcul.js +6 -0
  37. package/lib/exercises/math/powers/powersDivision.d.ts.map +1 -1
  38. package/lib/exercises/math/powers/powersDivision.js +19 -11
  39. package/lib/exercises/math/powers/powersPower.d.ts.map +1 -1
  40. package/lib/exercises/math/powers/powersPower.js +19 -11
  41. package/lib/exercises/math/powers/powersProduct.d.ts +4 -1
  42. package/lib/exercises/math/powers/powersProduct.d.ts.map +1 -1
  43. package/lib/exercises/math/powers/powersProduct.js +84 -35
  44. package/lib/exercises/math/probaStat/binomial/binomialInequation.d.ts.map +1 -1
  45. package/lib/exercises/math/probaStat/binomial/binomialInequation.js +6 -0
  46. package/lib/exercises/math/probaStat/probaFromTableNoContext.d.ts.map +1 -1
  47. package/lib/exercises/math/probaStat/probaFromTableNoContext.js +5 -1
  48. package/lib/exercises/math/probaStat/probaFromTableWithContext.d.ts.map +1 -1
  49. package/lib/exercises/math/probaStat/probaFromTableWithContext.js +19 -3
  50. package/lib/exercises/math/spaceGeometry/lineAndPlaneRelativePosition.d.ts +1 -0
  51. package/lib/exercises/math/spaceGeometry/lineAndPlaneRelativePosition.d.ts.map +1 -0
  52. package/lib/exercises/math/spaceGeometry/lineAndPlaneRelativePosition.js +84 -0
  53. package/lib/exercises/math/squareRoots/index.d.ts +2 -0
  54. package/lib/exercises/math/squareRoots/index.d.ts.map +1 -1
  55. package/lib/exercises/math/squareRoots/index.js +2 -0
  56. package/lib/exercises/math/squareRoots/squareRootsFractions.d.ts +10 -0
  57. package/lib/exercises/math/squareRoots/squareRootsFractions.d.ts.map +1 -0
  58. package/lib/exercises/math/squareRoots/squareRootsFractions.js +93 -0
  59. package/lib/exercises/math/squareRoots/squareRootsToSquare.d.ts +10 -0
  60. package/lib/exercises/math/squareRoots/squareRootsToSquare.d.ts.map +1 -0
  61. package/lib/exercises/math/squareRoots/squareRootsToSquare.js +116 -0
  62. package/lib/exercises/math/trigonometry/mainAngleMeasure.js +13 -13
  63. package/lib/index.d.ts +41 -11
  64. package/lib/index.d.ts.map +1 -1
  65. package/lib/math/geometry/line.d.ts.map +1 -1
  66. package/lib/math/geometry/line.js +3 -1
  67. package/lib/math/geometry/vector.d.ts.map +1 -1
  68. package/lib/math/geometry/vector.js +1 -7
  69. package/lib/math/numbers/rationals/rational.d.ts +1 -1
  70. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  71. package/lib/math/numbers/rationals/rational.js +18 -6
  72. package/lib/math/numbers/reals/extendedRingElement.d.ts +1 -1
  73. package/lib/playground.d.ts.map +1 -1
  74. package/lib/playground.js +6 -1
  75. package/lib/tree/nodes/functions/absNode.d.ts +1 -1
  76. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  77. package/lib/tree/nodes/functions/absNode.js +9 -1
  78. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  79. package/lib/tree/nodes/functions/sqrtNode.js +9 -0
  80. package/lib/tree/nodes/operators/operatorNode.d.ts +2 -1
  81. package/lib/tree/nodes/operators/operatorNode.d.ts.map +1 -1
  82. package/lib/tree/nodes/operators/operatorNode.js +1 -0
  83. package/lib/tree/nodes/operators/powerNode.d.ts +2 -0
  84. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  85. package/lib/tree/nodes/operators/powerNode.js +21 -83
  86. package/lib/tree/parsers/powerParser.d.ts +2 -0
  87. package/lib/tree/parsers/powerParser.d.ts.map +1 -0
  88. package/lib/tree/parsers/powerParser.js +26 -0
  89. package/lib/tree/parsers/rationalParser.d.ts +1 -1
  90. package/lib/tree/parsers/rationalParser.d.ts.map +1 -1
  91. package/lib/tree/parsers/rationalParser.js +14 -9
  92. package/lib/tree/parsers/spacePointParser.d.ts.map +1 -1
  93. package/lib/tree/parsers/spaceVectorParser.d.ts.map +1 -1
  94. package/package.json +1 -1
@@ -1,20 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SquareNode = exports.PowerNode = exports.square = exports.isPowerNode = void 0;
3
+ exports.SquareNode = exports.PowerNode = exports.power = exports.square = exports.isSquareNode = exports.isPowerNode = void 0;
4
4
  // import { pow } from "mathjs";
5
5
  const node_1 = require("../node");
6
6
  const operatorNode_1 = require("./operatorNode");
7
7
  const numberNode_1 = require("../numbers/numberNode");
8
8
  const multiplyNode_1 = require("./multiplyNode");
9
+ const sqrtNode_1 = require("../functions/sqrtNode");
9
10
  function isPowerNode(a) {
10
11
  return (0, operatorNode_1.isOperatorNode)(a) && a.id === operatorNode_1.OperatorIds.power;
11
12
  }
12
13
  exports.isPowerNode = isPowerNode;
14
+ function isSquareNode(a) {
15
+ return (0, operatorNode_1.isOperatorNode)(a) && a.id === operatorNode_1.OperatorIds.square;
16
+ }
17
+ exports.isSquareNode = isSquareNode;
13
18
  const square = (a) => {
14
19
  const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
15
20
  return new SquareNode(nodeA);
16
21
  };
17
22
  exports.square = square;
23
+ const power = (a, b, opts) => {
24
+ const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
25
+ const nodeB = typeof b === "number" ? b.toTree() : typeof b === "string" ? b.toTree() : b;
26
+ return new PowerNode(nodeA, nodeB, opts);
27
+ };
28
+ exports.power = power;
18
29
  class PowerNode {
19
30
  constructor(leftChild, rightChild, opts) {
20
31
  this.id = operatorNode_1.OperatorIds.power;
@@ -89,93 +100,13 @@ class PowerNode {
89
100
  toDetailedEvaluation(vars) {
90
101
  return new PowerNode(this.leftChild.toDetailedEvaluation(vars), this.rightChild.toDetailedEvaluation(vars));
91
102
  }
92
- // simplify(): AlgebraicNode {
93
- // const leftSimplified = this.leftChild.simplify();
94
- // const rightSimplified = this.rightChild.simplify();
95
- // const copy = new PowerNode(leftSimplified, rightSimplified, this.opts);
96
- // if (isNumberNode(rightSimplified)) {
97
- // const value = rightSimplified.value;
98
- // if (value === 0) return new NumberNode(1);
99
- // if (value === 1) return leftSimplified;
100
- // }
101
- // if (isNumberNode(leftSimplified)) {
102
- // const value = leftSimplified.value;
103
- // if (value === 0) return leftSimplified;
104
- // if (value === 1) return leftSimplified;
105
- // }
106
- // let externals: AlgebraicNode[] = [];
107
- // //TODO Fractions
108
- // const recursive = (node: AlgebraicNode) => {
109
- // if (isMultiplyNode(node)) {
110
- // recursive(node.leftChild);
111
- // recursive(node.rightChild);
112
- // } else {
113
- // externals.push(node);
114
- // }
115
- // };
116
- // recursive(copy.leftChild)
117
- // const simplifyIteration = () => {
118
- // for (let i = 0; i < externals.length - 1; i++) {
119
- // const left = externals[i];
120
- // for (let j = i + 1; j < externals.length; j++) {
121
- // const right = externals[j];
122
- // const simplified = simplifyExternalNodes(left, right);
123
- // if (simplified) {
124
- // externals[i] = simplified;
125
- // externals.splice(j, 1);
126
- // if (isNumberNode(simplified) && simplified.value === 1) {
127
- // externals.splice(i, 1);
128
- // }
129
- // simplifyIteration();
130
- // return;
131
- // }
132
- // }
133
- // }
134
- // };
135
- // simplifyIteration();
136
- // if (isNumberNode(rightSimplified) && isNumberNode(leftSimplified)) {
137
- // const value = this.evaluate({});
138
- // // à partir de ^21 et de ^-7, javascript returns des écritures scientifiques
139
- // if (
140
- // Math.abs(value) < Math.pow(10, 21) ||
141
- // Math.abs(value) < Math.pow(10, -7)
142
- // ) {
143
- // return new NumberNode(value);
144
- // } else return this;
145
- // }
146
- // if (isExpNode(leftSimplified) && isLogNode(rightSimplified)) {
147
- // return rightSimplified.child;
148
- // }
149
- // if (isPowerNode(leftSimplified)) {
150
- // return new PowerNode(
151
- // leftSimplified.leftChild,
152
- // new MultiplyNode(leftSimplified.rightChild, rightSimplified),
153
- // ).simplify();
154
- // }
155
- // if (isSqrtNode(leftSimplified) && isNumberNode(rightSimplified)) {
156
- // const powerValue = rightSimplified.value;
157
- // const powerIsEven = powerValue % 2 === 0;
158
- // if (powerIsEven) {
159
- // return new PowerNode(
160
- // leftSimplified.child,
161
- // new NumberNode(powerValue / 2),
162
- // ).simplify();
163
- // } else {
164
- // const parityPower = Math.floor(powerValue / 2);
165
- // return new MultiplyNode(
166
- // new PowerNode(leftSimplified.child, new NumberNode(parityPower)),
167
- // leftSimplified,
168
- // ).simplify();
169
- // }
170
- // }
171
- // return this;
172
- // // puissances négatives ?
173
- // }
174
103
  simplify(opts) {
175
104
  const leftSimplified = this.leftChild.simplify(opts);
176
105
  const rightSimplified = this.rightChild.simplify(opts);
177
106
  const copy = new PowerNode(leftSimplified, rightSimplified, this.opts);
178
107
  //! temporaire
108
+ if ((0, numberNode_1.isNumberNode)(leftSimplified) && leftSimplified.value === 1)
109
+ return (1).toTree();
179
110
  if ((0, numberNode_1.isNumberNode)(rightSimplified) && rightSimplified.value === 0) {
180
111
  return new numberNode_1.NumberNode(1);
181
112
  }
@@ -185,9 +116,15 @@ class PowerNode {
185
116
  if (isPowerNode(leftSimplified)) {
186
117
  return new PowerNode(leftSimplified.leftChild, new multiplyNode_1.MultiplyNode(rightSimplified, leftSimplified.rightChild).simplify(opts)).simplify(opts);
187
118
  }
119
+ if ((0, sqrtNode_1.isSqrtNode)(leftSimplified) &&
120
+ (0, numberNode_1.isNumberNode)(rightSimplified) &&
121
+ rightSimplified.value === 2) {
122
+ return leftSimplified.child;
123
+ }
188
124
  if ((0, multiplyNode_1.isMultiplyNode)(leftSimplified)) {
189
125
  return new multiplyNode_1.MultiplyNode(new PowerNode(leftSimplified.leftChild, rightSimplified), new PowerNode(leftSimplified.rightChild, rightSimplified)).simplify(opts);
190
126
  }
127
+ //! j'aime po ce truc
191
128
  if (!opts?.keepPowers &&
192
129
  (0, numberNode_1.isNumberNode)(copy.rightChild) &&
193
130
  copy.rightChild.value === 2) {
@@ -205,6 +142,7 @@ exports.PowerNode = PowerNode;
205
142
  class SquareNode extends PowerNode {
206
143
  constructor(child, opts) {
207
144
  super(child, new numberNode_1.NumberNode(2), opts);
145
+ this.id = operatorNode_1.OperatorIds.square;
208
146
  }
209
147
  }
210
148
  exports.SquareNode = SquareNode;
@@ -0,0 +1,2 @@
1
+ export declare const powerParser: (ans: string) => false | import("../nodes/operators/fractionNode").FractionNode | import("../nodes/operators/powerNode").PowerNode;
2
+ //# sourceMappingURL=powerParser.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.powerParser = void 0;
4
+ const numberNode_1 = require("../nodes/numbers/numberNode");
5
+ const fractionNode_1 = require("../nodes/operators/fractionNode");
6
+ const powerNode_1 = require("../nodes/operators/powerNode");
7
+ const latexParser_1 = require("./latexParser");
8
+ const powerParser = (ans) => {
9
+ try {
10
+ const parsed = (0, latexParser_1.parseAlgebraic)(ans);
11
+ if (!parsed)
12
+ return false;
13
+ if ((0, powerNode_1.isPowerNode)(parsed))
14
+ return parsed;
15
+ if ((0, fractionNode_1.isFractionNode)(parsed) &&
16
+ (0, numberNode_1.isNumberNode)(parsed.leftChild) &&
17
+ parsed.leftChild.value === 1 &&
18
+ (0, powerNode_1.isPowerNode)(parsed.rightChild))
19
+ return parsed;
20
+ return false;
21
+ }
22
+ catch (err) {
23
+ return false;
24
+ }
25
+ };
26
+ exports.powerParser = powerParser;
@@ -1,3 +1,3 @@
1
1
  import { FractionNode } from "../nodes/operators/fractionNode";
2
- export declare const rationalParser: (ans: string) => false | import("../nodes/algebraicNode").AlgebraicNode | FractionNode | undefined;
2
+ export declare const rationalParser: (ans: string) => false | import("../nodes/algebraicNode").AlgebraicNode | FractionNode | import("../nodes/functions/oppositeNode").OppositeNode | undefined;
3
3
  //# sourceMappingURL=rationalParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rationalParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/rationalParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,eAAO,MAAM,cAAc,QAAS,MAAM,sFAyBzC,CAAC"}
1
+ {"version":3,"file":"rationalParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/rationalParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAQ,MAAM,iCAAiC,CAAC;AAGrE,eAAO,MAAM,cAAc,QAAS,MAAM,+IA2BzC,CAAC"}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rationalParser = void 0;
4
+ const oppositeNode_1 = require("../nodes/functions/oppositeNode");
4
5
  const fractionNode_1 = require("../nodes/operators/fractionNode");
5
6
  const numberParser_1 = require("./numberParser");
6
7
  const rationalParser = (ans) => {
7
8
  const nb = (0, numberParser_1.numberParser)(ans);
8
9
  if (nb !== false) {
9
- return nb.toTree();
10
+ return nb.unfrenchify().toTree();
10
11
  }
11
12
  if (!ans.includes("\\frac"))
12
13
  return false;
@@ -18,15 +19,19 @@ const rationalParser = (ans) => {
18
19
  if (parsedFracs.some((e) => e === false))
19
20
  return false;
20
21
  const nodeFracs = fracs.map((e) => e.unfrenchify().toTree());
21
- return new fractionNode_1.FractionNode(nodeFracs[0], nodeFracs[1]);
22
+ return (0, fractionNode_1.frac)(nodeFracs[0], nodeFracs[1]);
23
+ }
24
+ if (ans.startsWith("-")) {
25
+ const fracString = ans.slice(1);
26
+ const fracs = fracString.replaceAll("}", "").split("{").slice(1);
27
+ if (fracs.length !== 2)
28
+ return false;
29
+ const parsedFracs = fracs.map((e) => (0, numberParser_1.numberParser)(e));
30
+ if (parsedFracs.some((e) => e === false))
31
+ return false;
32
+ const nodeFracs = fracs.map((e) => e.unfrenchify().toTree());
33
+ return (0, oppositeNode_1.opposite)((0, fractionNode_1.frac)(nodeFracs[0], nodeFracs[1]));
22
34
  }
23
- // if(ans.startsWith("-")){
24
- // const fracs = ans.replaceAll("}","").split('{').slice(1)
25
- // if(fracs.length !== 2) return false
26
- // const parsedFracs = fracs.map((e)=>numberParser(e))
27
- // if(parsedFracs.some((e)=>e===false)) return false
28
- // return ans;
29
- // }
30
35
  // const nb = ans.unfrenchify();
31
36
  // if (isNaN(nb)) return false;
32
37
  // return nb.frenchify();
@@ -1 +1 @@
1
- {"version":3,"file":"spacePointParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/spacePointParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAK5D,eAAO,MAAM,gBAAgB,QAAS,MAAM,uBAW3C,CAAC"}
1
+ {"version":3,"file":"spacePointParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/spacePointParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,eAAO,MAAM,gBAAgB,QAAS,MAAM,uBAW3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spaceVectorParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/spaceVectorParser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,iBAAiB,QAAS,MAAM,wBAW5C,CAAC"}
1
+ {"version":3,"file":"spaceVectorParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/spaceVectorParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,iBAAiB,QAAS,MAAM,wBAW5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "2.2.59",
3
+ "version": "2.2.61",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [