math-exercises 2.0.3 → 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 (105) hide show
  1. package/lib/exercises/derivation/derivative/lnDerivativeThree.d.ts.map +1 -1
  2. package/lib/exercises/functions/basics/inverseImageFunctionGeogebra.d.ts +2 -2
  3. package/lib/exercises/functions/basics/inverseImageFunctionGeogebra.d.ts.map +1 -1
  4. package/lib/exercises/functions/basics/inverseImageFunctionGeogebra.js +67 -74
  5. package/lib/exercises/primitive/index.d.ts +1 -0
  6. package/lib/exercises/primitive/index.d.ts.map +1 -1
  7. package/lib/exercises/primitive/index.js +3 -2
  8. package/lib/exercises/primitive/sinCosPrimitive.d.ts.map +1 -1
  9. package/lib/exercises/primitive/sinUCosUPrimitive.d.ts.map +1 -1
  10. package/lib/index.d.ts +5 -2
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/math/complex/complex.d.ts +1 -1
  13. package/lib/math/geometry/point.d.ts +4 -4
  14. package/lib/math/geometry/point.d.ts.map +1 -1
  15. package/lib/math/geometry/triangles.d.ts +7 -7
  16. package/lib/math/geometry/triangles.d.ts.map +1 -1
  17. package/lib/math/geometry/triangles.js +21 -11
  18. package/lib/math/numbers/decimals/decimal.d.ts +5 -4
  19. package/lib/math/numbers/decimals/decimal.d.ts.map +1 -1
  20. package/lib/math/numbers/integer/integer.d.ts +3 -3
  21. package/lib/math/numbers/integer/integer.d.ts.map +1 -1
  22. package/lib/math/numbers/integer/power.d.ts +4 -3
  23. package/lib/math/numbers/integer/power.d.ts.map +1 -1
  24. package/lib/math/numbers/nombre.d.ts +3 -2
  25. package/lib/math/numbers/nombre.d.ts.map +1 -1
  26. package/lib/math/numbers/rationals/rational.d.ts +4 -2
  27. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  28. package/lib/math/numbers/reals/extendedRingElement.d.ts +1 -1
  29. package/lib/math/numbers/reals/real.d.ts +4 -3
  30. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  31. package/lib/math/polynomials/polynomial.d.ts +4 -3
  32. package/lib/math/polynomials/polynomial.d.ts.map +1 -1
  33. package/lib/math/polynomials/polynomial.js +8 -6
  34. package/lib/math/polynomials/rationalFrac.d.ts.map +1 -1
  35. package/lib/math/polynomials/rationalFrac.js +2 -2
  36. package/lib/math/polynomials/trinom.d.ts +10 -6
  37. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  38. package/lib/math/polynomials/trinom.js +1 -1
  39. package/lib/math/utils/arithmetic/gcd.d.ts +1 -2
  40. package/lib/math/utils/arithmetic/gcd.d.ts.map +1 -1
  41. package/lib/math/utils/arithmetic/gcd.js +6 -7
  42. package/lib/server.js +4 -8
  43. package/lib/tree/nodes/algebraicNode.d.ts +3 -1
  44. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  45. package/lib/tree/nodes/complex/complexNode.d.ts +5 -4
  46. package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
  47. package/lib/tree/nodes/functions/absNode.d.ts +2 -1
  48. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  49. package/lib/tree/nodes/functions/absNode.js +3 -0
  50. package/lib/tree/nodes/functions/cosNode.d.ts +2 -1
  51. package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
  52. package/lib/tree/nodes/functions/cosNode.js +3 -0
  53. package/lib/tree/nodes/functions/expNode.d.ts +2 -1
  54. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  55. package/lib/tree/nodes/functions/expNode.js +3 -0
  56. package/lib/tree/nodes/functions/logNode.d.ts +2 -1
  57. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  58. package/lib/tree/nodes/functions/logNode.js +3 -0
  59. package/lib/tree/nodes/functions/oppositeNode.d.ts +1 -0
  60. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  61. package/lib/tree/nodes/functions/oppositeNode.js +12 -22
  62. package/lib/tree/nodes/functions/sinNode.d.ts +2 -1
  63. package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
  64. package/lib/tree/nodes/functions/sinNode.js +3 -0
  65. package/lib/tree/nodes/functions/sqrtNode.d.ts +2 -1
  66. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  67. package/lib/tree/nodes/functions/sqrtNode.js +3 -0
  68. package/lib/tree/nodes/geometry/lengthNode.d.ts +1 -0
  69. package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
  70. package/lib/tree/nodes/geometry/lengthNode.js +7 -0
  71. package/lib/tree/nodes/geometry/vectorNode.d.ts +2 -3
  72. package/lib/tree/nodes/geometry/vectorNode.d.ts.map +1 -1
  73. package/lib/tree/nodes/numbers/constantNode.d.ts +3 -1
  74. package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
  75. package/lib/tree/nodes/numbers/constantNode.js +5 -1
  76. package/lib/tree/nodes/numbers/infiniteNode.d.ts.map +1 -1
  77. package/lib/tree/nodes/numbers/infiniteNode.js +3 -3
  78. package/lib/tree/nodes/numbers/numberNode.d.ts +1 -0
  79. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  80. package/lib/tree/nodes/numbers/numberNode.js +3 -0
  81. package/lib/tree/nodes/numbers/piNode.d.ts +1 -1
  82. package/lib/tree/nodes/numbers/piNode.d.ts.map +1 -1
  83. package/lib/tree/nodes/numbers/piNode.js +1 -1
  84. package/lib/tree/nodes/operators/addNode.d.ts +2 -1
  85. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  86. package/lib/tree/nodes/operators/addNode.js +3 -0
  87. package/lib/tree/nodes/operators/divideNode.d.ts +2 -1
  88. package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
  89. package/lib/tree/nodes/operators/divideNode.js +3 -0
  90. package/lib/tree/nodes/operators/fractionNode.d.ts +2 -1
  91. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  92. package/lib/tree/nodes/operators/fractionNode.js +3 -0
  93. package/lib/tree/nodes/operators/multiplyNode.d.ts +1 -1
  94. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  95. package/lib/tree/nodes/operators/multiplyNode.js +6 -4
  96. package/lib/tree/nodes/operators/powerNode.d.ts +3 -2
  97. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  98. package/lib/tree/nodes/operators/powerNode.js +6 -0
  99. package/lib/tree/nodes/operators/substractNode.d.ts +6 -4
  100. package/lib/tree/nodes/operators/substractNode.d.ts.map +1 -1
  101. package/lib/tree/nodes/operators/substractNode.js +3 -0
  102. package/lib/tree/nodes/variables/variableNode.d.ts +3 -1
  103. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  104. package/lib/tree/nodes/variables/variableNode.js +6 -0
  105. package/package.json +1 -1
@@ -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"}
@@ -44,9 +44,9 @@ class MultiplyNode {
44
44
  let leftTex = this.leftChild.toTex();
45
45
  let rightTex = this.rightChild.toTex();
46
46
  if (leftTex === "1") {
47
- if ((0, numberNode_1.isNumberNode)(this.rightChild)) {
48
- return rightTex;
49
- }
47
+ // if (isNumberNode(this.rightChild) || isVariableNode(this.rightChild)) {
48
+ return rightTex;
49
+ // }
50
50
  }
51
51
  if ((0, operatorNode_1.isOperatorNode)(this.leftChild)) {
52
52
  if ([operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract, operatorNode_1.OperatorIds.divide].includes(this.leftChild.id))
@@ -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.3",
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": [