math-exercises 2.2.69 → 2.2.70

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 (196) hide show
  1. package/lib/exercises/math/calcul/arithmetics/divisorsList.d.ts.map +1 -1
  2. package/lib/exercises/math/calcul/arithmetics/divisorsList.js +2 -1
  3. package/lib/exercises/math/calcul/arithmetics/primeNumbers.d.ts.map +1 -1
  4. package/lib/exercises/math/calcul/arithmetics/primeNumbers.js +2 -1
  5. package/lib/exercises/math/calcul/fractions/fractionsOperations.d.ts.map +1 -1
  6. package/lib/exercises/math/calcul/fractions/fractionsOperations.js +1 -0
  7. package/lib/exercises/math/calculLitteral/equation/equationType1Exercise.d.ts.map +1 -1
  8. package/lib/exercises/math/calculLitteral/equation/equationType1Exercise.js +3 -6
  9. package/lib/exercises/math/calculLitteral/equation/equationType2Exercise.d.ts.map +1 -1
  10. package/lib/exercises/math/calculLitteral/equation/equationType2Exercise.js +3 -8
  11. package/lib/exercises/math/calculLitteral/equation/equationType3Exercise.d.ts.map +1 -1
  12. package/lib/exercises/math/calculLitteral/equation/equationType3Exercise.js +7 -9
  13. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
  14. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.js +6 -19
  15. package/lib/exercises/math/calculLitteral/factorisation/factoByX.d.ts +8 -0
  16. package/lib/exercises/math/calculLitteral/factorisation/factoByX.d.ts.map +1 -0
  17. package/lib/exercises/math/calculLitteral/factorisation/factoByX.js +146 -0
  18. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts +1 -0
  19. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts.map +1 -1
  20. package/lib/exercises/math/calculLitteral/factorisation/index.js +1 -0
  21. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.d.ts.map +1 -1
  22. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.js +2 -5
  23. package/lib/exercises/math/functions/trinoms/coefficientsIdentification.js +3 -3
  24. package/lib/exercises/math/functions/trinoms/findSecondRoot.d.ts +2 -2
  25. package/lib/exercises/math/functions/trinoms/findSecondRoot.d.ts.map +1 -1
  26. package/lib/exercises/math/functions/trinoms/findSecondRoot.js +5 -5
  27. package/lib/exercises/math/functions/trinoms/rootsProduct.d.ts +2 -2
  28. package/lib/exercises/math/functions/trinoms/rootsProduct.d.ts.map +1 -1
  29. package/lib/exercises/math/functions/trinoms/rootsProduct.js +6 -6
  30. package/lib/exercises/math/functions/trinoms/rootsSum.d.ts +2 -2
  31. package/lib/exercises/math/functions/trinoms/rootsSum.d.ts.map +1 -1
  32. package/lib/exercises/math/functions/trinoms/rootsSum.js +7 -7
  33. package/lib/exercises/math/functions/trinoms/trinomSignFromRoots.js +6 -6
  34. package/lib/exercises/math/geometry/areas/rightTriangleArea.d.ts +3 -1
  35. package/lib/exercises/math/geometry/areas/rightTriangleArea.d.ts.map +1 -1
  36. package/lib/exercises/math/geometry/areas/rightTriangleArea.js +10 -22
  37. package/lib/exercises/math/geometry/areas/triangleArea.d.ts +6 -1
  38. package/lib/exercises/math/geometry/areas/triangleArea.d.ts.map +1 -1
  39. package/lib/exercises/math/geometry/areas/triangleArea.js +34 -48
  40. package/lib/exercises/math/geometry/index.d.ts +1 -0
  41. package/lib/exercises/math/geometry/index.d.ts.map +1 -1
  42. package/lib/exercises/math/geometry/index.js +1 -0
  43. package/lib/exercises/math/geometry/pythagore/isTriangleRight.d.ts.map +1 -1
  44. package/lib/exercises/math/geometry/pythagore/pythagore.d.ts +0 -3
  45. package/lib/exercises/math/geometry/pythagore/pythagore.d.ts.map +1 -1
  46. package/lib/exercises/math/geometry/pythagore/pythagore.js +19 -25
  47. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts +1 -2
  48. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts.map +1 -1
  49. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.js +30 -65
  50. package/lib/exercises/math/geometry/quadrilaterals/index.d.ts +2 -0
  51. package/lib/exercises/math/geometry/quadrilaterals/index.d.ts.map +1 -0
  52. package/lib/exercises/math/geometry/quadrilaterals/index.js +17 -0
  53. package/lib/exercises/math/geometry/quadrilaterals/quadrilateralRecognition.d.ts +14 -0
  54. package/lib/exercises/math/geometry/quadrilaterals/quadrilateralRecognition.d.ts.map +1 -0
  55. package/lib/exercises/math/geometry/quadrilaterals/quadrilateralRecognition.js +221 -0
  56. package/lib/exercises/math/geometry/thales/index.d.ts.map +1 -1
  57. package/lib/exercises/math/geometry/thales/index.js +0 -1
  58. package/lib/exercises/math/geometry/thales/thales.js +2 -2
  59. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts +3 -4
  60. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts.map +1 -1
  61. package/lib/exercises/math/geometry/thales/thalesCalcul.js +69 -78
  62. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.d.ts.map +1 -1
  63. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.js +4 -3
  64. package/lib/exercises/math/geometry/volumes/sphereVolume.js +1 -1
  65. package/lib/exercises/math/trigonometry/trigonometry.d.ts +2 -3
  66. package/lib/exercises/math/trigonometry/trigonometry.d.ts.map +1 -1
  67. package/lib/exercises/math/trigonometry/trigonometry.js +32 -31
  68. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.d.ts +3 -2
  69. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.d.ts.map +1 -1
  70. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.js +18 -28
  71. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.d.ts +5 -4
  72. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.d.ts.map +1 -1
  73. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.js +60 -56
  74. package/lib/exercises/pc/index.d.ts +0 -4
  75. package/lib/exercises/pc/index.d.ts.map +1 -1
  76. package/lib/exercises/pc/index.js +6 -4
  77. package/lib/exercises/utils/geogebra/toGGBCommandsProps.d.ts +1 -0
  78. package/lib/exercises/utils/geogebra/toGGBCommandsProps.d.ts.map +1 -1
  79. package/lib/exercises/vea/equationVEA.d.ts +2 -0
  80. package/lib/exercises/vea/equationVEA.d.ts.map +1 -0
  81. package/lib/exercises/vea/equationVEA.js +24 -0
  82. package/lib/exercises/vea/rationalVEA.d.ts.map +1 -1
  83. package/lib/exercises/vea/sqrtVEA.d.ts +6 -0
  84. package/lib/exercises/vea/sqrtVEA.d.ts.map +1 -0
  85. package/lib/exercises/vea/sqrtVEA.js +30 -0
  86. package/lib/geogebra/geogebraConstructor.d.ts +2 -0
  87. package/lib/geogebra/geogebraConstructor.d.ts.map +1 -1
  88. package/lib/geogebra/geogebraConstructor.js +7 -0
  89. package/lib/index.d.ts +28 -46
  90. package/lib/index.d.ts.map +1 -1
  91. package/lib/math/complex/complex.d.ts +1 -1
  92. package/lib/math/geometry/angle.d.ts +26 -0
  93. package/lib/math/geometry/angle.d.ts.map +1 -0
  94. package/lib/math/geometry/angle.js +73 -0
  95. package/lib/math/geometry/line.d.ts +5 -1
  96. package/lib/math/geometry/line.d.ts.map +1 -1
  97. package/lib/math/geometry/line.js +17 -0
  98. package/lib/math/geometry/parallelogram.d.ts +23 -0
  99. package/lib/math/geometry/parallelogram.d.ts.map +1 -0
  100. package/lib/math/geometry/parallelogram.js +70 -0
  101. package/lib/math/geometry/point.d.ts +3 -0
  102. package/lib/math/geometry/point.d.ts.map +1 -1
  103. package/lib/math/geometry/point.js +16 -0
  104. package/lib/math/geometry/quadrilateral.d.ts +15 -0
  105. package/lib/math/geometry/quadrilateral.d.ts.map +1 -0
  106. package/lib/math/geometry/quadrilateral.js +38 -0
  107. package/lib/math/geometry/rectangle.d.ts +24 -0
  108. package/lib/math/geometry/rectangle.d.ts.map +1 -0
  109. package/lib/math/geometry/rectangle.js +64 -0
  110. package/lib/math/geometry/rhombus.d.ts +19 -0
  111. package/lib/math/geometry/rhombus.d.ts.map +1 -0
  112. package/lib/math/geometry/rhombus.js +46 -0
  113. package/lib/math/geometry/rightTriangle.d.ts +31 -0
  114. package/lib/math/geometry/rightTriangle.d.ts.map +1 -0
  115. package/lib/math/geometry/rightTriangle.js +113 -0
  116. package/lib/math/geometry/segment.d.ts +24 -6
  117. package/lib/math/geometry/segment.d.ts.map +1 -1
  118. package/lib/math/geometry/segment.js +70 -4
  119. package/lib/math/geometry/square.d.ts +22 -0
  120. package/lib/math/geometry/square.d.ts.map +1 -0
  121. package/lib/math/geometry/square.js +43 -0
  122. package/lib/math/geometry/triangle.d.ts +45 -45
  123. package/lib/math/geometry/triangle.d.ts.map +1 -1
  124. package/lib/math/geometry/triangle.js +159 -186
  125. package/lib/math/geometry/vector.d.ts +2 -2
  126. package/lib/math/geometry/vector.d.ts.map +1 -1
  127. package/lib/math/geometry/vector.js +18 -9
  128. package/lib/math/numbers/rationals/rational.d.ts +1 -1
  129. package/lib/math/numbers/reals/extendedRingElement.d.ts +1 -1
  130. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  131. package/lib/math/numbers/reals/real.js +3 -0
  132. package/lib/math/polynomials/generalAffine.d.ts.map +1 -1
  133. package/lib/math/polynomials/generalAffine.js +1 -1
  134. package/lib/math/polynomials/polynomial.d.ts +1 -1
  135. package/lib/math/polynomials/trinom.d.ts +2 -2
  136. package/lib/math/utils/geometry/pythagoricianTriplets.d.ts +1 -0
  137. package/lib/math/utils/geometry/pythagoricianTriplets.d.ts.map +1 -1
  138. package/lib/math/utils/geometry/pythagoricianTriplets.js +14 -1
  139. package/lib/math/utils/random/randfloat.d.ts +1 -1
  140. package/lib/math/utils/random/randfloat.d.ts.map +1 -1
  141. package/lib/math/utils/random/randfloat.js +8 -1
  142. package/lib/math/utils/random/randint.d.ts +8 -1
  143. package/lib/math/utils/random/randint.d.ts.map +1 -1
  144. package/lib/math/utils/random/randint.js +6 -1
  145. package/lib/playground.d.ts.map +1 -1
  146. package/lib/playground.js +1 -8
  147. package/lib/tree/nodes/functions/absNode.d.ts +1 -1
  148. package/lib/tree/nodes/functions/functionNode.d.ts +2 -2
  149. package/lib/tree/nodes/functions/functionNode.d.ts.map +1 -1
  150. package/lib/tree/nodes/functions/oppositeNode.d.ts +5 -5
  151. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  152. package/lib/tree/nodes/node.d.ts +3 -1
  153. package/lib/tree/nodes/node.d.ts.map +1 -1
  154. package/lib/tree/nodes/node.js +1 -0
  155. package/lib/tree/nodes/nodeConstructor.d.ts.map +1 -1
  156. package/lib/tree/nodes/nodeConstructor.js +4 -0
  157. package/lib/tree/nodes/numbers/numberNode.d.ts +2 -0
  158. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  159. package/lib/tree/nodes/numbers/numberNode.js +6 -1
  160. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  161. package/lib/tree/nodes/operators/addNode.js +2 -1
  162. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  163. package/lib/tree/nodes/operators/multiplyNode.js +3 -3
  164. package/lib/tree/nodes/polynomials/trinomNode.d.ts +70 -0
  165. package/lib/tree/nodes/polynomials/trinomNode.d.ts.map +1 -0
  166. package/lib/tree/nodes/polynomials/trinomNode.js +156 -0
  167. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  168. package/lib/tree/nodes/variables/variableNode.js +1 -1
  169. package/lib/tree/parsers/affineParser.d.ts.map +1 -1
  170. package/lib/tree/parsers/affineParser.js +1 -0
  171. package/lib/tree/parsers/discreteSetParser.d.ts +3 -0
  172. package/lib/tree/parsers/discreteSetParser.d.ts.map +1 -0
  173. package/lib/tree/parsers/discreteSetParser.js +23 -0
  174. package/lib/tree/parsers/equationSolutionParser.d.ts +1 -1
  175. package/lib/tree/parsers/equationSolutionParser.d.ts.map +1 -1
  176. package/lib/tree/parsers/equationSolutionParser.js +15 -4
  177. package/lib/tree/parsers/latexParser.d.ts +5 -1
  178. package/lib/tree/parsers/latexParser.d.ts.map +1 -1
  179. package/lib/tree/parsers/latexParser.js +17 -3
  180. package/lib/tree/parsers/monomParser.js +2 -2
  181. package/lib/tree/parsers/powerParser.d.ts +1 -1
  182. package/lib/tree/parsers/rationalParser.d.ts +1 -1
  183. package/lib/tree/parsers/rationalParser.d.ts.map +1 -1
  184. package/lib/tree/parsers/rationalParser.js +28 -24
  185. package/lib/tree/parsers/sqrtParser.d.ts +9 -0
  186. package/lib/tree/parsers/sqrtParser.d.ts.map +1 -0
  187. package/lib/tree/parsers/sqrtParser.js +52 -0
  188. package/lib/tree/parsers/trinomParser.d.ts +1 -1
  189. package/lib/tree/parsers/trinomParser.d.ts.map +1 -1
  190. package/lib/tree/parsers/trinomParser.js +14 -2
  191. package/lib/tree/utilities/functionComposition.d.ts +1 -1
  192. package/lib/tree/utilities/functionComposition.d.ts.map +1 -1
  193. package/lib/utils/arrays/rotation.d.ts +8 -0
  194. package/lib/utils/arrays/rotation.d.ts.map +1 -0
  195. package/lib/utils/arrays/rotation.js +17 -0
  196. package/package.json +1 -1
@@ -3,19 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.equationSolutionParser = void 0;
4
4
  const algebraicNode_1 = require("../nodes/algebraicNode");
5
5
  const equalNode_1 = require("../nodes/equations/equalNode");
6
- const hasVariableNode_1 = require("../nodes/hasVariableNode");
6
+ const variableNode_1 = require("../nodes/variables/variableNode");
7
7
  const latexParser_1 = require("./latexParser");
8
- const equationSolutionParser = (str) => {
8
+ const equationSolutionParser = (str, variable = "x") => {
9
9
  try {
10
10
  const parsed = (0, latexParser_1.parseLatex)(str);
11
11
  if ((0, equalNode_1.isEqualNode)(parsed)) {
12
12
  const children = [parsed.leftChild, parsed.rightChild];
13
- const scalar = children.find((e) => !(0, hasVariableNode_1.hasVariableNode)(e));
14
- if (!scalar)
13
+ const varNode = (0, variableNode_1.isVariableNode)(parsed.leftChild)
14
+ ? 0
15
+ : (0, variableNode_1.isVariableNode)(parsed.rightChild)
16
+ ? 1
17
+ : undefined;
18
+ if (varNode === undefined)
19
+ return false;
20
+ if (children[varNode].name !== "x")
21
+ return false;
22
+ const scalar = children[(varNode + 1) % 2];
23
+ if (!(0, algebraicNode_1.isAlgebraicNode)(scalar) || !scalar.isNumeric)
15
24
  return false;
16
25
  return scalar;
17
26
  }
18
27
  else if ((0, algebraicNode_1.isAlgebraicNode)(parsed)) {
28
+ if (!parsed.isNumeric)
29
+ return false;
19
30
  return parsed;
20
31
  }
21
32
  else {
@@ -2,6 +2,10 @@ import { AlgebraicNode } from "../nodes/algebraicNode";
2
2
  import { EqualNode } from "../nodes/equations/equalNode";
3
3
  import { InequationNode } from "../nodes/inequations/inequationNode";
4
4
  export declare const tokenize: (latex: string) => string[];
5
- export declare const parseAlgebraic: (latex: string) => AlgebraicNode;
5
+ type ParserOptions = {
6
+ allowStartingPower?: boolean;
7
+ };
8
+ export declare const parseAlgebraic: (latex: string, opts?: ParserOptions) => AlgebraicNode;
6
9
  export declare const parseLatex: (latex: string) => AlgebraicNode | EqualNode | InequationNode;
10
+ export {};
7
11
  //# sourceMappingURL=latexParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"latexParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/latexParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAkDrE,eAAO,MAAM,QAAQ,UAAW,MAAM,aA4BrC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,kBAa3C,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,MAAM,+CA2CvC,CAAC"}
1
+ {"version":3,"file":"latexParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/latexParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAkDrE,eAAO,MAAM,QAAQ,UAAW,MAAM,aA4BrC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AACF,eAAO,MAAM,cAAc,UAAW,MAAM,SAAS,aAAa,kBAyBjE,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,MAAM,+CA2CvC,CAAC"}
@@ -79,12 +79,26 @@ const tokenize = (latex) => {
79
79
  return tokens;
80
80
  };
81
81
  exports.tokenize = tokenize;
82
- const parseAlgebraic = (latex) => {
83
- const formattedLatex = latex
82
+ const parseAlgebraic = (latex, opts) => {
83
+ let formatedLatex = latex;
84
+ if (!opts?.allowStartingPower && latex.startsWith("^")) {
85
+ if (latex[1] === "{") {
86
+ const endIndex = latex.indexOf("}");
87
+ if (endIndex < 1)
88
+ formatedLatex = latex.slice(2, latex.length);
89
+ else
90
+ formatedLatex =
91
+ latex.slice(2, endIndex) + latex.slice(endIndex + 1, latex.length);
92
+ }
93
+ else {
94
+ formatedLatex.replace("^", "");
95
+ }
96
+ }
97
+ formatedLatex = formatedLatex
84
98
  .replaceAll("\\left", "")
85
99
  .replaceAll("\\right", "");
86
100
  try {
87
- const tokens = (0, exports.tokenize)(formattedLatex);
101
+ const tokens = (0, exports.tokenize)(formatedLatex);
88
102
  if (!isDyck(tokens))
89
103
  throw Error("Problème de parenthèses.");
90
104
  const parsed = buildTree(tokens);
@@ -49,11 +49,11 @@ const isMonomNode = (node, { variable, maxDegree, minDegree } = {
49
49
  if (!numericChild)
50
50
  return false;
51
51
  const varChild = numericChild === "left" ? node.rightChild : node.leftChild;
52
- if ((0, variableNode_1.isVariableNode)(varChild) && varChild.name === "x" && minDegree < 2)
52
+ if ((0, variableNode_1.isVariableNode)(varChild) && varChild.name === variable && minDegree < 2)
53
53
  return true;
54
54
  if ((0, powerNode_1.isPowerNode)(varChild) &&
55
55
  (0, variableNode_1.isVariableNode)(varChild.leftChild) &&
56
- varChild.leftChild.name === "x" &&
56
+ varChild.leftChild.name === variable &&
57
57
  varChild.rightChild.isNumeric) {
58
58
  const powerEv = varChild.rightChild.evaluate();
59
59
  if (maxDegree && powerEv > maxDegree)
@@ -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/operators/fractionNode").FractionNode | import("../nodes/operators/powerNode").PowerNode;
2
2
  //# sourceMappingURL=powerParser.d.ts.map
@@ -1,3 +1,3 @@
1
1
  import { FractionNode } from "../nodes/operators/fractionNode";
2
- export declare const rationalParser: (ans: string) => false | import("../nodes/numbers/numberNode").NumberNode | import("../nodes/numbers/constantNode").ConstantNode | import("../nodes/functions/oppositeNode").OppositeNode | FractionNode;
2
+ export declare const rationalParser: (ans: string) => false | import("../nodes/numbers/constantNode").ConstantNode | import("../nodes/numbers/numberNode").NumberNode | import("../nodes/functions/oppositeNode").OppositeNode<import("../nodes/algebraicNode").AlgebraicNode> | FractionNode;
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":"AACA,OAAO,EAAE,YAAY,EAAQ,MAAM,iCAAiC,CAAC;AAGrE,eAAO,MAAM,cAAc,QAAS,MAAM,4LA2BzC,CAAC"}
1
+ {"version":3,"file":"rationalParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/rationalParser.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAGb,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,cAAc,QAAS,MAAM,4OA0CzC,CAAC"}
@@ -2,39 +2,43 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rationalParser = void 0;
4
4
  const oppositeNode_1 = require("../nodes/functions/oppositeNode");
5
+ const numberNode_1 = require("../nodes/numbers/numberNode");
5
6
  const fractionNode_1 = require("../nodes/operators/fractionNode");
7
+ const latexParser_1 = require("./latexParser");
6
8
  const numberParser_1 = require("./numberParser");
7
9
  const rationalParser = (ans) => {
8
10
  const nb = (0, numberParser_1.numberParser)(ans);
9
11
  if (nb !== false) {
10
12
  return nb.unfrenchify().toTree();
11
13
  }
12
- if (!ans.includes("\\frac"))
14
+ const parsed = (0, latexParser_1.parseAlgebraic)(ans);
15
+ if (!parsed)
13
16
  return false;
14
- if (ans.startsWith("\\frac")) {
15
- const fracs = ans.replaceAll("}", "").split("{").slice(1);
16
- if (fracs.length !== 2)
17
- return false;
18
- const parsedFracs = fracs.map((e) => (0, numberParser_1.numberParser)(e));
19
- if (parsedFracs.some((e) => e === false))
20
- return false;
21
- const nodeFracs = fracs.map((e) => e.unfrenchify().toTree());
22
- if (nodeFracs[1].evaluate() === 0)
23
- return false;
24
- return (0, fractionNode_1.frac)(nodeFracs[0], nodeFracs[1]);
17
+ if ((0, fractionNode_1.isFractionNode)(parsed)) {
18
+ if ((0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.leftChild) &&
19
+ (0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.rightChild)) {
20
+ if (parsed.rightChild.evaluate() === 0)
21
+ return false;
22
+ return parsed;
23
+ }
25
24
  }
26
- if (ans.startsWith("-")) {
27
- const fracString = ans.slice(1);
28
- const fracs = fracString.replaceAll("}", "").split("{").slice(1);
29
- if (fracs.length !== 2)
30
- return false;
31
- const parsedFracs = fracs.map((e) => (0, numberParser_1.numberParser)(e));
32
- if (parsedFracs.some((e) => e === false))
33
- return false;
34
- const nodeFracs = fracs.map((e) => e.unfrenchify().toTree());
35
- if (nodeFracs[1].evaluate() === 0)
36
- return false;
37
- return (0, oppositeNode_1.opposite)((0, fractionNode_1.frac)(nodeFracs[0], nodeFracs[1]));
25
+ if ((0, oppositeNode_1.isOppositeNode)(parsed) && (0, fractionNode_1.isFractionNode)(parsed.child)) {
26
+ if ((0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.child.leftChild) &&
27
+ (0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.child.rightChild)) {
28
+ if (parsed.child.rightChild.evaluate() === 0)
29
+ return false;
30
+ return parsed;
31
+ }
32
+ }
33
+ if ((0, oppositeNode_1.isOppositeNode)(parsed) &&
34
+ (0, oppositeNode_1.isOppositeNode)(parsed.child) &&
35
+ (0, fractionNode_1.isFractionNode)(parsed.child.child)) {
36
+ if ((0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.child.child.leftChild) &&
37
+ (0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.child.child.rightChild)) {
38
+ if (parsed.child.child.rightChild.evaluate() === 0)
39
+ return false;
40
+ return parsed;
41
+ }
38
42
  }
39
43
  return false;
40
44
  };
@@ -0,0 +1,9 @@
1
+ /**parses :
2
+ * number
3
+ * sqrt(a)
4
+ * -sqrt(a)
5
+ * sqrt(a) * b
6
+ * -sqrt(a) * b
7
+ */
8
+ export declare const sqrtParser: (ans: string) => false | import("../nodes/numbers/constantNode").ConstantNode | import("../nodes/numbers/numberNode").NumberNode | import("../nodes/operators/multiplyNode").MultiplyNode | import("../nodes/functions/oppositeNode").OppositeNode<import("../nodes/algebraicNode").AlgebraicNode> | import("../nodes/functions/sqrtNode").SqrtNode;
9
+ //# sourceMappingURL=sqrtParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqrtParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/sqrtParser.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAS,MAAM,uUAuCrC,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sqrtParser = void 0;
4
+ const oppositeNode_1 = require("../nodes/functions/oppositeNode");
5
+ const sqrtNode_1 = require("../nodes/functions/sqrtNode");
6
+ const numberNode_1 = require("../nodes/numbers/numberNode");
7
+ const multiplyNode_1 = require("../nodes/operators/multiplyNode");
8
+ const latexParser_1 = require("./latexParser");
9
+ const numberParser_1 = require("./numberParser");
10
+ /**parses :
11
+ * number
12
+ * sqrt(a)
13
+ * -sqrt(a)
14
+ * sqrt(a) * b
15
+ * -sqrt(a) * b
16
+ */
17
+ const sqrtParser = (ans) => {
18
+ try {
19
+ const nb = (0, numberParser_1.numberParser)(ans);
20
+ if (nb !== false) {
21
+ return nb.unfrenchify().toTree();
22
+ }
23
+ const parsed = (0, latexParser_1.parseAlgebraic)(ans);
24
+ if (!parsed)
25
+ return false;
26
+ if ((0, sqrtNode_1.isSqrtNode)(parsed)) {
27
+ return parsed;
28
+ }
29
+ if ((0, oppositeNode_1.isOppositeNode)(parsed) && (0, sqrtNode_1.isSqrtNode)(parsed.child)) {
30
+ return parsed;
31
+ }
32
+ if ((0, multiplyNode_1.isMultiplyNode)(parsed)) {
33
+ if (((0, sqrtNode_1.isSqrtNode)(parsed.leftChild) &&
34
+ (0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.rightChild)) ||
35
+ ((0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.leftChild) &&
36
+ (0, sqrtNode_1.isSqrtNode)(parsed.rightChild)))
37
+ return parsed;
38
+ }
39
+ if ((0, oppositeNode_1.isOppositeNode)(parsed) && (0, multiplyNode_1.isMultiplyNode)(parsed.child)) {
40
+ if (((0, sqrtNode_1.isSqrtNode)(parsed.child.leftChild) &&
41
+ (0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.child.rightChild)) ||
42
+ ((0, numberNode_1.isNumberOrOppositeNumberNode)(parsed.child.leftChild) &&
43
+ (0, sqrtNode_1.isSqrtNode)(parsed.child.rightChild)))
44
+ return parsed;
45
+ }
46
+ return false;
47
+ }
48
+ catch (err) {
49
+ return false;
50
+ }
51
+ };
52
+ exports.sqrtParser = sqrtParser;
@@ -1,2 +1,2 @@
1
- export declare const trinomParser: (ans: string, variable?: string) => false | undefined;
1
+ export declare const trinomParser: (ans: string, variable?: string) => false | import("../nodes/algebraicNode").AlgebraicNode | undefined;
2
2
  //# sourceMappingURL=trinomParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trinomParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/trinomParser.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,QAAS,MAAM,aAAY,MAAM,sBAyBzD,CAAC"}
1
+ {"version":3,"file":"trinomParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/trinomParser.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,QAAS,MAAM,aAAY,MAAM,uEAgCzD,CAAC"}
@@ -1,11 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trinomParser = void 0;
4
+ const addNode_1 = require("../nodes/operators/addNode");
5
+ const substractNode_1 = require("../nodes/operators/substractNode");
6
+ const latexParser_1 = require("./latexParser");
7
+ const monomParser_1 = require("./monomParser");
4
8
  const trinomParser = (ans, variable = "x") => {
5
9
  try {
6
10
  //! difficile !
7
- //! peut etre que je fais fausse, il faut peut etre simplifier canoniquement et checker si ca ressemble à un trinome
8
- //! mais ce qui m'embete dans cette approche c'est que la simplification va etre trop "gentille", on va accepter des trucs qu'on aurait pas du ...
11
+ //! peut etre que je fais fausse route, il faut peut etre simplifier canoniquement et checker si ca ressemble à un trinome
12
+ //! mais ce qui m'embete dans cette approche c'est que la simplification va etre trop gentille, on va accepter des trucs qu'on aurait pas du ...*
13
+ const parsed = (0, latexParser_1.parseAlgebraic)(ans);
14
+ if (!parsed)
15
+ return false;
16
+ if ((0, monomParser_1.isMonomNode)(parsed, { variable, maxDegree: 2, minDegree: 2 }))
17
+ return parsed;
18
+ if ((0, addNode_1.isAddNode)(parsed) || (0, substractNode_1.isSubstractNode)(parsed)) {
19
+ const children = [parsed.leftChild, parsed.rightChild];
20
+ }
9
21
  // const monom = monomParser(ans, { variable, maxDegree: 2, minDegree: 2 });
10
22
  // if (monom) return monom;
11
23
  // const parsed = parseAlgebraic(ans);
@@ -1,5 +1,5 @@
1
1
  import { Class } from '../../types/class';
2
2
  import { FunctionNode } from '../nodes/functions/functionNode';
3
3
  import { Node } from '../nodes/node';
4
- export declare const functionComposition: <T extends Class<FunctionNode>>(Compositor: T, arr: Node[]) => FunctionNode;
4
+ export declare const functionComposition: <T extends Class<FunctionNode<import("../nodes/algebraicNode").AlgebraicNode>>>(Compositor: T, arr: Node[]) => FunctionNode<import("../nodes/algebraicNode").AlgebraicNode>;
5
5
  //# sourceMappingURL=functionComposition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"functionComposition.d.ts","sourceRoot":"","sources":["../../../src/tree/utilities/functionComposition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,eAAO,MAAM,mBAAmB,sDAAuD,IAAI,EAAE,iBAU5F,CAAC"}
1
+ {"version":3,"file":"functionComposition.d.ts","sourceRoot":"","sources":["../../../src/tree/utilities/functionComposition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,eAAO,MAAM,mBAAmB,sGAAuD,IAAI,EAAE,iEAU5F,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param arr
4
+ * @param angle
5
+ * @returns [t_angle, t_angle+1, ..., t_0, t_1]
6
+ */
7
+ export declare function arrayRotation<T>(arr: T[], angle: number): T[];
8
+ //# sourceMappingURL=rotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../../src/utils/arrays/rotation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,OAIvD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrayRotation = void 0;
4
+ /**
5
+ *
6
+ * @param arr
7
+ * @param angle
8
+ * @returns [t_angle, t_angle+1, ..., t_0, t_1]
9
+ */
10
+ function arrayRotation(arr, angle) {
11
+ if (angle < 0 || angle > arr.length - 1)
12
+ return [];
13
+ if (angle === 0)
14
+ return [...arr];
15
+ return [...arr.slice(angle), ...arr.slice(0, angle)];
16
+ }
17
+ exports.arrayRotation = arrayRotation;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "2.2.69",
3
+ "version": "2.2.70",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [