math-exercises 2.2.44 → 2.2.46

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 +11 -11
  2. package/lib/exercises/exercise.d.ts.map +1 -1
  3. package/lib/exercises/exercise.js +11 -11
  4. package/lib/exercises/math/calcul/fractions/fractionsSum.js +1 -1
  5. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
  6. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.js +12 -0
  7. package/lib/exercises/math/complex/argumentFromAlgebraicComplex.d.ts.map +1 -1
  8. package/lib/exercises/math/complex/argumentFromAlgebraicComplex.js +4 -5
  9. package/lib/exercises/math/derivation/derivative/sqrtCompositionDerivation.js +1 -1
  10. package/lib/exercises/math/geometry/cartesian/readAbscissOnLine.js +3 -3
  11. package/lib/exercises/math/geometry/cartesian/readAbscissOnSemiLine.js +3 -3
  12. package/lib/exercises/math/geometry/euclidian/choseMethodToCalculateLength.d.ts +1 -0
  13. package/lib/exercises/math/geometry/euclidian/choseMethodToCalculateLength.d.ts.map +1 -0
  14. package/lib/exercises/math/geometry/euclidian/choseMethodToCalculateLength.js +79 -0
  15. package/lib/exercises/math/geometry/euclidian/index.d.ts +1 -0
  16. package/lib/exercises/math/geometry/euclidian/index.d.ts.map +1 -0
  17. package/lib/exercises/math/geometry/euclidian/index.js +1 -0
  18. package/lib/exercises/math/geometry/index.js +1 -0
  19. package/lib/exercises/math/geometry/pythagore/index.d.ts +1 -0
  20. package/lib/exercises/math/geometry/pythagore/index.d.ts.map +1 -1
  21. package/lib/exercises/math/geometry/pythagore/index.js +1 -0
  22. package/lib/exercises/math/geometry/pythagore/isTriangleRight.d.ts +11 -0
  23. package/lib/exercises/math/geometry/pythagore/isTriangleRight.d.ts.map +1 -0
  24. package/lib/exercises/math/geometry/pythagore/isTriangleRight.js +108 -0
  25. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.d.ts.map +1 -1
  26. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.js +3 -3
  27. package/lib/exercises/math/matrices/matrixInversibilityDomain.js +4 -4
  28. package/lib/exercises/math/trigonometry/equationCosOnRandomInterval.d.ts.map +1 -1
  29. package/lib/exercises/math/trigonometry/mainAngleMeasure.js +1 -1
  30. package/lib/index.d.ts +6 -0
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/math/sets/intervals/intervals.d.ts +1 -1
  33. package/lib/math/utils/geometry/pythagoricianTriplets.d.ts +2 -0
  34. package/lib/math/utils/geometry/pythagoricianTriplets.d.ts.map +1 -0
  35. package/lib/math/utils/geometry/pythagoricianTriplets.js +21 -0
  36. package/lib/playground.d.ts.map +1 -1
  37. package/lib/playground.js +4 -5
  38. package/lib/tree/nodes/algebraicNode.d.ts +1 -0
  39. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  40. package/lib/tree/nodes/algebraicNode.js +3 -0
  41. package/lib/tree/nodes/complex/complexNode.d.ts +1 -0
  42. package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
  43. package/lib/tree/nodes/complex/complexNode.js +3 -0
  44. package/lib/tree/nodes/equations/equalNode.d.ts +2 -0
  45. package/lib/tree/nodes/equations/equalNode.d.ts.map +1 -1
  46. package/lib/tree/nodes/equations/equalNode.js +6 -1
  47. package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
  48. package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
  49. package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
  50. package/lib/tree/nodes/equations/multiEqualNode.d.ts +1 -0
  51. package/lib/tree/nodes/equations/multiEqualNode.d.ts.map +1 -1
  52. package/lib/tree/nodes/equations/multiEqualNode.js +3 -0
  53. package/lib/tree/nodes/functions/integralNode.d.ts +1 -0
  54. package/lib/tree/nodes/functions/integralNode.d.ts.map +1 -1
  55. package/lib/tree/nodes/functions/integralNode.js +3 -0
  56. package/lib/tree/nodes/geometry/pointNode.d.ts +1 -0
  57. package/lib/tree/nodes/geometry/pointNode.d.ts.map +1 -1
  58. package/lib/tree/nodes/geometry/pointNode.js +3 -0
  59. package/lib/tree/nodes/geometry/vectorNode.d.ts +1 -0
  60. package/lib/tree/nodes/geometry/vectorNode.d.ts.map +1 -1
  61. package/lib/tree/nodes/geometry/vectorNode.js +3 -0
  62. package/lib/tree/nodes/inequations/inequationNode.d.ts +1 -0
  63. package/lib/tree/nodes/inequations/inequationNode.d.ts.map +1 -1
  64. package/lib/tree/nodes/inequations/inequationNode.js +3 -0
  65. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
  66. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  67. package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
  68. package/lib/tree/nodes/node.d.ts +1 -0
  69. package/lib/tree/nodes/node.d.ts.map +1 -1
  70. package/lib/tree/nodes/numbers/percentNode.d.ts +1 -0
  71. package/lib/tree/nodes/numbers/percentNode.d.ts.map +1 -1
  72. package/lib/tree/nodes/numbers/percentNode.js +3 -0
  73. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  74. package/lib/tree/nodes/operators/multiplyNode.js +4 -0
  75. package/lib/tree/nodes/sets/belongsNode.d.ts +1 -0
  76. package/lib/tree/nodes/sets/belongsNode.d.ts.map +1 -1
  77. package/lib/tree/nodes/sets/belongsNode.js +3 -0
  78. package/lib/tree/nodes/sets/discreteSetNode.d.ts +1 -0
  79. package/lib/tree/nodes/sets/discreteSetNode.d.ts.map +1 -1
  80. package/lib/tree/nodes/sets/discreteSetNode.js +3 -0
  81. package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
  82. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  83. package/lib/tree/nodes/sets/intervalNode.js +3 -0
  84. package/lib/tree/nodes/sets/unionIntervalNode.d.ts +1 -0
  85. package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
  86. package/lib/tree/nodes/sets/unionIntervalNode.js +3 -0
  87. package/lib/tree/parsers/affineParser.js +1 -1
  88. package/lib/tree/parsers/equationSolutionParser.d.ts +3 -0
  89. package/lib/tree/parsers/equationSolutionParser.d.ts.map +1 -0
  90. package/lib/tree/parsers/equationSolutionParser.js +29 -0
  91. package/lib/tree/parsers/latexParser.d.ts +4 -1
  92. package/lib/tree/parsers/latexParser.d.ts.map +1 -1
  93. package/lib/tree/parsers/latexParser.js +54 -6
  94. package/package.json +1 -1
package/lib/playground.js CHANGED
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.playground = void 0;
4
+ const sqrtNode_1 = require("./tree/nodes/functions/sqrtNode");
5
+ const multiplyNode_1 = require("./tree/nodes/operators/multiplyNode");
4
6
  const playground = () => {
5
- // const frac = new AddNode(
6
- // (3).toTree(),
7
- // new OppositeNode(new FractionNode((1).toTree(), (2).toTree())),
8
- // ).simplify();
9
- // console.log(frac.toTex());
7
+ const mul = new multiplyNode_1.MultiplyNode(new sqrtNode_1.SqrtNode((2).toTree()), (-1).toTree()).simplify();
8
+ console.log(mul.toTex());
10
9
  };
11
10
  exports.playground = playground;
@@ -14,4 +14,5 @@ export interface AlgebraicNode extends Node {
14
14
  equals: (node: AlgebraicNode) => boolean;
15
15
  isNumeric: boolean;
16
16
  }
17
+ export declare const isAlgebraicNode: (node: Node) => node is AlgebraicNode;
17
18
  //# sourceMappingURL=algebraicNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,IAAI;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACnD,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC;IAC7E,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,aAAa,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,IAAI;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACnD,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC;IAC7E,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,aAAa,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,SAAU,IAAI,0BACA,CAAC"}
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAlgebraicNode = void 0;
4
+ const isAlgebraicNode = (node) => Object(node).hasOwnProperty("isNumeric");
5
+ exports.isAlgebraicNode = isAlgebraicNode;
@@ -19,5 +19,6 @@ export declare class ComplexNode implements Node {
19
19
  toAllValidTexs(opts?: NodeOptions): string[];
20
20
  toMathString(): string;
21
21
  toTex(): string;
22
+ simplify(): this;
22
23
  }
23
24
  //# sourceMappingURL=complexNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complexNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/complex/complexNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,WAAY,YAAW,IAAI;IACtC,EAAE,EAAE,aAAa,CAAC;IAClB,EAAE,EAAE,aAAa,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAmB;gBAErB,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAKpE,aAAa;;;;;;;;;IAOb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAkBtD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;CAiBhB"}
1
+ {"version":3,"file":"complexNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/complex/complexNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,WAAY,YAAW,IAAI;IACtC,EAAE,EAAE,aAAa,CAAC;IAClB,EAAE,EAAE,aAAa,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAmB;gBAErB,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAKpE,aAAa;;;;;;;;;IAOb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAkBtD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAUf,QAAQ;CAST"}
@@ -46,5 +46,8 @@ class ComplexNode {
46
46
  }
47
47
  return new addNode_1.AddNode(this.re, new multiplyNode_1.MultiplyNode(this.im, new variableNode_1.VariableNode("i"))).toTex();
48
48
  }
49
+ simplify() {
50
+ return this;
51
+ }
49
52
  }
50
53
  exports.ComplexNode = ComplexNode;
@@ -1,4 +1,5 @@
1
1
  import { Node, NodeIds, NodeOptions, NodeType } from "../node";
2
+ export declare const isEqualNode: (node: Node) => node is EqualNode;
2
3
  export declare class EqualNode implements Node {
3
4
  leftChild: Node;
4
5
  rightChild: Node;
@@ -18,5 +19,6 @@ export declare class EqualNode implements Node {
18
19
  toAllValidTexs(opts?: NodeOptions): string[];
19
20
  toMathString(): string;
20
21
  toTex(): string;
22
+ simplify(): this;
21
23
  }
22
24
  //# sourceMappingURL=equalNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"equalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/equalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,SAAU,YAAW,IAAI;IACpC,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;gBACH,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;IAOjE,aAAa;;;;;;;;;IAOb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAmBpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAM5C,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;CAUhB"}
1
+ {"version":3,"file":"equalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/equalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,WAAW,SAAU,IAAI,sBACL,CAAC;AAElC,qBAAa,SAAU,YAAW,IAAI;IACpC,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;gBACH,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;IAOjE,aAAa;;;;;;;;;IAOb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAmBpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAM5C,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAIf,QAAQ;CAUT"}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EqualNode = void 0;
3
+ exports.EqualNode = exports.isEqualNode = void 0;
4
4
  const node_1 = require("../node");
5
+ const isEqualNode = (node) => node.type === node_1.NodeType.equality;
6
+ exports.isEqualNode = isEqualNode;
5
7
  class EqualNode {
6
8
  constructor(leftChild, rightChild, opts) {
7
9
  this.leftChild = leftChild;
@@ -42,5 +44,8 @@ class EqualNode {
42
44
  toTex() {
43
45
  return `${this.leftChild.toTex()}=${this.rightChild.toTex()}`;
44
46
  }
47
+ simplify() {
48
+ return this;
49
+ }
45
50
  }
46
51
  exports.EqualNode = EqualNode;
@@ -25,6 +25,7 @@ export declare class EquationSolutionNode implements Node {
25
25
  toMathString(): string;
26
26
  toMathjs(): string;
27
27
  toTex(): string;
28
+ simplify(): this;
28
29
  }
29
30
  export {};
30
31
  //# sourceMappingURL=equationSolutionNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"equationSolutionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/equationSolutionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,KAAK,2BAA2B,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAC7E,qBAAa,oBAAqB,YAAW,IAAI;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEjB,YAAY,EAAE,eAAe,EAC7B,MAAM,CAAC,EAAE,2BAA2B;IActC,aAAa;;;;;;;;;IAMb,cAAc;IAId,SAAS;IAkBT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAQpC,YAAY;IAGZ,QAAQ;IAGR,KAAK;CAGN"}
1
+ {"version":3,"file":"equationSolutionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/equationSolutionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,KAAK,2BAA2B,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAC7E,qBAAa,oBAAqB,YAAW,IAAI;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEjB,YAAY,EAAE,eAAe,EAC7B,MAAM,CAAC,EAAE,2BAA2B;IActC,aAAa;;;;;;;;;IAMb,cAAc;IAId,SAAS;IAkBT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAQpC,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAGL,QAAQ;CAGT"}
@@ -55,5 +55,8 @@ class EquationSolutionNode {
55
55
  toTex() {
56
56
  return `S=${this.solutionsSet.toTex()}`;
57
57
  }
58
+ simplify() {
59
+ return this;
60
+ }
58
61
  }
59
62
  exports.EquationSolutionNode = EquationSolutionNode;
@@ -16,5 +16,6 @@ export declare class MultiEqualNode implements Node {
16
16
  toMathString(): string;
17
17
  toTex(): string;
18
18
  toMathjs(): string;
19
+ simplify(): this;
19
20
  }
20
21
  //# sourceMappingURL=multiEqualNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiEqualNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/multiEqualNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,qBAAa,cAAe,YAAW,IAAI;IACzC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;gBACH,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAMhD,iBAAiB;IAUjB,aAAa;;;;;;IAMb,SAAS;IAMT,cAAc,IAAI,MAAM,EAAE;IAI1B,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAIf,QAAQ;CAGT"}
1
+ {"version":3,"file":"multiEqualNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/multiEqualNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,qBAAa,cAAe,YAAW,IAAI;IACzC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;gBACH,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAMhD,iBAAiB;IAUjB,aAAa;;;;;;IAMb,SAAS;IAMT,cAAc,IAAI,MAAM,EAAE;IAI1B,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAIf,QAAQ;IAIR,QAAQ;CAGT"}
@@ -41,5 +41,8 @@ class MultiEqualNode {
41
41
  toMathjs() {
42
42
  return this.toTex();
43
43
  }
44
+ simplify() {
45
+ return this;
46
+ }
44
47
  }
45
48
  exports.MultiEqualNode = MultiEqualNode;
@@ -25,5 +25,6 @@ export declare class IntegralNode implements Node {
25
25
  toMathString(): string;
26
26
  toEquivalentNodes(): this[];
27
27
  toAllValidTexs(): string[];
28
+ simplify(): this;
28
29
  }
29
30
  //# sourceMappingURL=integralNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integralNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/integralNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAe,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,qBAAa,YAAa,YAAW,IAAI;IACvC,YAAY,EAAE,aAAa,CAAC;IAC5B,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,WAAqB;gBAEvB,YAAY,EAAE,aAAa,EAC3B,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM;IAOlB,aAAa;;;;;;;;;;;;;IASb,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM;IAGlC,YAAY;IAGZ,iBAAiB;IAGjB,cAAc;CAGf"}
1
+ {"version":3,"file":"integralNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/integralNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAe,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,qBAAa,YAAa,YAAW,IAAI;IACvC,YAAY,EAAE,aAAa,CAAC;IAC5B,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,WAAqB;gBAEvB,YAAY,EAAE,aAAa,EAC3B,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM;IAOlB,aAAa;;;;;;;;;;;;;IASb,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM;IAGlC,YAAY;IAGZ,iBAAiB;IAGjB,cAAc;IAGd,QAAQ;CAGT"}
@@ -32,5 +32,8 @@ class IntegralNode {
32
32
  toAllValidTexs() {
33
33
  return [this.toTex()];
34
34
  }
35
+ simplify() {
36
+ return this;
37
+ }
35
38
  }
36
39
  exports.IntegralNode = IntegralNode;
@@ -24,5 +24,6 @@ export declare class PointNode implements Node {
24
24
  toMathString(): string;
25
25
  toMathjs(): string;
26
26
  toTex(): string;
27
+ simplify(): this;
27
28
  }
28
29
  //# sourceMappingURL=pointNode.d.ts.map
@@ -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;CAGN"}
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"}
@@ -43,5 +43,8 @@ class PointNode {
43
43
  toTex() {
44
44
  return this.point.toTexWithCoords();
45
45
  }
46
+ simplify() {
47
+ return this;
48
+ }
46
49
  }
47
50
  exports.PointNode = PointNode;
@@ -13,5 +13,6 @@ export declare class VectorNode implements Node {
13
13
  toMathString(): string;
14
14
  toMathjs(): string;
15
15
  toTex(): string;
16
+ simplify(): this;
16
17
  }
17
18
  //# sourceMappingURL=vectorNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vectorNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/vectorNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,UAAW,YAAW,IAAI;IACrC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAS5C,cAAc;IAGd,aAAa;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAIpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;CAGN"}
1
+ {"version":3,"file":"vectorNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/vectorNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,UAAW,YAAW,IAAI;IACrC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAS5C,cAAc;IAGd,aAAa;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAIpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;IAGL,QAAQ;CAGT"}
@@ -32,5 +32,8 @@ class VectorNode {
32
32
  toTex() {
33
33
  return `\\overrightarrow{${this.name}}`;
34
34
  }
35
+ simplify() {
36
+ return this;
37
+ }
35
38
  }
36
39
  exports.VectorNode = VectorNode;
@@ -23,5 +23,6 @@ export declare class InequationNode implements Node {
23
23
  toMathjs(): string;
24
24
  toAllTexs(): string[];
25
25
  toTex(): string;
26
+ simplify(): this;
26
27
  }
27
28
  //# sourceMappingURL=inequationNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inequationNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/inequations/inequationNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEjB,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,cAAe,YAAW,IAAI;IACzC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAE1B,QAAQ,EAAE,IAAI,EAAE,EAChB,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB;IAuBhD,aAAa;;;;;;;IAOb,UAAU;IA6CV,UAAU;IAQV,cAAc;IAGd,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS;IAYhD,YAAY;IAGZ,QAAQ;IAGR,SAAS;IAGT,KAAK;CAGN"}
1
+ {"version":3,"file":"inequationNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/inequations/inequationNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEjB,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,cAAe,YAAW,IAAI;IACzC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAE1B,QAAQ,EAAE,IAAI,EAAE,EAChB,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB;IAuBhD,aAAa;;;;;;;IAOb,UAAU;IA6CV,UAAU;IAQV,cAAc;IAGd,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS;IAYhD,YAAY;IAGZ,QAAQ;IAGR,SAAS;IAGT,KAAK;IAGL,QAAQ;CAGT"}
@@ -108,5 +108,8 @@ class InequationNode {
108
108
  toTex() {
109
109
  return this.tex;
110
110
  }
111
+ simplify() {
112
+ return this;
113
+ }
111
114
  }
112
115
  exports.InequationNode = InequationNode;
@@ -35,6 +35,7 @@ export declare class InequationSolutionNode implements Node {
35
35
  toMathString(): string;
36
36
  toMathjs(): string;
37
37
  toTex(): string;
38
+ simplify(): this;
38
39
  }
39
40
  export {};
40
41
  //# sourceMappingURL=inequationSolutionNode.d.ts.map
@@ -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;CAGN"}
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"}
@@ -57,5 +57,8 @@ class InequationSolutionNode {
57
57
  toTex() {
58
58
  return `S=${this.intervalSolution.toTex()}`;
59
59
  }
60
+ simplify() {
61
+ return this;
62
+ }
60
63
  }
61
64
  exports.InequationSolutionNode = InequationSolutionNode;
@@ -82,6 +82,7 @@ export interface Node {
82
82
  toEquivalentNodes: (opts?: NodeOptions) => Node[];
83
83
  toAllValidTexs: (opts?: NodeOptions) => string[];
84
84
  toTex: (opts?: ToTexOptions) => string;
85
+ simplify: () => Node;
85
86
  toIdentifiers: () => {
86
87
  id: NodeIds;
87
88
  } & Record<string, any>;
@@ -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;CACJ;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;IAGvC,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;CACJ;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"}
@@ -12,5 +12,6 @@ export declare class PercentNode implements Node {
12
12
  value: number;
13
13
  };
14
14
  toEquivalentNodes(): this[];
15
+ simplify(): this;
15
16
  }
16
17
  //# sourceMappingURL=percentNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"percentNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/percentNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElD,qBAAa,WAAY,YAAW,IAAI;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;gBAEH,KAAK,EAAE,MAAM;IAKzB,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAGR,cAAc;IAGd,aAAa;;;;IAMb,iBAAiB;CAGlB"}
1
+ {"version":3,"file":"percentNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/percentNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElD,qBAAa,WAAY,YAAW,IAAI;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;gBAEH,KAAK,EAAE,MAAM;IAKzB,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAGR,cAAc;IAGd,aAAa;;;;IAMb,iBAAiB;IAGjB,QAAQ;CAGT"}
@@ -28,5 +28,8 @@ class PercentNode {
28
28
  toEquivalentNodes() {
29
29
  return [this];
30
30
  }
31
+ simplify() {
32
+ return this;
33
+ }
31
34
  }
32
35
  exports.PercentNode = PercentNode;
@@ -1 +1 @@
1
- {"version":3,"file":"multiplyNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/multiplyNode.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,EAEZ,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,iBAAiB,QAAS,aAAa,EAAE,SAWrD,CAAC;AACF,qBAAa,YAAa,YAAW,uBAAuB;IAC1D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,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,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAoErC,SAAS;IAkDT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAyFrD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,aAAa;;;;;;;;;IAYb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC,IAAI;IAGJ,cAAc;IACd,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IA0H/C,MAAM,CAAC,IAAI,EAAE,aAAa;IAU1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD"}
1
+ {"version":3,"file":"multiplyNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/multiplyNode.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,EAEZ,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,iBAAiB,QAAS,aAAa,EAAE,SAWrD,CAAC;AACF,qBAAa,YAAa,YAAW,uBAAuB;IAC1D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,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,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAoErC,SAAS;IAkDT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAyFrD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,aAAa;;;;;;;;;IAYb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIrC,IAAI;IAGJ,cAAc;IACd,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IA4H/C,MAAM,CAAC,IAAI,EAAE,aAAa;IAU1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD"}
@@ -243,6 +243,10 @@ class MultiplyNode {
243
243
  oppositesCount++;
244
244
  recursive(node.child);
245
245
  }
246
+ else if ((0, numberNode_1.isNumberNode)(node) && node.value < 0) {
247
+ oppositesCount++;
248
+ externals.push(new numberNode_1.NumberNode(Math.abs(node.value)));
249
+ }
246
250
  else {
247
251
  externals.push(node);
248
252
  }
@@ -20,5 +20,6 @@ export declare class BelongsNode implements Node {
20
20
  id: NodeIds;
21
21
  } & Record<string, any>;
22
22
  };
23
+ simplify(): this;
23
24
  }
24
25
  //# sourceMappingURL=belongsNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"belongsNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/belongsNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,WAAY,YAAW,IAAI;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;gBACR,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpE,cAAc;IAGd,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE;IAc7C,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAGL,aAAa;;;;;;;;;CAOd"}
1
+ {"version":3,"file":"belongsNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/belongsNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,WAAY,YAAW,IAAI;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;gBACR,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpE,cAAc;IAGd,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE;IAc7C,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAGL,aAAa;;;;;;;;;IAOb,QAAQ;CAGT"}
@@ -39,5 +39,8 @@ class BelongsNode {
39
39
  rightChild: this.rightChild.toIdentifiers(),
40
40
  };
41
41
  }
42
+ simplify() {
43
+ return this;
44
+ }
42
45
  }
43
46
  exports.BelongsNode = BelongsNode;
@@ -21,6 +21,7 @@ export declare class DiscreteSetNode implements SetNode {
21
21
  toMathjs(): string;
22
22
  toTex(): string;
23
23
  toDeleteRandomElement(): DiscreteSetNode;
24
+ simplify(): this;
24
25
  }
25
26
  export declare const EmptySet: DiscreteSetNode;
26
27
  //# sourceMappingURL=discreteSetNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discreteSetNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/discreteSetNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AACvD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,eAAe,CAE/D;AACD,qBAAa,eAAgB,YAAW,OAAO;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBACL,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAOhD,UAAU;IAGV,cAAc;IAGd,aAAa;;;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAyBpC,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAOL,qBAAqB;CAMtB;AAED,eAAO,MAAM,QAAQ,iBAA0B,CAAC"}
1
+ {"version":3,"file":"discreteSetNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/discreteSetNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AACvD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,eAAe,CAE/D;AACD,qBAAa,eAAgB,YAAW,OAAO;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBACL,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAOhD,UAAU;IAGV,cAAc;IAGd,aAAa;;;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAyBpC,YAAY;IAGZ,QAAQ;IAGR,KAAK;IAOL,qBAAqB;IAMrB,QAAQ;CAGT;AAED,eAAO,MAAM,QAAQ,iBAA0B,CAAC"}
@@ -71,6 +71,9 @@ class DiscreteSetNode {
71
71
  newElements.splice(index, 1);
72
72
  return new DiscreteSetNode(newElements);
73
73
  }
74
+ simplify() {
75
+ return this;
76
+ }
74
77
  }
75
78
  exports.DiscreteSetNode = DiscreteSetNode;
76
79
  exports.EmptySet = new DiscreteSetNode([]);
@@ -35,5 +35,6 @@ export declare class IntervalNode implements SetNode {
35
35
  closure: ClosureType;
36
36
  };
37
37
  toText(isPlural: boolean, isFeminine: boolean): string;
38
+ simplify(): this;
38
39
  }
39
40
  //# sourceMappingURL=intervalNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAEA,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,IAAI,CAAC;IACR,CAAC,EAAE,IAAI,CAAC;IACR,OAAO,EAAE,OAAO,CAAC;gBACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW;IAUtE,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW;IAMjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;IA4B/B,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;CAgB9C"}
1
+ {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAEA,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,IAAI,CAAC;IACR,CAAC,EAAE,IAAI,CAAC;IACR,OAAO,EAAE,OAAO,CAAC;gBACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW;IAUtE,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW;IAMjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;IA4B/B,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"}
@@ -122,5 +122,8 @@ class IntervalNode {
122
122
  : `supérieur${conjugaison} à $${this.a.toTex()}$`
123
123
  : `compris entre $${this.a.toTex()}$ ${closure_1.Closure.isLeftOpen(this.closure) ? "exclu" : "inclus"} et $${this.b.toTex()}$ ${closure_1.Closure.isRightOpen(this.closure) ? "exclu" : "inclus"}`;
124
124
  }
125
+ simplify() {
126
+ return this;
127
+ }
125
128
  }
126
129
  exports.IntervalNode = IntervalNode;
@@ -22,5 +22,6 @@ export declare class UnionIntervalNode implements Node {
22
22
  id: NodeIds;
23
23
  } & Record<string, any>)[];
24
24
  };
25
+ simplify(): this;
25
26
  }
26
27
  //# sourceMappingURL=unionIntervalNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unionIntervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/unionIntervalNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,iBAAiB,CAEnE;AACD,8BAAsB,wBAAwB;IAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa;CAMlC;AACD,qBAAa,iBAAkB,YAAW,IAAI;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;gBACJ,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAO/C,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAcpC,YAAY;IAIZ,QAAQ;IAIR,KAAK;IAGL,aAAa;;;;;;CAMd"}
1
+ {"version":3,"file":"unionIntervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/unionIntervalNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,iBAAiB,CAEnE;AACD,8BAAsB,wBAAwB;IAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa;CAMlC;AACD,qBAAa,iBAAkB,YAAW,IAAI;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;gBACJ,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAO/C,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAcpC,YAAY;IAIZ,QAAQ;IAIR,KAAK;IAGL,aAAa;;;;;;IAMb,QAAQ;CAGT"}
@@ -57,5 +57,8 @@ class UnionIntervalNode {
57
57
  children: this.sets.map((set) => set.toIdentifiers()),
58
58
  };
59
59
  }
60
+ simplify() {
61
+ return this;
62
+ }
60
63
  }
61
64
  exports.UnionIntervalNode = UnionIntervalNode;
@@ -7,7 +7,7 @@ const multiplyNode_1 = require("../nodes/operators/multiplyNode");
7
7
  const variableNode_1 = require("../nodes/variables/variableNode");
8
8
  const latexParser_1 = require("./latexParser");
9
9
  const affineParser = (ans, variable = "x") => {
10
- const parsed = (0, latexParser_1.parseLatex)(ans);
10
+ const parsed = (0, latexParser_1.parseAlgebraic)(ans);
11
11
  if ((0, variableNode_1.isVariableNode)(parsed)) {
12
12
  if (parsed.name !== variable)
13
13
  return false;
@@ -0,0 +1,3 @@
1
+ import { AlgebraicNode } from "../nodes/algebraicNode";
2
+ export declare const equationSolutionParser: (str: string) => false | AlgebraicNode;
3
+ //# sourceMappingURL=equationSolutionParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equationSolutionParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/equationSolutionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmB,MAAM,wBAAwB,CAAC;AAKxE,eAAO,MAAM,sBAAsB,QAAS,MAAM,0BAgBjD,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.equationSolutionParser = void 0;
4
+ const algebraicNode_1 = require("../nodes/algebraicNode");
5
+ const equalNode_1 = require("../nodes/equations/equalNode");
6
+ const hasVariableNode_1 = require("../nodes/hasVariableNode");
7
+ const latexParser_1 = require("./latexParser");
8
+ const equationSolutionParser = (str) => {
9
+ try {
10
+ const parsed = (0, latexParser_1.parseLatex)(str);
11
+ if ((0, equalNode_1.isEqualNode)(parsed)) {
12
+ const children = [parsed.leftChild, parsed.rightChild];
13
+ const scalar = children.find((e) => !(0, hasVariableNode_1.hasVariableNode)(e));
14
+ if (!scalar)
15
+ return false;
16
+ return scalar;
17
+ }
18
+ else if ((0, algebraicNode_1.isAlgebraicNode)(parsed)) {
19
+ return parsed;
20
+ }
21
+ else {
22
+ return false;
23
+ }
24
+ }
25
+ catch (err) {
26
+ return false;
27
+ }
28
+ };
29
+ exports.equationSolutionParser = equationSolutionParser;
@@ -1,4 +1,7 @@
1
1
  import { AlgebraicNode } from "../nodes/algebraicNode";
2
+ import { EqualNode } from "../nodes/equations/equalNode";
3
+ import { InequationNode } from "../nodes/inequations/inequationNode";
2
4
  export declare const tokenize: (latex: string) => string[];
3
- export declare const parseLatex: (latex: string) => AlgebraicNode;
5
+ export declare const parseAlgebraic: (latex: string) => AlgebraicNode;
6
+ export declare const parseLatex: (latex: string) => AlgebraicNode | EqualNode | InequationNode;
4
7
  //# sourceMappingURL=latexParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"latexParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/latexParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA8CvD,eAAO,MAAM,QAAQ,UAAW,MAAM,aA4BrC,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,MAAM,kBAavC,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;AA8CrE,eAAO,MAAM,QAAQ,UAAW,MAAM,aA4BrC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,kBAa3C,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,MAAM,+CA2CvC,CAAC"}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseLatex = exports.tokenize = void 0;
3
+ exports.parseLatex = exports.parseAlgebraic = exports.tokenize = void 0;
4
+ const equalNode_1 = require("../nodes/equations/equalNode");
4
5
  const oppositeNode_1 = require("../nodes/functions/oppositeNode");
5
6
  const sqrtNode_1 = require("../nodes/functions/sqrtNode");
7
+ const inequationNode_1 = require("../nodes/inequations/inequationNode");
6
8
  const numberNode_1 = require("../nodes/numbers/numberNode");
7
9
  const piNode_1 = require("../nodes/numbers/piNode");
8
10
  const addNode_1 = require("../nodes/operators/addNode");
@@ -24,6 +26,7 @@ const functions = [
24
26
  const operators = ["+", "-", "\\div", "\\times", "^"];
25
27
  //cmds childless, like \\pi
26
28
  const symbols = [{ tex: "\\pi", node: piNode_1.PiNode }];
29
+ const separators = ["=", "<", ">", "\\leq", "\\geq"];
27
30
  const isDyck = (tokens) => {
28
31
  const brackets = tokens.filter((el) => el === "(" || el === ")");
29
32
  while (brackets.length) {
@@ -50,7 +53,7 @@ const tokenize = (latex) => {
50
53
  const char = latex[i];
51
54
  if (char === " ")
52
55
  continue;
53
- const match = char.match(/[\+\-\(\)\^a-zA-Z_=\{\}]/);
56
+ const match = char.match(/[\+\-\(\)\^a-zA-Z_=<>\{\}]/);
54
57
  if (match) {
55
58
  tokens.push(char);
56
59
  continue;
@@ -72,14 +75,14 @@ const tokenize = (latex) => {
72
75
  return tokens;
73
76
  };
74
77
  exports.tokenize = tokenize;
75
- const parseLatex = (latex) => {
78
+ const parseAlgebraic = (latex) => {
76
79
  const formattedLatex = latex
77
80
  .replaceAll("\\left", "")
78
81
  .replaceAll("\\right", "");
79
- const tokens = (0, exports.tokenize)(formattedLatex);
80
- if (!isDyck(tokens))
81
- throw Error("Problème de parenthèses.");
82
82
  try {
83
+ const tokens = (0, exports.tokenize)(formattedLatex);
84
+ if (!isDyck(tokens))
85
+ throw Error("Problème de parenthèses.");
83
86
  const parsed = buildTree(tokens);
84
87
  return parsed;
85
88
  }
@@ -87,6 +90,51 @@ const parseLatex = (latex) => {
87
90
  throw err;
88
91
  }
89
92
  };
93
+ exports.parseAlgebraic = parseAlgebraic;
94
+ const parseLatex = (latex) => {
95
+ const formattedLatex = latex
96
+ .replaceAll("\\left", "")
97
+ .replaceAll("\\right", "");
98
+ try {
99
+ const tokens = (0, exports.tokenize)(formattedLatex);
100
+ if (!isDyck(tokens))
101
+ throw Error("Problème de parenthèses.");
102
+ if (tokens.some((el) => separators.includes(el))) {
103
+ const groups = [];
104
+ for (const token of tokens) {
105
+ if (separators.includes(token)) {
106
+ if (typeof groups[groups.length - 1] === "string") {
107
+ throw Error("Consecutive separators not allowed");
108
+ }
109
+ groups.push(token);
110
+ }
111
+ else {
112
+ if (Array.isArray(groups[groups.length - 1]))
113
+ groups[groups.length - 1].push(token);
114
+ else
115
+ groups.push([token]);
116
+ }
117
+ }
118
+ if (groups.length !== 3)
119
+ throw Error("Consecutive separators not implemented");
120
+ const children = [
121
+ buildTree(groups[0]),
122
+ buildTree(groups[2]),
123
+ ];
124
+ const parsed = groups[1] === "="
125
+ ? new equalNode_1.EqualNode(children[0], children[1])
126
+ : new inequationNode_1.InequationNode(children, groups[1]);
127
+ return parsed;
128
+ }
129
+ else {
130
+ const parsed = buildTree(tokens);
131
+ return parsed;
132
+ }
133
+ }
134
+ catch (err) {
135
+ throw err;
136
+ }
137
+ };
90
138
  exports.parseLatex = parseLatex;
91
139
  const buildTree = (tokens) => {
92
140
  let currentDepth = 0;