math-exercises 2.0.4 → 2.0.5

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 (90) hide show
  1. package/lib/exercises/derivation/derivative/lnDerivativeThree.d.ts.map +1 -1
  2. package/lib/exercises/primitive/sinCosPrimitive.d.ts.map +1 -1
  3. package/lib/exercises/primitive/sinUCosUPrimitive.d.ts.map +1 -1
  4. package/lib/math/complex/complex.d.ts +1 -1
  5. package/lib/math/geometry/point.d.ts +4 -4
  6. package/lib/math/geometry/point.d.ts.map +1 -1
  7. package/lib/math/geometry/triangles.d.ts +7 -7
  8. package/lib/math/geometry/triangles.d.ts.map +1 -1
  9. package/lib/math/geometry/triangles.js +21 -11
  10. package/lib/math/numbers/decimals/decimal.d.ts +5 -4
  11. package/lib/math/numbers/decimals/decimal.d.ts.map +1 -1
  12. package/lib/math/numbers/integer/integer.d.ts +3 -3
  13. package/lib/math/numbers/integer/integer.d.ts.map +1 -1
  14. package/lib/math/numbers/integer/power.d.ts +4 -3
  15. package/lib/math/numbers/integer/power.d.ts.map +1 -1
  16. package/lib/math/numbers/nombre.d.ts +3 -2
  17. package/lib/math/numbers/nombre.d.ts.map +1 -1
  18. package/lib/math/numbers/rationals/rational.d.ts +4 -2
  19. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  20. package/lib/math/numbers/reals/extendedRingElement.d.ts +1 -1
  21. package/lib/math/numbers/reals/real.d.ts +4 -3
  22. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  23. package/lib/math/polynomials/polynomial.d.ts +4 -3
  24. package/lib/math/polynomials/polynomial.d.ts.map +1 -1
  25. package/lib/math/polynomials/trinom.d.ts +10 -6
  26. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  27. package/lib/server.js +6 -0
  28. package/lib/tree/nodes/algebraicNode.d.ts +3 -1
  29. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  30. package/lib/tree/nodes/complex/complexNode.d.ts +5 -4
  31. package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
  32. package/lib/tree/nodes/functions/absNode.d.ts +2 -1
  33. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  34. package/lib/tree/nodes/functions/absNode.js +3 -0
  35. package/lib/tree/nodes/functions/cosNode.d.ts +2 -1
  36. package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
  37. package/lib/tree/nodes/functions/cosNode.js +3 -0
  38. package/lib/tree/nodes/functions/expNode.d.ts +2 -1
  39. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  40. package/lib/tree/nodes/functions/expNode.js +3 -0
  41. package/lib/tree/nodes/functions/logNode.d.ts +2 -1
  42. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  43. package/lib/tree/nodes/functions/logNode.js +3 -0
  44. package/lib/tree/nodes/functions/oppositeNode.d.ts +1 -0
  45. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  46. package/lib/tree/nodes/functions/oppositeNode.js +6 -0
  47. package/lib/tree/nodes/functions/sinNode.d.ts +2 -1
  48. package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
  49. package/lib/tree/nodes/functions/sinNode.js +3 -0
  50. package/lib/tree/nodes/functions/sqrtNode.d.ts +2 -1
  51. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  52. package/lib/tree/nodes/functions/sqrtNode.js +3 -0
  53. package/lib/tree/nodes/geometry/lengthNode.d.ts +1 -0
  54. package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
  55. package/lib/tree/nodes/geometry/lengthNode.js +7 -0
  56. package/lib/tree/nodes/geometry/vectorNode.d.ts +2 -3
  57. package/lib/tree/nodes/geometry/vectorNode.d.ts.map +1 -1
  58. package/lib/tree/nodes/numbers/constantNode.d.ts +3 -1
  59. package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
  60. package/lib/tree/nodes/numbers/constantNode.js +5 -1
  61. package/lib/tree/nodes/numbers/infiniteNode.d.ts.map +1 -1
  62. package/lib/tree/nodes/numbers/infiniteNode.js +3 -3
  63. package/lib/tree/nodes/numbers/numberNode.d.ts +1 -0
  64. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  65. package/lib/tree/nodes/numbers/numberNode.js +3 -0
  66. package/lib/tree/nodes/numbers/piNode.d.ts +1 -1
  67. package/lib/tree/nodes/numbers/piNode.d.ts.map +1 -1
  68. package/lib/tree/nodes/numbers/piNode.js +1 -1
  69. package/lib/tree/nodes/operators/addNode.d.ts +2 -1
  70. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  71. package/lib/tree/nodes/operators/addNode.js +3 -0
  72. package/lib/tree/nodes/operators/divideNode.d.ts +2 -1
  73. package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
  74. package/lib/tree/nodes/operators/divideNode.js +3 -0
  75. package/lib/tree/nodes/operators/fractionNode.d.ts +2 -1
  76. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  77. package/lib/tree/nodes/operators/fractionNode.js +3 -0
  78. package/lib/tree/nodes/operators/multiplyNode.d.ts +1 -1
  79. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  80. package/lib/tree/nodes/operators/multiplyNode.js +3 -1
  81. package/lib/tree/nodes/operators/powerNode.d.ts +3 -2
  82. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  83. package/lib/tree/nodes/operators/powerNode.js +6 -0
  84. package/lib/tree/nodes/operators/substractNode.d.ts +6 -4
  85. package/lib/tree/nodes/operators/substractNode.d.ts.map +1 -1
  86. package/lib/tree/nodes/operators/substractNode.js +3 -0
  87. package/lib/tree/nodes/variables/variableNode.d.ts +3 -1
  88. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  89. package/lib/tree/nodes/variables/variableNode.js +6 -0
  90. package/package.json +1 -1
@@ -47,5 +47,8 @@ class LogNode {
47
47
  simplify() {
48
48
  return this;
49
49
  }
50
+ evaluate(vars) {
51
+ return Math.log(this.child.evaluate(vars));
52
+ }
50
53
  }
51
54
  exports.LogNode = LogNode;
@@ -17,5 +17,6 @@ export declare class OppositeNode implements FunctionNode {
17
17
  * add opposite to them
18
18
  */
19
19
  toAllValidTexs(opts?: NodeOptions): string[];
20
+ evaluate(vars: Record<string, number>): number;
20
21
  }
21
22
  //# sourceMappingURL=oppositeNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oppositeNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/oppositeNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAGD,qBAAa,YAAa,YAAW,YAAY;IAC/C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpD,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAef,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAgCtD;;;;OAIG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;CAQ7C"}
1
+ {"version":3,"file":"oppositeNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/oppositeNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAGD,qBAAa,YAAa,YAAW,YAAY;IAC/C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpD,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAef,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAgCtD;;;;OAIG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC"}
@@ -62,5 +62,11 @@ class OppositeNode {
62
62
  const options = opts ?? this.opts;
63
63
  return this.toEquivalentNodes(options).map((node) => node.toTex());
64
64
  }
65
+ // toMathjs() {
66
+ // return unaryMinus(this.child.toMathjs());
67
+ // }
68
+ evaluate(vars) {
69
+ return -this.child.evaluate(vars);
70
+ }
65
71
  }
66
72
  exports.OppositeNode = OppositeNode;
@@ -9,8 +9,9 @@ export declare class SinNode implements FunctionNode {
9
9
  constructor(child: AlgebraicNode);
10
10
  toMathString(): string;
11
11
  toTex(): string;
12
- toEquivalentNodes(): Node[];
12
+ toEquivalentNodes(): AlgebraicNode[];
13
13
  toAllValidTexs(): string[];
14
14
  simplify(): Node;
15
+ evaluate(vars: Record<string, number>): number;
15
16
  }
16
17
  //# sourceMappingURL=sinNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sinNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sinNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;gBAEH,KAAK,EAAE,aAAa;IAMhC,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAMf,iBAAiB,IAAI,IAAI,EAAE;IAS3B,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,IAAI;CAGjB"}
1
+ {"version":3,"file":"sinNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sinNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;gBAEH,KAAK,EAAE,aAAa;IAMhC,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAMf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,IAAI;IAGhB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC"}
@@ -37,5 +37,8 @@ class SinNode {
37
37
  simplify() {
38
38
  return this;
39
39
  }
40
+ evaluate(vars) {
41
+ return Math.sin(this.child.evaluate(vars));
42
+ }
40
43
  }
41
44
  exports.SinNode = SinNode;
@@ -10,7 +10,8 @@ export declare class SqrtNode implements FunctionNode {
10
10
  constructor(child: AlgebraicNode, opts?: NodeOptions);
11
11
  toMathString(): string;
12
12
  toTex(): string;
13
- toEquivalentNodes(opts?: NodeOptions): Node[];
13
+ toEquivalentNodes(opts?: NodeOptions): AlgebraicNode[];
14
14
  toAllValidTexs(): string[];
15
+ evaluate(vars: Record<string, number>): number;
15
16
  }
16
17
  //# sourceMappingURL=sqrtNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqrtNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sqrtNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,QAAQ,CAEjD;AACD,qBAAa,QAAS,YAAW,YAAY;IAC3C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpD,YAAY,IAAI,MAAM;IAMtB,KAAK,IAAI,MAAM;IAIf,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE;IAwB7C,cAAc,IAAI,MAAM,EAAE;CAG3B"}
1
+ {"version":3,"file":"sqrtNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sqrtNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,QAAQ,CAEjD;AACD,qBAAa,QAAS,YAAW,YAAY;IAC3C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpD,YAAY,IAAI,MAAM;IAMtB,KAAK,IAAI,MAAM;IAIf,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAwBtD,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC"}
@@ -50,5 +50,8 @@ class SqrtNode {
50
50
  toAllValidTexs() {
51
51
  return this.toEquivalentNodes().map((node) => node.toTex());
52
52
  }
53
+ evaluate(vars) {
54
+ return Math.sqrt(this.child.evaluate(vars));
55
+ }
53
56
  }
54
57
  exports.SqrtNode = SqrtNode;
@@ -10,5 +10,6 @@ export declare class LengthNode implements AlgebraicNode {
10
10
  toMathString(): string;
11
11
  toMathjs(): string;
12
12
  toTex(): string;
13
+ evaluate(vars: Record<string, number>): number;
13
14
  }
14
15
  //# sourceMappingURL=lengthNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lengthNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/lengthNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,qBAAa,UAAW,YAAW,aAAa;IAC9C,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;gBAEH,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IASnD,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAOpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;CAGN"}
1
+ {"version":3,"file":"lengthNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/lengthNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,qBAAa,UAAW,YAAW,aAAa;IAC9C,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;gBAEH,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IASnD,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAOpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;IAIL,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAQtC"}
@@ -29,5 +29,12 @@ class LengthNode {
29
29
  toTex() {
30
30
  return this.segmentName;
31
31
  }
32
+ evaluate(vars) {
33
+ const value = vars[this.segmentName] ??
34
+ vars[this.segmentName.split("").reverse().join("")];
35
+ if (value === undefined)
36
+ throw Error(`Can't evaluate length ${this.segmentName}`);
37
+ return value;
38
+ }
32
39
  }
33
40
  exports.LengthNode = LengthNode;
@@ -1,6 +1,5 @@
1
- import { AlgebraicNode } from "../algebraicNode";
2
- import { NodeOptions, NodeType } from "../node";
3
- export declare class VectorNode implements AlgebraicNode {
1
+ import { Node, NodeOptions, NodeType } from "../node";
2
+ export declare class VectorNode implements Node {
4
3
  opts?: NodeOptions | undefined;
5
4
  name: string;
6
5
  type: NodeType;
@@ -1 +1 @@
1
- {"version":3,"file":"vectorNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/vectorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,qBAAa,UAAW,YAAW,aAAa;IAC9C,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;IAId,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,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEtD,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;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAIpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;CAGN"}
@@ -4,11 +4,13 @@ export declare function isConstantNode(a: Node): a is ConstantNode;
4
4
  export declare class ConstantNode implements AlgebraicNode {
5
5
  tex: string;
6
6
  mathString: string;
7
+ value: number;
7
8
  type: NodeType;
8
- constructor(tex: string, mathString: string);
9
+ constructor(tex: string, mathString: string, value: number);
9
10
  toMathString(): string;
10
11
  toTex(): string;
11
12
  toAllValidTexs(): string[];
12
13
  toEquivalentNodes(): this[];
14
+ evaluate(vars: Record<string, number>): number;
13
15
  }
14
16
  //# sourceMappingURL=constantNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constantNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/constantNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,aAAa;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAqB;gBAEvB,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK3C,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAMf,cAAc;IAGd,iBAAiB;CAGlB"}
1
+ {"version":3,"file":"constantNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/constantNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,aAAa;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAqB;gBAEvB,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAM1D,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAMf,cAAc;IAGd,iBAAiB;IAGjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC"}
@@ -8,10 +8,11 @@ function isConstantNode(a) {
8
8
  }
9
9
  exports.isConstantNode = isConstantNode;
10
10
  class ConstantNode {
11
- constructor(tex, mathString) {
11
+ constructor(tex, mathString, value) {
12
12
  this.type = node_1.NodeType.constant;
13
13
  this.tex = tex;
14
14
  this.mathString = mathString;
15
+ this.value = value;
15
16
  }
16
17
  toMathString() {
17
18
  return `${this.mathString}`;
@@ -28,5 +29,8 @@ class ConstantNode {
28
29
  toEquivalentNodes() {
29
30
  return [this];
30
31
  }
32
+ evaluate(vars) {
33
+ return this.value;
34
+ }
31
35
  }
32
36
  exports.ConstantNode = ConstantNode;
@@ -1 +1 @@
1
- {"version":3,"file":"infiniteNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/infiniteNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,YAAY,cAA0C,CAAC;AACpE,eAAO,MAAM,gBAAgB,cAA2C,CAAC;AACzE,eAAO,MAAM,iBAAiB,cAA4C,CAAC"}
1
+ {"version":3,"file":"infiniteNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/infiniteNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,YAAY,cAAoD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,cAI5B,CAAC;AACF,eAAO,MAAM,iBAAiB,cAI7B,CAAC"}
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MinusInfinityNode = exports.PlusInfinityNode = exports.InfinityNode = void 0;
4
4
  const constantNode_1 = require("./constantNode");
5
- exports.InfinityNode = new constantNode_1.ConstantNode("\\infty", "infinity");
6
- exports.PlusInfinityNode = new constantNode_1.ConstantNode("+\\infty", "infinity");
7
- exports.MinusInfinityNode = new constantNode_1.ConstantNode("-\\infty", "-infinity");
5
+ exports.InfinityNode = new constantNode_1.ConstantNode("\\infty", "infinity", Infinity);
6
+ exports.PlusInfinityNode = new constantNode_1.ConstantNode("+\\infty", "infinity", Infinity);
7
+ exports.MinusInfinityNode = new constantNode_1.ConstantNode("-\\infty", "-infinity", -Infinity);
@@ -12,5 +12,6 @@ export declare class NumberNode implements AlgebraicNode {
12
12
  toMathjs(): string;
13
13
  toAllValidTexs(): string[];
14
14
  toEquivalentNodes(): this[];
15
+ evaluate(vars: Record<string, number>): number;
15
16
  }
16
17
  //# sourceMappingURL=numberNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"numberNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/numberNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,aAAa;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAmB;gBAErB,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAM5D,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAGR,cAAc;IAOd,iBAAiB;CAGlB"}
1
+ {"version":3,"file":"numberNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/numberNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,aAAa;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAmB;gBAErB,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAM5D,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAGR,cAAc;IAOd,iBAAiB;IAGjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC"}
@@ -33,5 +33,8 @@ class NumberNode {
33
33
  toEquivalentNodes() {
34
34
  return [this];
35
35
  }
36
+ evaluate(vars) {
37
+ return this.value;
38
+ }
36
39
  }
37
40
  exports.NumberNode = NumberNode;
@@ -1,3 +1,3 @@
1
- import { ConstantNode } from './constantNode';
1
+ import { ConstantNode } from "./constantNode";
2
2
  export declare const PiNode: ConstantNode;
3
3
  //# sourceMappingURL=piNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"piNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/piNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,eAAO,MAAM,MAAM,cAAiC,CAAC"}
1
+ {"version":3,"file":"piNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/piNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,eAAO,MAAM,MAAM,cAA0C,CAAC"}
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PiNode = void 0;
4
4
  const constantNode_1 = require("./constantNode");
5
- exports.PiNode = new constantNode_1.ConstantNode('\\pi', 'pi');
5
+ exports.PiNode = new constantNode_1.ConstantNode("\\pi", "pi", Math.PI);
@@ -11,9 +11,10 @@ export declare class AddNode implements CommutativeOperatorNode {
11
11
  constructor(leftChild: AlgebraicNode, rightChild: AlgebraicNode, opts?: NodeOptions);
12
12
  shuffle: () => void;
13
13
  toMathString(): string;
14
- toEquivalentNodes(opts?: NodeOptions): Node[];
14
+ toEquivalentNodes(opts?: NodeOptions): AlgebraicNode[];
15
15
  toAllTexs(): string[];
16
16
  toAllValidTexs(opts?: NodeOptions): string[];
17
17
  toTex(): string;
18
+ evaluate(vars: Record<string, number>): number;
18
19
  }
19
20
  //# sourceMappingURL=addNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/addNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAKD,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;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAQpB,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE;IAoC7C,SAAS,IAAI,MAAM,EAAE;IAIrB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAK5C,KAAK,IAAI,MAAM;CAOhB"}
1
+ {"version":3,"file":"addNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/addNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAKD,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;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAQpB,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,IAAI,MAAM;IAIf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAMtC"}
@@ -73,5 +73,8 @@ class AddNode {
73
73
  const rightTex = this.rightChild.toTex();
74
74
  return addNodeToTex(this.leftChild.toTex(), rightTex);
75
75
  }
76
+ evaluate(vars) {
77
+ return this.leftChild.evaluate(vars) + this.rightChild.evaluate(vars);
78
+ }
76
79
  }
77
80
  exports.AddNode = AddNode;
@@ -13,8 +13,9 @@ export declare class DivideNode implements OperatorNode {
13
13
  */
14
14
  constructor(leftChild: AlgebraicNode, rightChild: AlgebraicNode);
15
15
  toMathString(): string;
16
- toEquivalentNodes(opts?: NodeOptions): Node[];
16
+ toEquivalentNodes(opts?: NodeOptions): AlgebraicNode[];
17
17
  toAllValidTexs(): string[];
18
18
  toTex(): string;
19
+ evaluate(vars: Record<string, number>): number;
19
20
  }
20
21
  //# sourceMappingURL=divideNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"divideNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/divideNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AA0BD,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;gBAES,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa;IAO/D,YAAY,IAAI,MAAM;IAItB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAYpC,cAAc,IAAI,MAAM,EAAE;IAI1B,KAAK,IAAI,MAAM;CAMhB"}
1
+ {"version":3,"file":"divideNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/divideNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AA0BD,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;gBAES,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa;IAO/D,YAAY,IAAI,MAAM;IAItB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAYpC,cAAc,IAAI,MAAM,EAAE;IAI1B,KAAK,IAAI,MAAM;IAGf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAMtC"}
@@ -59,5 +59,8 @@ class DivideNode {
59
59
  toTex() {
60
60
  return divideNodeToTex(this.leftChild, this.rightChild);
61
61
  }
62
+ evaluate(vars) {
63
+ return this.leftChild.evaluate(vars) / this.rightChild.evaluate(vars);
64
+ }
62
65
  }
63
66
  exports.DivideNode = DivideNode;
@@ -15,8 +15,9 @@ export declare class FractionNode implements OperatorNode {
15
15
  constructor(leftChild: AlgebraicNode, rightChild: AlgebraicNode, opts?: NodeOptions);
16
16
  toMathString(): string;
17
17
  toInversed(): FractionNode;
18
- toEquivalentNodes(opts?: NodeOptions): Node[];
18
+ toEquivalentNodes(opts?: NodeOptions): AlgebraicNode[];
19
19
  toAllValidTexs(opts?: NodeOptions): string[];
20
20
  toTex(): string;
21
+ evaluate(vars: Record<string, number>): number;
21
22
  }
22
23
  //# sourceMappingURL=fractionNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,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;gBAEb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,YAAY,IAAI,MAAM;IAItB,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA2BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,KAAK,IAAI,MAAM;CAiBhB"}
1
+ {"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,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;gBAEb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,YAAY,IAAI,MAAM;IAItB,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA2BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,KAAK,IAAI,MAAM;IAaf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAMtC"}
@@ -63,5 +63,8 @@ class FractionNode {
63
63
  }
64
64
  return `\\frac{${this.leftChild.toTex()}}{${this.rightChild.toTex()}}`;
65
65
  }
66
+ evaluate(vars) {
67
+ return this.leftChild.evaluate(vars) / this.rightChild.evaluate(vars);
68
+ }
66
69
  }
67
70
  exports.FractionNode = FractionNode;
@@ -15,6 +15,6 @@ export declare class MultiplyNode implements CommutativeOperatorNode {
15
15
  toAllTexs(): string[];
16
16
  toEquivalentNodes(opts?: NodeOptions): MultiplyNode[];
17
17
  toAllValidTexs(opts?: NodeOptions): string[];
18
- simplify(): void;
18
+ evaluate(vars: Record<string, number>): number;
19
19
  }
20
20
  //# sourceMappingURL=multiplyNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiplyNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/multiplyNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,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;gBAEb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAkBpB,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAkDf,SAAS;IAkDT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAwFrD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ5C,QAAQ;CACT"}
1
+ {"version":3,"file":"multiplyNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/multiplyNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,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;gBAEb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAkBpB,OAAO,aAGL;IAEF,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAkDf,SAAS;IAkDT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAwFrD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC"}
@@ -188,6 +188,8 @@ class MultiplyNode {
188
188
  // toMathjs() {
189
189
  // return multiply(this.leftChild.toMathjs(), this.rightChild.toMathjs());
190
190
  // }
191
- simplify() { }
191
+ evaluate(vars) {
192
+ return this.leftChild.evaluate(vars) * this.rightChild.evaluate(vars);
193
+ }
192
194
  }
193
195
  exports.MultiplyNode = MultiplyNode;
@@ -10,11 +10,12 @@ export declare class PowerNode implements OperatorNode {
10
10
  type: NodeType;
11
11
  constructor(leftChild: AlgebraicNode, rightChild: AlgebraicNode, opts?: NodeOptions);
12
12
  toMathString(): string;
13
- toEquivalentNodes(): Node[];
13
+ toEquivalentNodes(): AlgebraicNode[];
14
14
  toAllValidTexs(): string[];
15
15
  toTex(): string;
16
+ evaluate(vars: Record<string, number>): number;
16
17
  }
17
18
  export declare class SquareNode extends PowerNode {
18
- constructor(child: Node, opts?: NodeOptions);
19
+ constructor(child: AlgebraicNode, opts?: NodeOptions);
19
20
  }
20
21
  //# sourceMappingURL=powerNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"powerNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/powerNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,SAAS,CAEnD;AAED,qBAAa,SAAU,YAAW,YAAY;IAC5C,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;gBAEb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,YAAY,IAAI,MAAM;IAItB,iBAAiB;IAqBjB,cAAc,IAAI,MAAM,EAAE;IAI1B,KAAK,IAAI,MAAM;CAuBhB;AAED,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW;CAG5C"}
1
+ {"version":3,"file":"powerNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/powerNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,SAAS,CAEnD;AAED,qBAAa,SAAU,YAAW,YAAY;IAC5C,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;gBAEb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IASpB,YAAY,IAAI,MAAM;IAItB,iBAAiB;IAqBjB,cAAc,IAAI,MAAM,EAAE;IAI1B,KAAK,IAAI,MAAM;IAuBf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAuBtC;AAED,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;CAGrD"}
@@ -67,6 +67,12 @@ class PowerNode {
67
67
  else
68
68
  return `${leftTex}^${rightTex}`;
69
69
  }
70
+ // toMathjs() {
71
+ // return pow(this.leftChild.toMathjs(), this.rightChild.toMathjs());
72
+ // }
73
+ evaluate(vars) {
74
+ return Math.pow(this.leftChild.evaluate(vars), this.rightChild.evaluate(vars));
75
+ }
70
76
  }
71
77
  exports.PowerNode = PowerNode;
72
78
  class SquareNode extends PowerNode {
@@ -1,15 +1,17 @@
1
1
  import { Node, NodeType } from "../node";
2
2
  import { OperatorIds, OperatorNode } from "./operatorNode";
3
+ import { AlgebraicNode } from "../algebraicNode";
3
4
  export declare function isSubstractNode(a: Node): a is SubstractNode;
4
5
  export declare class SubstractNode implements OperatorNode {
5
6
  id: OperatorIds;
6
- leftChild: Node;
7
- rightChild: Node;
7
+ leftChild: AlgebraicNode;
8
+ rightChild: AlgebraicNode;
8
9
  type: NodeType;
9
- constructor(leftChild: Node, rightChild: Node);
10
+ constructor(leftChild: AlgebraicNode, rightChild: AlgebraicNode);
10
11
  toMathString(): string;
11
- toEquivalentNodes(): Node[];
12
+ toEquivalentNodes(): AlgebraicNode[];
12
13
  toAllValidTexs(): string[];
13
14
  toTex(): string;
15
+ evaluate(vars: Record<string, number>): number;
14
16
  }
15
17
  //# sourceMappingURL=substractNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"substractNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/substractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAG3E,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,aAAa,CAE3D;AACD,qBAAa,aAAc,YAAW,YAAY;IAChD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;gBACH,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;IAO7C,YAAY,IAAI,MAAM;IAItB,iBAAiB,IAAI,IAAI,EAAE;IAa3B,cAAc,IAAI,MAAM,EAAE;IAG1B,KAAK,IAAI,MAAM;CAkBhB"}
1
+ {"version":3,"file":"substractNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/substractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,aAAa,CAE3D;AACD,qBAAa,aAAc,YAAW,YAAY;IAChD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;gBACH,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa;IAO/D,YAAY,IAAI,MAAM;IAItB,iBAAiB,IAAI,aAAa,EAAE;IAapC,cAAc,IAAI,MAAM,EAAE;IAG1B,KAAK,IAAI,MAAM;IAef,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAMtC"}
@@ -45,5 +45,8 @@ class SubstractNode {
45
45
  rightTex = `(${rightTex})`;
46
46
  return `${leftTex}-${rightTex}`;
47
47
  }
48
+ evaluate(vars) {
49
+ return this.leftChild.evaluate(vars) - this.rightChild.evaluate(vars);
50
+ }
48
51
  }
49
52
  exports.SubstractNode = SubstractNode;
@@ -1,6 +1,7 @@
1
+ import { AlgebraicNode } from "../algebraicNode";
1
2
  import { Node, NodeType } from "../node";
2
3
  export declare function isVariableNode(a: Node): a is VariableNode;
3
- export declare class VariableNode implements Node {
4
+ export declare class VariableNode implements AlgebraicNode {
4
5
  name: string;
5
6
  type: NodeType;
6
7
  constructor(name: string);
@@ -9,5 +10,6 @@ export declare class VariableNode implements Node {
9
10
  toMathjs(): string;
10
11
  toAllValidTexs(): string[];
11
12
  toEquivalentNodes(): this[];
13
+ evaluate(vars: Record<string, number>): number;
12
14
  }
13
15
  //# sourceMappingURL=variableNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variableNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/variables/variableNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,IAAI;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,WAAqB;gBAEb,IAAI,EAAE,MAAM;IAIxB,KAAK,IAAI,MAAM;IAGf,YAAY,IAAI,MAAM;IAGtB,QAAQ;IAGR,cAAc;IAGd,iBAAiB;CAMlB"}
1
+ {"version":3,"file":"variableNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/variables/variableNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,WAAqB;gBAEb,IAAI,EAAE,MAAM;IAIxB,KAAK,IAAI,MAAM;IAGf,YAAY,IAAI,MAAM;IAGtB,QAAQ;IAGR,cAAc;IAGd,iBAAiB;IAIjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAStC"}
@@ -26,5 +26,11 @@ class VariableNode {
26
26
  toEquivalentNodes() {
27
27
  return [this];
28
28
  }
29
+ evaluate(vars) {
30
+ const value = vars[this.name];
31
+ if (value === undefined)
32
+ throw Error(`Can't evaluate variable ${this.name}`);
33
+ return value;
34
+ }
29
35
  }
30
36
  exports.VariableNode = VariableNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [