math-exercises 2.2.55 → 2.2.57

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 (179) hide show
  1. package/lib/exercises/math/calcul/proportionality/index.d.ts +1 -0
  2. package/lib/exercises/math/calcul/proportionality/index.d.ts.map +1 -1
  3. package/lib/exercises/math/calcul/proportionality/index.js +1 -0
  4. package/lib/exercises/math/calcul/proportionality/isTableProportional.d.ts +8 -0
  5. package/lib/exercises/math/calcul/proportionality/isTableProportional.d.ts.map +1 -0
  6. package/lib/exercises/math/calcul/proportionality/isTableProportional.js +91 -0
  7. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
  8. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.js +0 -1
  9. package/lib/exercises/math/functions/trinoms/coefficientsIdentification.d.ts +11 -0
  10. package/lib/exercises/math/functions/trinoms/coefficientsIdentification.d.ts.map +1 -0
  11. package/lib/exercises/math/functions/trinoms/coefficientsIdentification.js +131 -0
  12. package/lib/exercises/math/functions/trinoms/index.d.ts +1 -0
  13. package/lib/exercises/math/functions/trinoms/index.d.ts.map +1 -1
  14. package/lib/exercises/math/functions/trinoms/index.js +1 -0
  15. package/lib/exercises/math/functions/trinoms/summitAbscissFromDevForm.d.ts.map +1 -1
  16. package/lib/exercises/math/functions/trinoms/summitAbscissFromDevForm.js +39 -1
  17. package/lib/exercises/math/geometry/areas/rightTriangleArea.js +2 -2
  18. package/lib/exercises/math/geometry/areas/triangleArea.js +2 -2
  19. package/lib/exercises/math/geometry/euclidianConstructions/buildTriangleWithSizes.d.ts +7 -0
  20. package/lib/exercises/math/geometry/euclidianConstructions/buildTriangleWithSizes.d.ts.map +1 -0
  21. package/lib/exercises/math/geometry/euclidianConstructions/buildTriangleWithSizes.js +117 -0
  22. package/lib/exercises/math/geometry/euclidianConstructions/index.d.ts +2 -0
  23. package/lib/exercises/math/geometry/euclidianConstructions/index.d.ts.map +1 -1
  24. package/lib/exercises/math/geometry/euclidianConstructions/index.js +2 -0
  25. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.d.ts +10 -0
  26. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.d.ts.map +1 -0
  27. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.js +102 -0
  28. package/lib/exercises/math/geometry/pythagore/pythagore.d.ts +2 -0
  29. package/lib/exercises/math/geometry/pythagore/pythagore.d.ts.map +1 -1
  30. package/lib/exercises/math/geometry/pythagore/pythagore.js +4 -3
  31. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts +2 -0
  32. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts.map +1 -1
  33. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.js +4 -3
  34. package/lib/exercises/math/geometry/shapes/basicShapesNaming.d.ts.map +1 -1
  35. package/lib/exercises/math/geometry/shapes/basicShapesNaming.js +0 -1
  36. package/lib/exercises/math/geometry/thales/index.d.ts.map +1 -1
  37. package/lib/exercises/math/geometry/thales/index.js +1 -0
  38. package/lib/exercises/math/geometry/thales/thales.d.ts +7 -0
  39. package/lib/exercises/math/geometry/thales/thales.d.ts.map +1 -1
  40. package/lib/exercises/math/geometry/thales/thales.js +1 -1
  41. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts +11 -5
  42. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts.map +1 -1
  43. package/lib/exercises/math/geometry/thales/thalesCalcul.js +166 -118
  44. package/lib/exercises/math/geometry/thales/thalesCalculOld.d.ts +1 -0
  45. package/lib/exercises/math/geometry/thales/thalesCalculOld.d.ts.map +1 -0
  46. package/lib/exercises/math/geometry/thales/thalesCalculOld.js +214 -0
  47. package/lib/exercises/math/percent/index.d.ts +0 -1
  48. package/lib/exercises/math/percent/index.d.ts.map +1 -1
  49. package/lib/exercises/math/percent/index.js +0 -1
  50. package/lib/exercises/math/probaStat/binomial/binomialInequation.d.ts +16 -0
  51. package/lib/exercises/math/probaStat/binomial/binomialInequation.d.ts.map +1 -0
  52. package/lib/exercises/math/probaStat/binomial/binomialInequation.js +159 -0
  53. package/lib/exercises/math/probaStat/binomial/calculateProbaOfBinomialDistribution.d.ts +13 -0
  54. package/lib/exercises/math/probaStat/binomial/calculateProbaOfBinomialDistribution.d.ts.map +1 -0
  55. package/lib/exercises/math/probaStat/binomial/calculateProbaOfBinomialDistribution.js +106 -0
  56. package/lib/exercises/math/probaStat/binomial/expectedValueOfBinomialProba.d.ts +9 -0
  57. package/lib/exercises/math/probaStat/binomial/expectedValueOfBinomialProba.d.ts.map +1 -0
  58. package/lib/exercises/math/probaStat/binomial/expectedValueOfBinomialProba.js +89 -0
  59. package/lib/exercises/math/probaStat/binomial/index.d.ts +5 -0
  60. package/lib/exercises/math/probaStat/binomial/index.d.ts.map +1 -0
  61. package/lib/exercises/math/probaStat/binomial/index.js +20 -0
  62. package/lib/exercises/math/probaStat/binomial/varianceOfBinomialProba.d.ts +9 -0
  63. package/lib/exercises/math/probaStat/binomial/varianceOfBinomialProba.d.ts.map +1 -0
  64. package/lib/exercises/math/probaStat/binomial/varianceOfBinomialProba.js +94 -0
  65. package/lib/exercises/math/probaStat/cardBasicProbas.d.ts +3 -0
  66. package/lib/exercises/math/probaStat/cardBasicProbas.d.ts.map +1 -1
  67. package/lib/exercises/math/probaStat/cardBasicProbas.js +3 -2
  68. package/lib/exercises/math/probaStat/diceBasicProbas.d.ts +1 -0
  69. package/lib/exercises/math/probaStat/diceBasicProbas.d.ts.map +1 -1
  70. package/lib/exercises/math/probaStat/diceBasicProbas.js +8 -4
  71. package/lib/exercises/math/probaStat/index.d.ts +1 -3
  72. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  73. package/lib/exercises/math/probaStat/index.js +1 -3
  74. package/lib/exercises/math/probaStat/issuesCountingForCards.d.ts +2 -0
  75. package/lib/exercises/math/probaStat/issuesCountingForCards.d.ts.map +1 -1
  76. package/lib/exercises/math/probaStat/issuesCountingForCards.js +1 -1
  77. package/lib/exercises/math/probaStat/probaFromTableNoContext.d.ts +4 -1
  78. package/lib/exercises/math/probaStat/probaFromTableNoContext.d.ts.map +1 -1
  79. package/lib/exercises/math/probaStat/probaFromTableNoContext.js +17 -5
  80. package/lib/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.js +0 -1
  81. package/lib/exercises/math/probaStat/stats2var/fineAdjustementExercise.d.ts +2 -0
  82. package/lib/exercises/math/probaStat/stats2var/fineAdjustementExercise.d.ts.map +1 -1
  83. package/lib/exercises/math/probaStat/stats2var/fineAdjustementExercise.js +4 -1
  84. package/lib/exercises/math/trigonometry/associatePoint.d.ts +3 -0
  85. package/lib/exercises/math/trigonometry/associatePoint.d.ts.map +1 -1
  86. package/lib/exercises/math/trigonometry/associatePoint.js +5 -1
  87. package/lib/exercises/math/trigonometry/trigonometry.js +2 -2
  88. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.js +2 -2
  89. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.js +2 -2
  90. package/lib/exercises/pc/calibrationCurveOfSolution.d.ts +1 -0
  91. package/lib/exercises/pc/calibrationCurveOfSolution.d.ts.map +1 -1
  92. package/lib/exercises/pc/calibrationCurveOfSolution.js +2 -0
  93. package/lib/exercises/pc/chemicalReactions/stoichiometricReaction.d.ts +6 -1
  94. package/lib/exercises/pc/chemicalReactions/stoichiometricReaction.d.ts.map +1 -1
  95. package/lib/exercises/pc/chemicalReactions/stoichiometricReaction.js +1 -1
  96. package/lib/exercises/pc/electricity/ohmicConductorOrGenerator.d.ts +4 -1
  97. package/lib/exercises/pc/electricity/ohmicConductorOrGenerator.d.ts.map +1 -1
  98. package/lib/exercises/pc/electricity/ohmicConductorOrGenerator.js +2 -1
  99. package/lib/exercises/pc/identifyAtomicMassOrAtomicNb.d.ts +2 -0
  100. package/lib/exercises/pc/identifyAtomicMassOrAtomicNb.d.ts.map +1 -1
  101. package/lib/exercises/pc/identifyAtomicMassOrAtomicNb.js +2 -0
  102. package/lib/exercises/pc/mole/molarMass.js +1 -1
  103. package/lib/exercises/pc/motion/typeOfAcceleration.d.ts +4 -1
  104. package/lib/exercises/pc/motion/typeOfAcceleration.d.ts.map +1 -1
  105. package/lib/exercises/pc/motion/typeOfAcceleration.js +5 -1
  106. package/lib/exercises/pc/motion/typeOfMovement.d.ts +4 -1
  107. package/lib/exercises/pc/motion/typeOfMovement.d.ts.map +1 -1
  108. package/lib/exercises/pc/motion/typeOfMovement.js +1 -1
  109. package/lib/exercises/pc/recognizeRefractionOrReflectionAngles.d.ts +3 -1
  110. package/lib/exercises/pc/recognizeRefractionOrReflectionAngles.d.ts.map +1 -1
  111. package/lib/exercises/pc/recognizeRefractionOrReflectionAngles.js +1 -1
  112. package/lib/exercises/utils/geogebra/toGGBCommandsProps.d.ts +3 -0
  113. package/lib/exercises/utils/geogebra/toGGBCommandsProps.d.ts.map +1 -1
  114. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts +4 -0
  115. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts.map +1 -1
  116. package/lib/exercises/utils/geogebra/toolBarConstructor.js +8 -0
  117. package/lib/exercises/utils/getDistinctQuestions.d.ts.map +1 -1
  118. package/lib/exercises/utils/getDistinctQuestions.js +11 -4
  119. package/lib/index.d.ts +94 -26
  120. package/lib/index.d.ts.map +1 -1
  121. package/lib/math/geometry/CloudPoints.d.ts +5 -1
  122. package/lib/math/geometry/CloudPoints.d.ts.map +1 -1
  123. package/lib/math/geometry/CloudPoints.js +5 -0
  124. package/lib/math/geometry/line.d.ts +23 -1
  125. package/lib/math/geometry/line.d.ts.map +1 -1
  126. package/lib/math/geometry/line.js +53 -2
  127. package/lib/math/geometry/point.d.ts +15 -13
  128. package/lib/math/geometry/point.d.ts.map +1 -1
  129. package/lib/math/geometry/point.js +28 -12
  130. package/lib/math/geometry/segment.d.ts +11 -1
  131. package/lib/math/geometry/segment.d.ts.map +1 -1
  132. package/lib/math/geometry/segment.js +12 -0
  133. package/lib/math/geometry/triangle.d.ts +67 -0
  134. package/lib/math/geometry/triangle.d.ts.map +1 -0
  135. package/lib/math/geometry/triangle.js +227 -0
  136. package/lib/math/numbers/decimals/decimal.d.ts.map +1 -1
  137. package/lib/math/numbers/decimals/decimal.js +0 -2
  138. package/lib/math/numbers/rationals/rational.d.ts +1 -0
  139. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  140. package/lib/math/numbers/rationals/rational.js +5 -0
  141. package/lib/math/polynomials/generalTrinom.d.ts +2 -2
  142. package/lib/math/polynomials/generalTrinom.d.ts.map +1 -1
  143. package/lib/math/probability/binomial.d.ts +10 -0
  144. package/lib/math/probability/binomial.d.ts.map +1 -0
  145. package/lib/math/probability/binomial.js +30 -0
  146. package/lib/math/sets/intervals/intervals.d.ts +1 -1
  147. package/lib/math/systems/generalSystem.d.ts +11 -0
  148. package/lib/math/systems/generalSystem.d.ts.map +1 -0
  149. package/lib/math/systems/generalSystem.js +79 -0
  150. package/lib/playground.d.ts.map +1 -1
  151. package/lib/playground.js +1 -4
  152. package/lib/server.js +0 -2
  153. package/lib/tree/nodes/geometry/pointNode.d.ts +1 -10
  154. package/lib/tree/nodes/geometry/pointNode.d.ts.map +1 -1
  155. package/lib/tree/nodes/inequations/inequationNode.js +1 -1
  156. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +2 -11
  157. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  158. package/lib/tree/nodes/node.d.ts +2 -1
  159. package/lib/tree/nodes/node.d.ts.map +1 -1
  160. package/lib/tree/nodes/node.js +1 -0
  161. package/lib/tree/nodes/nodeConstructor.d.ts +4 -3
  162. package/lib/tree/nodes/nodeConstructor.d.ts.map +1 -1
  163. package/lib/tree/nodes/nodeConstructor.js +4 -0
  164. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  165. package/lib/tree/nodes/operators/addNode.js +20 -8
  166. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts +35 -0
  167. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts.map +1 -0
  168. package/lib/tree/nodes/operators/binomialCoefficientNode.js +52 -0
  169. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -1
  170. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  171. package/lib/tree/nodes/operators/fractionNode.js +2 -4
  172. package/lib/tree/nodes/operators/operatorNode.d.ts +2 -1
  173. package/lib/tree/nodes/operators/operatorNode.d.ts.map +1 -1
  174. package/lib/tree/nodes/operators/operatorNode.js +1 -0
  175. package/lib/tree/nodes/sets/intervalNode.d.ts +9 -10
  176. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  177. package/lib/tree/nodes/sets/intervalNode.js +1 -0
  178. package/lib/utils/alea/random.d.ts.map +1 -1
  179. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeneralSystem = void 0;
4
+ const addNode_1 = require("../../tree/nodes/operators/addNode");
5
+ const fractionNode_1 = require("../../tree/nodes/operators/fractionNode");
6
+ const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
7
+ const substractNode_1 = require("../../tree/nodes/operators/substractNode");
8
+ class GeneralSystem {
9
+ //coeffs[i][0]x+coeffs[i][1]y = coeffs[i][2]
10
+ //ax+by = c
11
+ //a2x = c2
12
+ //x = c2/a2
13
+ //a(c2/a2) +by = c
14
+ //y = (c-a(c2/a2))/b
15
+ //ax+by =c
16
+ //dx+ey =f
17
+ constructor(coeffs) {
18
+ this.coeffs = coeffs;
19
+ }
20
+ solve() {
21
+ if (this.coeffs.length !== 2)
22
+ throw Error("General system resolution not implemented yet");
23
+ const [a, b, c] = this.coeffs[0];
24
+ const [d, e, f] = this.coeffs[1];
25
+ const db = (0, multiplyNode_1.multiply)(d, b);
26
+ const ea = (0, multiplyNode_1.multiply)(e, a);
27
+ let x;
28
+ let y;
29
+ if (b.evaluate() === 0) {
30
+ if (a.evaluate() === 0)
31
+ throw Error("No solution");
32
+ x = (0, fractionNode_1.frac)(c, a).simplify();
33
+ if (e.evaluate() === 0)
34
+ throw Error("No solution");
35
+ y = (0, fractionNode_1.frac)((0, substractNode_1.substract)(f, (0, multiplyNode_1.multiply)(d, x)), e).simplify();
36
+ }
37
+ else if (a.evaluate() === 0) {
38
+ if (b.evaluate() === 0)
39
+ throw Error("No solution");
40
+ y = (0, fractionNode_1.frac)(c, b).simplify();
41
+ if (d.evaluate() === 0)
42
+ throw Error("No solution");
43
+ x = (0, fractionNode_1.frac)((0, substractNode_1.substract)(f, (0, multiplyNode_1.multiply)(e, y)), d).simplify();
44
+ }
45
+ else if (d.evaluate() === 0) {
46
+ if (e.evaluate() === 0)
47
+ throw Error("No solution");
48
+ y = (0, fractionNode_1.frac)(f, e).simplify();
49
+ if (a.evaluate() === 0)
50
+ throw Error("No solution");
51
+ x = (0, fractionNode_1.frac)((0, substractNode_1.substract)(c, (0, multiplyNode_1.multiply)(b, y)), a).simplify();
52
+ }
53
+ else if (e.evaluate() === 0) {
54
+ if (d.evaluate() === 0)
55
+ throw Error("No solution");
56
+ x = (0, fractionNode_1.frac)(f, d).simplify();
57
+ if (b.evaluate() === 0)
58
+ throw Error("No solution");
59
+ y = (0, fractionNode_1.frac)((0, substractNode_1.substract)(c, (0, multiplyNode_1.multiply)(a, x)), b).simplify();
60
+ }
61
+ else if (db.equals(ea))
62
+ throw Error("No solution");
63
+ else {
64
+ x = (0, fractionNode_1.frac)((0, substractNode_1.substract)((0, multiplyNode_1.multiply)(b, f), (0, multiplyNode_1.multiply)(e, c)), (0, substractNode_1.substract)(db, ea)).simplify();
65
+ y = (0, fractionNode_1.frac)((0, substractNode_1.substract)(c, (0, multiplyNode_1.multiply)(a, x)), b).simplify();
66
+ }
67
+ return {
68
+ x,
69
+ y,
70
+ };
71
+ }
72
+ toTex() {
73
+ return `\\left\\{\\begin{matrix}
74
+ ${(0, addNode_1.add)((0, multiplyNode_1.multiply)(this.coeffs[0][0], "x"), (0, multiplyNode_1.multiply)(this.coeffs[0][1], "y")).toTex()}=${this.coeffs[0][2]} \\\\
75
+ ${new addNode_1.AddNode((0, multiplyNode_1.multiply)(this.coeffs[1][0], "x"), (0, multiplyNode_1.multiply)(this.coeffs[1][1], "y")).toTex()}=${this.coeffs[1][2]}
76
+ \\end{matrix}\\right.`;
77
+ }
78
+ }
79
+ exports.GeneralSystem = GeneralSystem;
@@ -1 +1 @@
1
- {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,UAAU,YAGtB,CAAC"}
1
+ {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,UAAU,YAAW,CAAC"}
package/lib/playground.js CHANGED
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.playground = void 0;
4
- const playground = () => {
5
- // const node = multiply(sqrt(3), sqrt(8)).simplify();
6
- // console.log(node.toTex());
7
- };
4
+ const playground = () => { };
8
5
  exports.playground = playground;
package/lib/server.js CHANGED
@@ -58,11 +58,9 @@ const runServer = () => {
58
58
  });
59
59
  app.get("/exo", (req, res) => {
60
60
  const exoId = req.query.exoId;
61
- console.log(req.query.options);
62
61
  const options = req.query.options
63
62
  ? JSON.parse(req.query.options)
64
63
  : undefined;
65
- console.log("parsed", options);
66
64
  const exoIndex = allExercises.findIndex((exo) => exo.id == exoId);
67
65
  const exo = allExercises[exoIndex];
68
66
  if (!exo)
@@ -7,16 +7,7 @@ export declare class PointNode implements Node {
7
7
  constructor(point: Point, opts?: NodeOptions);
8
8
  toIdentifiers(): {
9
9
  id: NodeIds;
10
- point: {
11
- id: string;
12
- name: string;
13
- x: {
14
- id: NodeIds;
15
- } & Record<string, any>;
16
- y: {
17
- id: NodeIds;
18
- } & Record<string, any>;
19
- };
10
+ point: import("../../../math/geometry/point").PointIdentifiers;
20
11
  };
21
12
  toAllTexs(): string[];
22
13
  toAllValidTexs(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"pointNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/pointNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,SAAU,YAAW,IAAI;IACpC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;gBAEH,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW;IAK5C,aAAa;;;;;;;;;;;;;IAMb,SAAS;IAGT,cAAc;IAMd,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAepC,YAAY;IAGZ,QAAQ;IAIR,KAAK;IAGL,QAAQ;CAGT"}
1
+ {"version":3,"file":"pointNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/pointNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,SAAU,YAAW,IAAI;IACpC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;gBAEH,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW;IAK5C,aAAa;;;;IAMb,SAAS;IAGT,cAAc;IAMd,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAepC,YAAY;IAGZ,QAAQ;IAIR,KAAK;IAGL,QAAQ;CAGT"}
@@ -23,7 +23,7 @@ class InequationNode {
23
23
  this.tex += children[i].toTex();
24
24
  if (i < children.length - 1) {
25
25
  const shouldAddSpace = (this.symbols[i] === "\\le" || this.symbols[i] === "\\ge") &&
26
- (0, isLetter_1.isLetter)(children[i + 1].toTex());
26
+ (0, isLetter_1.isLetter)(children[i + 1].toTex()[0]);
27
27
  this.tex += `${this.symbols[i]}${shouldAddSpace ? " " : ""}`;
28
28
  }
29
29
  }
@@ -18,20 +18,11 @@ export declare class InequationSolutionNode implements Node {
18
18
  children: ({
19
19
  id: NodeIds;
20
20
  } & Record<string, any>)[];
21
- } | {
22
- id: NodeIds;
23
- leftChild: {
24
- id: NodeIds;
25
- } & Record<string, any>;
26
- rightChild: {
27
- id: NodeIds;
28
- } & Record<string, any>;
29
- closure: import("../sets/closure").ClosureType;
30
- };
21
+ } | import("../sets/intervalNode").IntervalNodeIdentifiers;
31
22
  };
32
23
  toAllTexs(): string[];
33
24
  toAllValidTexs(): string[];
34
- toEquivalentNodes(opts?: NodeOptions): (import("./inequationNode").InequationNode | InequationSolutionNode)[];
25
+ toEquivalentNodes(opts?: NodeOptions): (InequationSolutionNode | import("./inequationNode").InequationNode)[];
35
26
  toMathString(): string;
36
27
  toMathjs(): string;
37
28
  toTex(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"inequationSolutionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/inequations/inequationSolutionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAkB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,KAAK,6BAA6B,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAC/E,qBAAa,sBAAuB,YAAW,IAAI;IACjD,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,CAAC;IACnD,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEjB,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,EAClD,MAAM,CAAC,EAAE,6BAA6B;IAaxC,aAAa;;;;;;;;;;;;;;;;;;IAMb,SAAS;IAUT,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAepC,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAGL,QAAQ;CAGT"}
1
+ {"version":3,"file":"inequationSolutionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/inequations/inequationSolutionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAkB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,KAAK,6BAA6B,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAC/E,qBAAa,sBAAuB,YAAW,IAAI;IACjD,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,CAAC;IACnD,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEjB,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,EAClD,MAAM,CAAC,EAAE,6BAA6B;IAaxC,aAAa;;;;;;;;;IAMb,SAAS;IAUT,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAepC,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAGL,QAAQ;CAGT"}
@@ -74,7 +74,8 @@ export declare enum NodeIds {
74
74
  point = 34,
75
75
  vector = 35,
76
76
  inequation = 36,
77
- inequationSolution = 37
77
+ inequationSolution = 37,
78
+ binomialCoefficient = 38
78
79
  }
79
80
  export interface Node {
80
81
  type: NodeType;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/node.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ;IAClB,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,UAAU,IAAA;IACV,KAAK,IAAA;IACL,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,MAAM,KAAA;IACN,GAAG,KAAA;IACH,MAAM,KAAA;CACP;AACD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,OAAO;IACjB,GAAG,IAAA;IACH,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,KAAK,IAAA;IACL,KAAK,IAAA;IACL,MAAM,IAAA;IACN,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,QAAQ,KAAA;IACR,OAAO,KAAA;IACP,WAAW,KAAA;IACX,QAAQ,KAAA;IACR,KAAK,KAAA;IACL,OAAO,KAAA;IACP,KAAK,KAAA;IACL,UAAU,KAAA;IACV,gBAAgB,KAAA;IAChB,GAAG,KAAA;IACH,MAAM,KAAA;IACN,MAAM,KAAA;IACN,MAAM,KAAA;IACN,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,KAAK,KAAA;IACL,GAAG,KAAA;IACH,IAAI,KAAA;IACJ,QAAQ,KAAA;IACR,QAAQ,KAAA;IACR,MAAM,KAAA;IACN,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,UAAU,KAAA;IACV,kBAAkB,KAAA;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;IAClD,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC;IACjD,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC;IAEvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5D"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/node.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ;IAClB,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,UAAU,IAAA;IACV,KAAK,IAAA;IACL,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,MAAM,KAAA;IACN,GAAG,KAAA;IACH,MAAM,KAAA;CACP;AACD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,OAAO;IACjB,GAAG,IAAA;IACH,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,KAAK,IAAA;IACL,KAAK,IAAA;IACL,MAAM,IAAA;IACN,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,QAAQ,KAAA;IACR,OAAO,KAAA;IACP,WAAW,KAAA;IACX,QAAQ,KAAA;IACR,KAAK,KAAA;IACL,OAAO,KAAA;IACP,KAAK,KAAA;IACL,UAAU,KAAA;IACV,gBAAgB,KAAA;IAChB,GAAG,KAAA;IACH,MAAM,KAAA;IACN,MAAM,KAAA;IACN,MAAM,KAAA;IACN,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,GAAG,KAAA;IACH,KAAK,KAAA;IACL,GAAG,KAAA;IACH,IAAI,KAAA;IACJ,QAAQ,KAAA;IACR,QAAQ,KAAA;IACR,MAAM,KAAA;IACN,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,UAAU,KAAA;IACV,kBAAkB,KAAA;IAClB,mBAAmB,KAAA;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;IAClD,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC;IACjD,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC;IAEvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5D"}
@@ -57,4 +57,5 @@ var NodeIds;
57
57
  NodeIds[NodeIds["vector"] = 35] = "vector";
58
58
  NodeIds[NodeIds["inequation"] = 36] = "inequation";
59
59
  NodeIds[NodeIds["inequationSolution"] = 37] = "inequationSolution";
60
+ NodeIds[NodeIds["binomialCoefficient"] = 38] = "binomialCoefficient";
60
61
  })(NodeIds || (exports.NodeIds = NodeIds = {}));
@@ -1,7 +1,8 @@
1
1
  import { Node, NodeIds } from "./node";
2
+ export type NodeIdentifiers = {
3
+ id: NodeIds;
4
+ } & Record<string, any>;
2
5
  export declare abstract class NodeConstructor {
3
- static fromIdentifiers(identifiers: {
4
- id: NodeIds;
5
- } & Record<string, any>): Node;
6
+ static fromIdentifiers(identifiers: NodeIdentifiers): Node;
6
7
  }
7
8
  //# sourceMappingURL=nodeConstructor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeConstructor.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/nodeConstructor.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAkBvC,8BAAsB,eAAe;IACnC,MAAM,CAAC,eAAe,CACpB,WAAW,EAAE;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjD,IAAI;CA4QR"}
1
+ {"version":3,"file":"nodeConstructor.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/nodeConstructor.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAmBvC,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACpE,8BAAsB,eAAe;IACnC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI;CAsR3D"}
@@ -30,6 +30,7 @@ const constantNode_1 = require("./numbers/constantNode");
30
30
  const numberNode_1 = require("./numbers/numberNode");
31
31
  const percentNode_1 = require("./numbers/percentNode");
32
32
  const addNode_1 = require("./operators/addNode");
33
+ const binomialCoefficientNode_1 = require("./operators/binomialCoefficientNode");
33
34
  const divideNode_1 = require("./operators/divideNode");
34
35
  const fractionNode_1 = require("./operators/fractionNode");
35
36
  const limitNode_1 = require("./operators/limitNode");
@@ -164,6 +165,9 @@ class NodeConstructor {
164
165
  case node_1.NodeIds.limit: {
165
166
  return new limitNode_1.LimitNode(NodeConstructor.fromIdentifiers(identifiers.leftChild), NodeConstructor.fromIdentifiers(identifiers.rightChild), identifiers.from);
166
167
  }
168
+ case node_1.NodeIds.binomialCoefficient: {
169
+ return new binomialCoefficientNode_1.BinomialCoefficientNode(NodeConstructor.fromIdentifiers(identifiers.leftChild), NodeConstructor.fromIdentifiers(identifiers.rightChild));
170
+ }
167
171
  }
168
172
  }
169
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"addNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/addNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,eAAO,MAAM,GAAG,MACX,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,YAOnC,CAAC;AAEF,qBAAa,OAAQ,YAAW,uBAAuB;IACrD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAoCtD,SAAS,IAAI,MAAM,EAAE;IAIrB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAK5C,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAerC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAgP/C,aAAa;;;;;;;;;IAOb,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAUpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD"}
1
+ {"version":3,"file":"addNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/addNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,eAAO,MAAM,GAAG,MACX,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,YAOnC,CAAC;AAEF,qBAAa,OAAQ,YAAW,uBAAuB;IACrD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAoCtD,SAAS,IAAI,MAAM,EAAE;IAIrB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAK5C,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAerC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAoQ/C,aAAa;;;;;;;;;IAOb,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAUpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD"}
@@ -129,7 +129,7 @@ class AddNode {
129
129
  if (externals.length === 1)
130
130
  return externals[0];
131
131
  const simplifyExternalNodes = (a, b) => {
132
- if ((0, fractionNode_1.isFractionNode)(a) && (0, fractionNode_1.isFractionNode)(b)) {
132
+ if (!opts?.towardsDistribute && (0, fractionNode_1.isFractionNode)(a) && (0, fractionNode_1.isFractionNode)(b)) {
133
133
  //c/d + e/f = cf+ed / df
134
134
  const c = a.leftChild;
135
135
  const d = a.rightChild;
@@ -137,7 +137,10 @@ class AddNode {
137
137
  const f = b.rightChild;
138
138
  return new fractionNode_1.FractionNode(new AddNode(new multiplyNode_1.MultiplyNode(c, f), new multiplyNode_1.MultiplyNode(e, d)), new multiplyNode_1.MultiplyNode(d, f)).simplify(opts);
139
139
  }
140
- if ((0, oppositeNode_1.isOppositeNode)(a) && (0, fractionNode_1.isFractionNode)(a.child) && (0, fractionNode_1.isFractionNode)(b)) {
140
+ if (!opts?.towardsDistribute &&
141
+ (0, oppositeNode_1.isOppositeNode)(a) &&
142
+ (0, fractionNode_1.isFractionNode)(a.child) &&
143
+ (0, fractionNode_1.isFractionNode)(b)) {
141
144
  //-(c/d) + e/f = -cf+ed / df
142
145
  const c = a.child.leftChild;
143
146
  const d = a.child.rightChild;
@@ -145,7 +148,10 @@ class AddNode {
145
148
  const f = b.rightChild;
146
149
  return new fractionNode_1.FractionNode(new AddNode(new multiplyNode_1.MultiplyNode(new oppositeNode_1.OppositeNode(c), f), new multiplyNode_1.MultiplyNode(e, d)), new multiplyNode_1.MultiplyNode(d, f)).simplify(opts);
147
150
  }
148
- if ((0, oppositeNode_1.isOppositeNode)(b) && (0, fractionNode_1.isFractionNode)(b.child) && (0, fractionNode_1.isFractionNode)(a)) {
151
+ if (!opts?.towardsDistribute &&
152
+ (0, oppositeNode_1.isOppositeNode)(b) &&
153
+ (0, fractionNode_1.isFractionNode)(b.child) &&
154
+ (0, fractionNode_1.isFractionNode)(a)) {
149
155
  //(c/d) + (-e/f) = cf-ed / df
150
156
  const c = a.leftChild;
151
157
  const d = a.rightChild;
@@ -153,7 +159,8 @@ class AddNode {
153
159
  const f = b.child.rightChild;
154
160
  return new fractionNode_1.FractionNode(new AddNode(new multiplyNode_1.MultiplyNode(c, f), new multiplyNode_1.MultiplyNode(new oppositeNode_1.OppositeNode(e), d)), new multiplyNode_1.MultiplyNode(d, f)).simplify(opts);
155
161
  }
156
- if ((0, oppositeNode_1.isOppositeNode)(b) &&
162
+ if (!opts?.towardsDistribute &&
163
+ (0, oppositeNode_1.isOppositeNode)(b) &&
157
164
  (0, fractionNode_1.isFractionNode)(b.child) &&
158
165
  (0, oppositeNode_1.isOppositeNode)(a) &&
159
166
  (0, fractionNode_1.isFractionNode)(a.child)) {
@@ -164,25 +171,30 @@ class AddNode {
164
171
  const f = b.child.rightChild;
165
172
  return new fractionNode_1.FractionNode(new AddNode(new multiplyNode_1.MultiplyNode(new oppositeNode_1.OppositeNode(c), f), new multiplyNode_1.MultiplyNode(new oppositeNode_1.OppositeNode(e), d)), new multiplyNode_1.MultiplyNode(d, f)).simplify(opts);
166
173
  }
167
- if ((0, fractionNode_1.isFractionNode)(a)) {
174
+ if (!opts?.towardsDistribute && (0, fractionNode_1.isFractionNode)(a)) {
168
175
  //c/d + b
169
176
  const c = a.leftChild;
170
177
  const d = a.rightChild;
171
178
  return new fractionNode_1.FractionNode(new AddNode(c, new multiplyNode_1.MultiplyNode(d, b)), d).simplify(opts);
172
179
  }
173
- if ((0, oppositeNode_1.isOppositeNode)(a) && (0, fractionNode_1.isFractionNode)(a.child)) {
180
+ if (!opts?.towardsDistribute &&
181
+ (0, oppositeNode_1.isOppositeNode)(a) &&
182
+ (0, fractionNode_1.isFractionNode)(a.child)) {
174
183
  //-(c/d) + b = (-c+bd)/d
175
184
  const c = a.child.leftChild;
176
185
  const d = a.child.rightChild;
177
186
  return new fractionNode_1.FractionNode(new AddNode(new oppositeNode_1.OppositeNode(c), new multiplyNode_1.MultiplyNode(d, b)), d).simplify(opts);
178
187
  }
179
- if ((0, fractionNode_1.isFractionNode)(b) && !opts?.forceDistributeFractions) {
188
+ if (!opts?.towardsDistribute &&
189
+ (0, fractionNode_1.isFractionNode)(b) &&
190
+ !opts?.forceDistributeFractions) {
180
191
  //a+c/d
181
192
  const c = b.leftChild;
182
193
  const d = b.rightChild;
183
194
  return new fractionNode_1.FractionNode(new AddNode(c, new multiplyNode_1.MultiplyNode(d, a)), d).simplify(opts);
184
195
  }
185
- if ((0, oppositeNode_1.isOppositeNode)(b) &&
196
+ if (!opts?.towardsDistribute &&
197
+ (0, oppositeNode_1.isOppositeNode)(b) &&
186
198
  (0, fractionNode_1.isFractionNode)(b.child) &&
187
199
  !opts?.forceDistributeFractions) {
188
200
  //a+-(c/d) = (da-c)/d
@@ -0,0 +1,35 @@
1
+ import { AlgebraicNode } from "../algebraicNode";
2
+ import { Node, NodeIds, NodeOptions, NodeType } from "../node";
3
+ import { OperatorIds, OperatorNode } from "./operatorNode";
4
+ export declare const isBinomialCoefficientNode: (a: Node) => a is BinomialCoefficientNode;
5
+ export declare class BinomialCoefficientNode implements OperatorNode {
6
+ opts?: NodeOptions;
7
+ /**
8
+ * @param leftChild num
9
+ * @param rightChild denum
10
+ */
11
+ id: OperatorIds;
12
+ leftChild: AlgebraicNode;
13
+ rightChild: AlgebraicNode;
14
+ type: NodeType;
15
+ isNumeric: boolean;
16
+ constructor(leftChild: AlgebraicNode, rightChild: AlgebraicNode, opts?: NodeOptions);
17
+ equals(node: AlgebraicNode): boolean;
18
+ evaluate(): number;
19
+ simplify(): this;
20
+ toAllValidTexs(): string[];
21
+ toDetailedEvaluation(vars: Record<string, AlgebraicNode>): BinomialCoefficientNode;
22
+ toEquivalentNodes(): this[];
23
+ toIdentifiers(): {
24
+ leftChild: {
25
+ id: NodeIds;
26
+ } & Record<string, any>;
27
+ rightChild: {
28
+ id: NodeIds;
29
+ } & Record<string, any>;
30
+ id: NodeIds;
31
+ };
32
+ toMathString(): string;
33
+ toTex(): string;
34
+ }
35
+ //# sourceMappingURL=binomialCoefficientNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binomialCoefficientNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/binomialCoefficientNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE3E,eAAO,MAAM,yBAAyB,MACjC,IAAI,iCAEsD,CAAC;AAEhE,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,MAAM,CAAC,IAAI,EAAE,aAAa;IAO1B,QAAQ;IAGR,QAAQ;IAGR,cAAc;IAGd,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAMxD,iBAAiB;IAGjB,aAAa;;;;;;;;;IAOb,YAAY;IAGZ,KAAK;CAGN"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinomialCoefficientNode = exports.isBinomialCoefficientNode = void 0;
4
+ const combination_1 = require("../../../math/utils/combinatorics/combination");
5
+ const node_1 = require("../node");
6
+ const operatorNode_1 = require("./operatorNode");
7
+ const isBinomialCoefficientNode = (a) => (0, operatorNode_1.isOperatorNode)(a) && a.id === operatorNode_1.OperatorIds.binomialCoefficient;
8
+ exports.isBinomialCoefficientNode = isBinomialCoefficientNode;
9
+ class BinomialCoefficientNode {
10
+ constructor(leftChild, rightChild, opts) {
11
+ this.id = operatorNode_1.OperatorIds.binomialCoefficient;
12
+ this.leftChild = leftChild;
13
+ this.rightChild = rightChild;
14
+ this.type = node_1.NodeType.operator;
15
+ this.opts = opts;
16
+ this.isNumeric = leftChild.isNumeric && rightChild.isNumeric;
17
+ }
18
+ equals(node) {
19
+ return ((0, exports.isBinomialCoefficientNode)(node) &&
20
+ this.leftChild.equals(node.leftChild) &&
21
+ this.rightChild.equals(node.rightChild));
22
+ }
23
+ evaluate() {
24
+ return (0, combination_1.combinations)(this.rightChild.evaluate(), this.leftChild.evaluate());
25
+ }
26
+ simplify() {
27
+ return this;
28
+ }
29
+ toAllValidTexs() {
30
+ return [this.toTex()];
31
+ }
32
+ toDetailedEvaluation(vars) {
33
+ return new BinomialCoefficientNode(this.leftChild.toDetailedEvaluation(vars), this.rightChild.toDetailedEvaluation(vars));
34
+ }
35
+ toEquivalentNodes() {
36
+ return [this];
37
+ }
38
+ toIdentifiers() {
39
+ return {
40
+ leftChild: this.leftChild.toIdentifiers(),
41
+ rightChild: this.rightChild.toIdentifiers(),
42
+ id: node_1.NodeIds.binomialCoefficient,
43
+ };
44
+ }
45
+ toMathString() {
46
+ return `nCr(${this.leftChild.toMathString()}, ${this.rightChild.toMathString()})`;
47
+ }
48
+ toTex() {
49
+ return `\\binom{${this.leftChild.toTex()}}${this.rightChild.toTex()}}`;
50
+ }
51
+ }
52
+ exports.BinomialCoefficientNode = BinomialCoefficientNode;
@@ -2,7 +2,7 @@ import { Node, NodeIds, NodeOptions, NodeType } from "../node";
2
2
  import { OperatorIds, OperatorNode } from "./operatorNode";
3
3
  import { AlgebraicNode, SimplifyOptions } from "../algebraicNode";
4
4
  export declare function isFractionNode(a: Node): a is FractionNode;
5
- export declare const frac: (a: AlgebraicNode | number | string, b: AlgebraicNode | number | string) => FractionNode;
5
+ export declare const frac: (a: AlgebraicNode | number | string, b: AlgebraicNode | number | string, opts?: NodeOptions) => FractionNode;
6
6
  export declare class FractionNode implements OperatorNode {
7
7
  opts?: NodeOptions;
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,IAAI,MACZ,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,iBAOnC,CAAC;AAEF,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,YAAY,IAAI,MAAM;IAItB,aAAa;;;;;;;;;IAQb,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA+BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,KAAK,IAAI,MAAM;IAsBf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IA2J/C,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAOpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD"}
1
+ {"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,IAAI,MACZ,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,SAC3B,WAAW,iBAOnB,CAAC;AAEF,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,YAAY,IAAI,MAAM;IAItB,aAAa;;;;;;;;;IAQb,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA+BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,KAAK,IAAI,MAAM;IAsBf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAyJ/C,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAOpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD"}
@@ -15,10 +15,10 @@ function isFractionNode(a) {
15
15
  return (0, operatorNode_1.isOperatorNode)(a) && a.id === operatorNode_1.OperatorIds.fraction;
16
16
  }
17
17
  exports.isFractionNode = isFractionNode;
18
- const frac = (a, b) => {
18
+ const frac = (a, b, opts) => {
19
19
  const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
20
20
  const nodeB = typeof b === "number" ? b.toTree() : typeof b === "string" ? b.toTree() : b;
21
- return new FractionNode(nodeA, nodeB);
21
+ return new FractionNode(nodeA, nodeB, opts);
22
22
  };
23
23
  exports.frac = frac;
24
24
  class FractionNode {
@@ -153,7 +153,6 @@ class FractionNode {
153
153
  // }
154
154
  const simplifyExternalNodes = (num, denum) => {
155
155
  if ((0, numberNode_1.isNumberNode)(num) && (0, numberNode_1.isNumberNode)(denum)) {
156
- // console.log("num nb, denum nb", num.toTex(), denum.toTex());
157
156
  if (denum.value < 0) {
158
157
  if (num.value < 0) {
159
158
  return new FractionNode(new numberNode_1.NumberNode(-num.value), new numberNode_1.NumberNode(-denum.value)).simplify();
@@ -176,7 +175,6 @@ class FractionNode {
176
175
  if ((0, numberNode_1.isNumberNode)(denum) &&
177
176
  (isFractionNode(num) ||
178
177
  ((0, oppositeNode_1.isOppositeNode)(num) && isFractionNode(num.child)))) {
179
- // console.log("num frac, denum nb, ", num.toTex(), denum.toTex());
180
178
  const trueNum = isFractionNode(num) ? num : num.child;
181
179
  return new FractionNode(trueNum.leftChild, new multiplyNode_1.MultiplyNode(trueNum.rightChild, denum)).simplify();
182
180
  }
@@ -8,7 +8,8 @@ export declare enum OperatorIds {
8
8
  divide = 4,
9
9
  power = 5,
10
10
  limit = 6,
11
- integral = 7
11
+ integral = 7,
12
+ binomialCoefficient = 8
12
13
  }
13
14
  export interface OperatorNode extends AlgebraicNode {
14
15
  id: OperatorIds;
@@ -1 +1 @@
1
- {"version":3,"file":"operatorNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/operatorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAY,MAAM,SAAS,CAAC;AAEzC,oBAAY,WAAW;IACrB,GAAG,IAAA;IACH,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,KAAK,IAAA;IACL,KAAK,IAAA;IACL,QAAQ,IAAA;CACT;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;CAC3B;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"operatorNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/operatorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAY,MAAM,SAAS,CAAC;AAEzC,oBAAY,WAAW;IACrB,GAAG,IAAA;IACH,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,KAAK,IAAA;IACL,KAAK,IAAA;IACL,QAAQ,IAAA;IACR,mBAAmB,IAAA;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;CAC3B;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;CAC3B"}
@@ -12,6 +12,7 @@ var OperatorIds;
12
12
  OperatorIds[OperatorIds["power"] = 5] = "power";
13
13
  OperatorIds[OperatorIds["limit"] = 6] = "limit";
14
14
  OperatorIds[OperatorIds["integral"] = 7] = "integral";
15
+ OperatorIds[OperatorIds["binomialCoefficient"] = 8] = "binomialCoefficient";
15
16
  })(OperatorIds || (exports.OperatorIds = OperatorIds = {}));
16
17
  function isOperatorNode(a) {
17
18
  return a.type === node_1.NodeType.operator;
@@ -1,10 +1,18 @@
1
1
  import { AlgebraicNode } from "../algebraicNode";
2
2
  import { InequationNode } from "../inequations/inequationNode";
3
3
  import { Node, NodeIds, NodeOptions, NodeType } from "../node";
4
+ import { NodeIdentifiers } from "../nodeConstructor";
4
5
  import { ClosureType } from "./closure";
5
6
  import { SetIds, SetNode } from "./setNode";
6
7
  import { UnionIntervalNode } from "./unionIntervalNode";
7
8
  export declare function isIntervalNode(a: Node): a is IntervalNode;
9
+ export type IntervalNodeIdentifiers = {
10
+ id: NodeIds;
11
+ leftChild: NodeIdentifiers;
12
+ rightChild: NodeIdentifiers;
13
+ closure: ClosureType;
14
+ opts?: NodeOptions;
15
+ };
8
16
  export declare class IntervalNode implements SetNode {
9
17
  type: NodeType;
10
18
  id: SetIds;
@@ -25,16 +33,7 @@ export declare class IntervalNode implements SetNode {
25
33
  toRandomDifferentClosure(): IntervalNode;
26
34
  toComplement(): UnionIntervalNode | IntervalNode;
27
35
  toTex(): string;
28
- toIdentifiers(): {
29
- id: NodeIds;
30
- leftChild: {
31
- id: NodeIds;
32
- } & Record<string, any>;
33
- rightChild: {
34
- id: NodeIds;
35
- } & Record<string, any>;
36
- closure: ClosureType;
37
- };
36
+ toIdentifiers(): IntervalNodeIdentifiers;
38
37
  toText(isPlural: boolean, isFeminine: boolean): string;
39
38
  simplify(): this;
40
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQ/D,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBAEf,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW;IAWpB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW;IAMjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,aAAa;IA4BxC,YAAY;IAIZ,QAAQ;IAIR,iBAAiB;IAGjB,qBAAqB;IAGrB,sBAAsB;IAGtB,wBAAwB;IAWxB,YAAY;IAkCZ,KAAK;IAWL,aAAa;;;;;;;;;;IASb,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAiB7C,QAAQ;CAGT"}
1
+ {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQrD,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AACF,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBAEf,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW;IAWpB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW;IAMjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,aAAa;IA4BxC,YAAY;IAIZ,QAAQ;IAIR,iBAAiB;IAGjB,qBAAqB;IAGrB,sBAAsB;IAGtB,wBAAwB;IAWxB,YAAY;IAkCZ,KAAK;IAWL,aAAa,IAAI,uBAAuB;IAUxC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAiB7C,QAAQ;CAGT"}
@@ -108,6 +108,7 @@ class IntervalNode {
108
108
  leftChild: this.a.toIdentifiers(),
109
109
  rightChild: this.b.toIdentifiers(),
110
110
  closure: this.closure,
111
+ opts: this.opts,
111
112
  };
112
113
  }
113
114
  toText(isPlural, isFeminine) {
@@ -1 +1 @@
1
- {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/utils/alea/random.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAMnD"}
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/utils/alea/random.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAMnD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "2.2.55",
3
+ "version": "2.2.57",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [