math-exercises 3.0.31 → 3.0.32

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 (56) hide show
  1. package/lib/exercises/math/functions/basics/inverseImageFunctionGeogebra.d.ts.map +1 -1
  2. package/lib/exercises/math/functions/sign/affineProductSign.d.ts.map +1 -1
  3. package/lib/exercises/math/functions/sign/affineProductSign.js +3 -0
  4. package/lib/exercises/math/functions/trinoms/equation/solveSecondDegreeEquationByFactorisation.d.ts.map +1 -1
  5. package/lib/exercises/math/functions/trinoms/equation/solveSecondDegreeEquationByFactorisation.js +64 -72
  6. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.d.ts.map +1 -1
  7. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.js +1 -1
  8. package/lib/exercises/math/functions/trinoms/roots/rootsFromFactorizedForm.d.ts.map +1 -1
  9. package/lib/exercises/math/functions/trinoms/roots/rootsFromFactorizedForm.js +31 -14
  10. package/lib/exercises/math/functions/trinoms/roots/rootsReading.d.ts.map +1 -1
  11. package/lib/exercises/math/functions/trinoms/roots/rootsReading.js +1 -2
  12. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromFacto.d.ts.map +1 -1
  13. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromFacto.js +3 -0
  14. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromRoots.d.ts.map +1 -1
  15. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromRoots.js +3 -0
  16. package/lib/exercises/math/geometry/cartesian/midpoint.d.ts.map +1 -1
  17. package/lib/exercises/math/geometry/cartesian/midpoint.js +19 -6
  18. package/lib/exercises/math/geometry/cartesian/pointCoordinates.d.ts.map +1 -1
  19. package/lib/exercises/math/geometry/cartesian/pointCoordinatesNoAxisNumbers.d.ts.map +1 -1
  20. package/lib/exercises/math/geometry/cartesian/pointCoordinatesNoOrthonorm.d.ts.map +1 -1
  21. package/lib/exercises/math/probaStat/ballsBasicProbas.d.ts.map +1 -1
  22. package/lib/exercises/math/probaStat/ballsBasicProbas.js +29 -16
  23. package/lib/exercises/math/probaStat/cardBasicProbas.d.ts.map +1 -1
  24. package/lib/exercises/math/probaStat/cardBasicProbas.js +44 -32
  25. package/lib/exercises/math/probaStat/stats1var/median.js +2 -2
  26. package/lib/exercises/math/probaStat/stats1var/medianList.d.ts.map +1 -1
  27. package/lib/exercises/math/probaStat/stats1var/medianList.js +28 -12
  28. package/lib/math/geometry/vector.d.ts.map +1 -1
  29. package/lib/math/geometry/vector.js +0 -11
  30. package/lib/math/polynomials/trinom.d.ts +1 -1
  31. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  32. package/lib/math/polynomials/trinom.js +7 -17
  33. package/lib/tree/nodes/complex/complexNode.d.ts +9 -3
  34. package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
  35. package/lib/tree/nodes/complex/complexNode.js +18 -1
  36. package/lib/tree/nodes/equations/equalNode.d.ts.map +1 -1
  37. package/lib/tree/nodes/node.d.ts +2 -1
  38. package/lib/tree/nodes/node.d.ts.map +1 -1
  39. package/lib/tree/nodes/node.js +1 -0
  40. package/lib/tree/nodes/sets/belongsNode.d.ts +0 -1
  41. package/lib/tree/nodes/sets/belongsNode.d.ts.map +1 -1
  42. package/lib/tree/nodes/sets/belongsNode.js +0 -3
  43. package/lib/tree/nodes/sets/discreteSetNode.d.ts +8 -2
  44. package/lib/tree/nodes/sets/discreteSetNode.d.ts.map +1 -1
  45. package/lib/tree/nodes/sets/discreteSetNode.js +20 -2
  46. package/lib/tree/nodes/sets/intervalNode.d.ts +6 -2
  47. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  48. package/lib/tree/nodes/sets/intervalNode.js +15 -1
  49. package/lib/tree/nodes/sets/setNode.d.ts +3 -1
  50. package/lib/tree/nodes/sets/setNode.d.ts.map +1 -1
  51. package/lib/tree/nodes/sets/unionIntervalNode.d.ts +8 -2
  52. package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
  53. package/lib/tree/nodes/sets/unionIntervalNode.js +16 -0
  54. package/lib/tree/parsers/discreteSetParser.d.ts.map +1 -1
  55. package/lib/tree/parsers/discreteSetParser.js +0 -2
  56. package/package.json +1 -1
@@ -7,12 +7,12 @@ import { getDistinctQuestions } from "../../../utils/getDistinctQuestions.js";
7
7
  const getInstruction = ({ randomValues, randomEffectives, }) => {
8
8
  return `On considère le tableau d'effectifs suivant :
9
9
 
10
- ${mdTable([
10
+ ${mdTable([
11
11
  ["Valeur", ...randomValues.map((e) => dollarize(e))],
12
12
  ["Effectif", ...randomEffectives.map((e) => dollarize(e))],
13
13
  ])}
14
14
 
15
- Calculer la médiane de cette série de valeurs.`;
15
+ Calculer la médiane de cette série de valeurs.`;
16
16
  };
17
17
  const getMedianWithTable = () => {
18
18
  const getRandomUniqueValues = (count, min, max) => {
@@ -1 +1 @@
1
- {"version":3,"file":"medianList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/medianList.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAST,MAAM,sBAAsB,CAAC;AAG9B,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAsDF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAahD,CAAC"}
1
+ {"version":3,"file":"medianList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/medianList.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAWT,MAAM,sBAAsB,CAAC;AAE9B,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAiEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAehD,CAAC"}
@@ -1,28 +1,42 @@
1
1
  import { randint } from "../../../../math/utils/random/randint.js";
2
2
  import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../exercise.js";
3
3
  import { getDistinctQuestions } from "../../../utils/getDistinctQuestions.js";
4
- const getMedianList = () => {
5
- let randomValues = [];
6
- const length = randint(6, 10);
7
- for (let i = 0; i < length; i++)
8
- randomValues.push(randint(1, 20));
9
- const sortedValues = randomValues.sort((a, b) => a - b);
10
- const middleIndex = Math.floor(randomValues.length / 2);
4
+ const getInstruction = (identifiers) => {
5
+ const { sortedValues } = identifiers;
6
+ return `On considère la liste de valeurs suivante :
7
+
8
+ $$
9
+ ${sortedValues.join(";\\ ")}
10
+ $$
11
+
12
+ Calculer la médiane de cette liste de valeurs.`;
13
+ };
14
+ const getAnswer = (identifiers) => {
15
+ const { sortedValues } = identifiers;
16
+ const middleIndex = Math.floor(sortedValues.length / 2);
11
17
  let median;
12
- if (randomValues.length % 2 === 0) {
18
+ if (sortedValues.length % 2 === 0) {
13
19
  median = (sortedValues[middleIndex - 1] + sortedValues[middleIndex]) / 2;
14
20
  }
15
21
  else {
16
22
  median = sortedValues[middleIndex];
17
23
  }
18
24
  const answer = (median + "").replace(".", ",");
25
+ return answer;
26
+ };
27
+ const getMedianList = () => {
28
+ let randomValues = [];
29
+ const length = randint(6, 10);
30
+ for (let i = 0; i < length; i++)
31
+ randomValues.push(randint(1, 20));
32
+ const sortedValues = randomValues.sort((a, b) => a - b);
33
+ const identifiers = { sortedValues };
19
34
  const question = {
20
- instruction: `On considère la liste suivante : $${randomValues.join(";\\ ")}.$
21
- $\\\\$Calculer la médiane de cette liste de valeurs.`,
22
- answer,
35
+ instruction: getInstruction(identifiers),
36
+ answer: getAnswer(identifiers),
23
37
  keys: [],
24
38
  answerFormat: "tex",
25
- identifiers: { sortedValues },
39
+ identifiers,
26
40
  };
27
41
  return question;
28
42
  };
@@ -51,4 +65,6 @@ export const medianWithList = {
51
65
  getPropositions,
52
66
  isAnswerValid,
53
67
  subject: "Mathématiques",
68
+ getAnswer,
69
+ getInstruction,
54
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/math/geometry/vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAmBlE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM;IAOpD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,MAAM;IAOrD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO;CAGpC;AAED,qBAAa,MAAM;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;gBACL,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa;IAO5D,KAAK,IAAI,MAAM;IAIf,eAAe,IAAI,MAAM;IAMzB,iBAAiB,IAAI,MAAM;IAM3B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAK9B,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAI1C,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAItC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa;IAIrC,KAAK,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM;IAOrC,QAAQ;IAGR,aAAa,CAAC,CAAC,EAAE,MAAM;IAgBvB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAWtB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAG5B,OAAO,IAAI,aAAa;IAUxB,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM;IAO5C,MAAM,CAAC,CAAC,EAAE,MAAM;IAIhB,YAAY;IAMZ,YAAY;IAOZ,aAAa;CAGd"}
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/math/geometry/vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAmBlE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM;IAOpD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,MAAM;IAOrD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO;CAGpC;AAED,qBAAa,MAAM;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;gBACL,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa;IAO5D,KAAK,IAAI,MAAM;IAIf,eAAe,IAAI,MAAM;IAMzB,iBAAiB,IAAI,MAAM;IAM3B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAK9B,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAI1C,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAItC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa;IAIrC,KAAK,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM;IAOrC,QAAQ;IAGR,aAAa,CAAC,CAAC,EAAE,MAAM;IAIvB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAWtB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAG5B,OAAO,IAAI,aAAa;IAUxB,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM;IAO5C,MAAM,CAAC,CAAC,EAAE,MAAM;IAIhB,YAAY;IAMZ,YAAY;IAOZ,aAAa;CAGd"}
@@ -63,17 +63,6 @@ export class Vector {
63
63
  return this.times((-1).toTree());
64
64
  }
65
65
  scalarProduct(v) {
66
- // if (
67
- // [this.x.type, this.y.type, v.x.type, v.y.type].some(
68
- // (el) => el !== NodeType.number,
69
- // )
70
- // )
71
- // throw Error("general determinant not implemented");
72
- // const xValue = (this.x as NumberNode).value;
73
- // const yValue = (this.y as NumberNode).value;
74
- // const vxValue = (v.x as NumberNode).value;
75
- // const vyValue = (v.y as NumberNode).value;
76
- // return new NumberNode(xValue * vxValue + yValue * vyValue);
77
66
  return add(multiply(this.x, v.x), multiply(this.y, v.y)).simplify();
78
67
  }
79
68
  add(v) {
@@ -68,7 +68,7 @@ export declare class Trinom extends Polynomial {
68
68
  getAlphaNode(): AlgebraicNode | NumberNode;
69
69
  getBeta(): number;
70
70
  getBetaNode(): AlgebraicNode | NumberNode;
71
- getFactorizedForm(): AlgebraicNode | MultiplyNode;
71
+ toFactorized(): AlgebraicNode | MultiplyNode;
72
72
  getCanonicalForm(): AddNode | MultiplyNode;
73
73
  getSommet(): Point;
74
74
  getCoords(): number[];
@@ -1 +1 @@
1
- {"version":3,"file":"trinom.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/trinom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trinom.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/trinom.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import { SqrtNode } from "../../tree/nodes/functions/sqrtNode.js";
2
2
  import { NumberNode } from "../../tree/nodes/numbers/numberNode.js";
3
- import { AddNode } from "../../tree/nodes/operators/addNode.js";
3
+ import { add, AddNode } from "../../tree/nodes/operators/addNode.js";
4
4
  import { FractionNode } from "../../tree/nodes/operators/fractionNode.js";
5
- import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode.js";
6
- import { SquareNode } from "../../tree/nodes/operators/powerNode.js";
5
+ import { multiply, MultiplyNode, } from "../../tree/nodes/operators/multiplyNode.js";
6
+ import { square, SquareNode, } from "../../tree/nodes/operators/powerNode.js";
7
7
  import { VariableNode } from "../../tree/nodes/variables/variableNode.js";
8
8
  import { Point } from "../geometry/point.js";
9
9
  import { Rational } from "../numbers/rationals/rational.js";
10
10
  import { SquareRoot } from "../numbers/reals/real.js";
11
11
  import { Polynomial } from "./polynomial.js";
12
- import { OppositeNode } from "../../tree/nodes/functions/oppositeNode.js";
12
+ import { opposite, OppositeNode, } from "../../tree/nodes/functions/oppositeNode.js";
13
13
  import { gcd } from "../utils/arithmetic/gcd.js";
14
14
  import { randint } from "../utils/random/randint.js";
15
15
  import { random } from "../../utils/alea/random.js";
@@ -174,24 +174,14 @@ export class Trinom extends Polynomial {
174
174
  getBetaNode() {
175
175
  return new Rational(-this.getDelta(), 4 * this.a).simplify().toTree();
176
176
  }
177
- getFactorizedForm() {
177
+ toFactorized() {
178
178
  const roots = this.getRootsNode();
179
179
  if (!roots.length)
180
180
  return this.toTree();
181
181
  if (roots.length === 1) {
182
- return roots[0].toTex() === "0"
183
- ? new MultiplyNode(new NumberNode(this.a), new SquareNode(new VariableNode("x")))
184
- : new MultiplyNode(new NumberNode(this.a), new SquareNode(new AddNode(new VariableNode("x"), new OppositeNode(roots[0]))));
185
- }
186
- if (roots[0].toTex() === "0") {
187
- return new MultiplyNode(new NumberNode(this.a), new MultiplyNode(new VariableNode("x"), new AddNode(new VariableNode("x"), new OppositeNode(roots[1]))));
188
- }
189
- else if (roots[1].toTex() === "0") {
190
- return new MultiplyNode(new NumberNode(this.a), new MultiplyNode(new VariableNode("x"), new AddNode(new VariableNode("x"), new OppositeNode(roots[0]))));
191
- }
192
- else {
193
- return new MultiplyNode(new NumberNode(this.a), new MultiplyNode(new AddNode(new VariableNode("x"), new OppositeNode(roots[0])), new AddNode(new VariableNode("x"), new OppositeNode(roots[1]))));
182
+ return multiply(this.a, square(add("x", opposite(roots[0])).simplify()));
194
183
  }
184
+ return multiply(this.a, multiply(add("x", opposite(roots[0])).simplify(), add("x", opposite(roots[1]))));
195
185
  }
196
186
  getCanonicalForm() {
197
187
  const alpha = this.getAlpha();
@@ -1,10 +1,12 @@
1
- import { Node, NodeIds, NodeOptions, NodeType } from "../node.js";
2
- import { AlgebraicNode } from "../algebraicNode.js";
3
- export declare class ComplexNode implements Node {
1
+ import { NodeIds, NodeOptions, NodeType } from "../node.js";
2
+ import { AlgebraicNode, EvaluateOptions } from "../algebraicNode.js";
3
+ export declare const isComplexNode: (n: AlgebraicNode) => n is ComplexNode;
4
+ export declare class ComplexNode implements AlgebraicNode {
4
5
  re: AlgebraicNode;
5
6
  im: AlgebraicNode;
6
7
  opts?: NodeOptions;
7
8
  type: NodeType;
9
+ isNumeric: boolean;
8
10
  constructor(re: AlgebraicNode, im: AlgebraicNode, opts?: NodeOptions);
9
11
  toIdentifiers(): {
10
12
  id: NodeIds;
@@ -20,5 +22,9 @@ export declare class ComplexNode implements Node {
20
22
  toMathString(): string;
21
23
  toTex(): string;
22
24
  simplify(): this;
25
+ derivative(varName?: string): AlgebraicNode;
26
+ equals(node: AlgebraicNode): boolean;
27
+ evaluate(vars?: Record<string, number>, opts?: EvaluateOptions): number;
28
+ toDetailedEvaluation(vars: Record<string, AlgebraicNode>): ComplexNode;
23
29
  }
24
30
  //# 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,YAAY,CAAC;AAIlE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,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"}
1
+ {"version":3,"file":"complexNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/complex/complexNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIlE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAErE,eAAO,MAAM,aAAa,MAAO,aAAa,KAAG,CAAC,IAAI,WAErD,CAAC;AACF,qBAAa,WAAY,YAAW,aAAa;IAC/C,EAAE,EAAE,aAAa,CAAC;IAClB,EAAE,EAAE,aAAa,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAoB;IAClC,SAAS,EAAE,OAAO,CAAC;gBACP,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAMpE,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;IAGR,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IAG3C,MAAM,CAAC,IAAI,EAAE,aAAa;IAK1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe;IAG9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAYzD"}
@@ -3,15 +3,20 @@ import { NodeIds, NodeType } from "../node.js";
3
3
  import { VariableNode } from "../variables/variableNode.js";
4
4
  import { MultiplyNode } from "../operators/multiplyNode.js";
5
5
  import { AddNode } from "../operators/addNode.js";
6
+ export const isComplexNode = (n) => {
7
+ return n.type === NodeType.complex;
8
+ };
6
9
  export class ComplexNode {
7
10
  re;
8
11
  im;
9
12
  opts;
10
- type = NodeType.number;
13
+ type = NodeType.complex;
14
+ isNumeric;
11
15
  constructor(re, im, opts) {
12
16
  this.re = re;
13
17
  this.im = im;
14
18
  this.opts = opts;
19
+ this.isNumeric = false;
15
20
  }
16
21
  toIdentifiers() {
17
22
  return {
@@ -49,4 +54,16 @@ export class ComplexNode {
49
54
  simplify() {
50
55
  return this;
51
56
  }
57
+ derivative(varName) {
58
+ throw new Error("unimp");
59
+ }
60
+ equals(node) {
61
+ return (isComplexNode(node) && node.re.equals(this.re) && node.im.equals(this.im));
62
+ }
63
+ evaluate(vars, opts) {
64
+ return Number.NaN;
65
+ }
66
+ toDetailedEvaluation(vars) {
67
+ return new ComplexNode(this.re.toDetailedEvaluation(vars), this.im.toDetailedEvaluation(vars));
68
+ }
52
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"equalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/equalNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAmB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOzE,eAAO,MAAM,KAAK,MACb,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,cAOnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;IAClB,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,8BAAsB,oBAAoB;IACxC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,oBAAoB,GAAG,SAAS;CAOrE;AAED,eAAO,MAAM,WAAW,SAAU,IAAI,KAAG,IAAI,IAAI,SAChB,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,IAAI,oBAAoB;IAQrC,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;IAIR,OAAO;IAIP,OAAO;CAUR;AAED,eAAO,MAAM,qBAAqB,MAC7B,aAAa,KACb,aAAa,KACb,aAAa,KACb,aAAa,sBA2DjB,CAAC"}
1
+ {"version":3,"file":"equalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/equations/equalNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAmB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAmB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOzE,eAAO,MAAM,KAAK,MACb,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,cAOnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;IAClB,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,8BAAsB,oBAAoB;IACxC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,oBAAoB,GAAG,SAAS;CAOrE;AAED,eAAO,MAAM,WAAW,SAAU,IAAI,KAAG,IAAI,IAAI,SAChB,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,IAAI,oBAAoB;IAQrC,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;IAIR,OAAO;IAIP,OAAO;CAUR;AAED,eAAO,MAAM,qBAAqB,MAC7B,aAAa,KACb,aAAa,KACb,aAAa,KACb,aAAa,sBA2DjB,CAAC"}
@@ -12,7 +12,8 @@ export declare enum NodeType {
12
12
  vector = 10,
13
13
  set = 11,
14
14
  trinom = 12,
15
- monom = 13
15
+ monom = 13,
16
+ complex = 14
16
17
  }
17
18
  export type NodeOptions = {
18
19
  forceTimesSign?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/node.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export var NodeType;
14
14
  NodeType[NodeType["set"] = 11] = "set";
15
15
  NodeType[NodeType["trinom"] = 12] = "trinom";
16
16
  NodeType[NodeType["monom"] = 13] = "monom";
17
+ NodeType[NodeType["complex"] = 14] = "complex";
17
18
  })(NodeType || (NodeType = {}));
18
19
  export var NodeIds;
19
20
  (function (NodeIds) {
@@ -9,7 +9,6 @@ export declare class BelongsNode implements Node {
9
9
  toAllValidTexs(): string[];
10
10
  toEquivalentNodes(opts?: NodeOptions): Node[];
11
11
  toMathString(): string;
12
- toMathjs(): string;
13
12
  toTex(): string;
14
13
  toIdentifiers(): {
15
14
  id: NodeIds;
@@ -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,YAAY,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,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"}
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,YAAY,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,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,KAAK;IAGL,aAAa;;;;;;;;;IAOb,QAAQ;CAGT"}
@@ -27,9 +27,6 @@ export class BelongsNode {
27
27
  toMathString() {
28
28
  return this.toTex();
29
29
  }
30
- toMathjs() {
31
- return this.toTex();
32
- }
33
30
  toTex() {
34
31
  return `${this.leftChild.toTex()}\\in\\ ${this.rightChild.toTex()}`;
35
32
  }
@@ -1,13 +1,15 @@
1
- import { AlgebraicNode } from "../algebraicNode.js";
1
+ import { AlgebraicNode, EvaluateOptions, SimplifyOptions } from "../algebraicNode.js";
2
2
  import { Node, NodeIds, NodeOptions, NodeType } from "../node.js";
3
3
  import { SetIds, SetNode } from "./setNode.js";
4
4
  export declare function isDiscreteSetNode(a: Node): a is DiscreteSetNode;
5
+ export declare const set: (elmts: AlgebraicNode[], opts?: NodeOptions) => DiscreteSetNode;
5
6
  export declare class DiscreteSetNode implements SetNode {
6
7
  type: NodeType;
7
8
  id: SetIds;
8
9
  opts?: NodeOptions | undefined;
9
10
  elements: AlgebraicNode[];
10
11
  isEmpty: boolean;
12
+ isNumeric: boolean;
11
13
  constructor(elements: AlgebraicNode[], opts?: NodeOptions);
12
14
  isEmptySet(): boolean;
13
15
  toClosedForm(): this;
@@ -22,7 +24,11 @@ export declare class DiscreteSetNode implements SetNode {
22
24
  toMathString(): string;
23
25
  toTex(): string;
24
26
  toDeleteRandomElement(): DiscreteSetNode;
25
- simplify(): DiscreteSetNode;
27
+ simplify(opts?: SimplifyOptions): DiscreteSetNode;
28
+ derivative(varName?: string): AlgebraicNode;
29
+ equals(node: AlgebraicNode): boolean;
30
+ evaluate(vars?: Record<string, number>, opts?: EvaluateOptions): number;
31
+ toDetailedEvaluation(vars: Record<string, AlgebraicNode>): DiscreteSetNode;
26
32
  }
27
33
  export declare const EmptySet: DiscreteSetNode;
28
34
  //# 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,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAC1D,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,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;gBACL,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAOzD,UAAU;IAIV,YAAY;IAGZ,cAAc;IAGd,aAAa;;;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAyBpC,YAAY;IAIZ,KAAK;IAOL,qBAAqB;IAMrB,QAAQ;CAOT;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,EACL,aAAa,EACb,eAAe,EACf,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAC1D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,eAAe,CAE/D;AAED,eAAO,MAAM,GAAG,UAAW,aAAa,EAAE,SAAS,WAAW,oBAE7D,CAAC;AACF,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,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;gBACP,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAQzD,UAAU;IAIV,YAAY;IAGZ,cAAc;IAGd,aAAa;;;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAyBpC,YAAY;IAIZ,KAAK;IAOL,qBAAqB;IAMrB,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAO/B,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IAG3C,MAAM,CAAC,IAAI,EAAE,aAAa;IAQ1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe;IAG9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAMzD;AAED,eAAO,MAAM,QAAQ,iBAA0B,CAAC"}
@@ -5,18 +5,23 @@ import { SetIds, isSetNode } from "./setNode.js";
5
5
  export function isDiscreteSetNode(a) {
6
6
  return isSetNode(a) && a.id === SetIds.discrete;
7
7
  }
8
+ export const set = (elmts, opts) => {
9
+ return new DiscreteSetNode(elmts, opts);
10
+ };
8
11
  export class DiscreteSetNode {
9
12
  type;
10
13
  id;
11
14
  opts;
12
15
  elements;
13
16
  isEmpty;
17
+ isNumeric;
14
18
  constructor(elements, opts) {
15
19
  this.type = NodeType.set;
16
20
  this.id = SetIds.discrete;
17
21
  this.elements = elements;
18
22
  this.opts = opts;
19
23
  this.isEmpty = !elements.length;
24
+ this.isNumeric = false;
20
25
  }
21
26
  isEmptySet() {
22
27
  return !this.elements.length;
@@ -72,10 +77,23 @@ export class DiscreteSetNode {
72
77
  newElements.splice(index, 1);
73
78
  return new DiscreteSetNode(newElements);
74
79
  }
75
- simplify() {
80
+ simplify(opts) {
76
81
  return new DiscreteSetNode(this.elements
77
- .map((el) => el.simplify())
82
+ .map((el) => el.simplify(opts))
78
83
  .sort((a, b) => a.evaluate() - b.evaluate()));
79
84
  }
85
+ derivative(varName) {
86
+ throw new Error("unimp");
87
+ }
88
+ equals(node) {
89
+ return (isDiscreteSetNode(node) &&
90
+ this.simplify().elements.every((e, i) => e.equals(node.simplify().elements[i])));
91
+ }
92
+ evaluate(vars, opts) {
93
+ return Number.NaN;
94
+ }
95
+ toDetailedEvaluation(vars) {
96
+ return new DiscreteSetNode(this.elements.map((e) => e.toDetailedEvaluation(vars)), this.opts);
97
+ }
80
98
  }
81
99
  export const EmptySet = new DiscreteSetNode([]);
@@ -1,4 +1,4 @@
1
- import { AlgebraicNode, SimplifyOptions } from "../algebraicNode.js";
1
+ import { AlgebraicNode, EvaluateOptions, SimplifyOptions } from "../algebraicNode.js";
2
2
  import { InequationNode } from "../inequations/inequationNode.js";
3
3
  import { Node, NodeIds, NodeOptions, NodeType } from "../node.js";
4
4
  import { NodeIdentifiers } from "../nodeConstructor.js";
@@ -27,12 +27,13 @@ export declare class IntervalNode implements SetNode {
27
27
  a: AlgebraicNode;
28
28
  b: AlgebraicNode;
29
29
  isEmpty: boolean;
30
+ isNumeric: boolean;
30
31
  constructor(a: AlgebraicNode, b: AlgebraicNode, closure: ClosureType, opts?: NodeOptions);
31
32
  toAllValidTexs(opts?: NodeOptions): string[];
32
33
  toEquivalentNodes(opts?: NodeOptions): IntervalNode[];
33
34
  toInequality(middleChild?: AlgebraicNode): InequationNode;
34
35
  toMathString(): string;
35
- equals(i: IntervalNode): boolean;
36
+ equals(i: AlgebraicNode): boolean;
36
37
  toReversedClosure(): IntervalNode;
37
38
  toLeftReversedClosure(): IntervalNode;
38
39
  toRightReversedClosure(): IntervalNode;
@@ -43,6 +44,9 @@ export declare class IntervalNode implements SetNode {
43
44
  toIdentifiers(): IntervalNodeIdentifiers;
44
45
  toText(isPlural: boolean, isFeminine: boolean): string;
45
46
  simplify(opts?: SimplifyOptions): IntervalNode;
47
+ derivative(varName?: string): AlgebraicNode;
48
+ evaluate(vars?: Record<string, number>, opts?: EvaluateOptions): number;
49
+ toDetailedEvaluation(vars: Record<string, AlgebraicNode>): IntervalNode;
46
50
  isLeftClosed(): boolean;
47
51
  isRightClosed(): boolean;
48
52
  includes(a: AlgebraicNode): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAOxE,OAAO,EAAW,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,8BAAsB,uBAAuB;IAC3C,MAAM,CAAC,MAAM;IA2Cb,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAYlC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,uBAAuB;CAQpD;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AACF,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBAEf,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW;IAWpB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW;IAMjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,aAAa;IA4BxC,YAAY;IAIZ,MAAM,CAAC,CAAC,EAAE,YAAY;IAMtB,iBAAiB;IAGjB,qBAAqB;IAGrB,sBAAsB;IAGtB,wBAAwB;IAYxB,YAAY;IAkCZ,KAAK;IAWL,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAOvC,aAAa,IAAI,uBAAuB;IAUxC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAiB7C,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAS/B,YAAY;IAGZ,aAAa;IAGb,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;IAanC,UAAU,CAAC,QAAQ,EAAE,YAAY;IAEjC,YAAY,CAAC,QAAQ,EAAE,YAAY;IAwDnC,YAAY;IAIZ,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,iBAAiB;CAkDhE"}
1
+ {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAOxE,OAAO,EAAW,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,8BAAsB,uBAAuB;IAC3C,MAAM,CAAC,MAAM;IA2Cb,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAYlC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,uBAAuB;CAQpD;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AACF,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;gBAGjB,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,WAAW;IAYpB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW;IAMjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,aAAa;IA4BxC,YAAY;IAIZ,MAAM,CAAC,CAAC,EAAE,aAAa;IASvB,iBAAiB;IAGjB,qBAAqB;IAGrB,sBAAsB;IAGtB,wBAAwB;IAYxB,YAAY;IAkCZ,KAAK;IAWL,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAOvC,aAAa,IAAI,uBAAuB;IAUxC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;IAiB7C,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAQ/B,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IAG3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe;IAG9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IASxD,YAAY;IAGZ,aAAa;IAGb,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;IAanC,UAAU,CAAC,QAAQ,EAAE,YAAY;IAEjC,YAAY,CAAC,QAAQ,EAAE,YAAY;IAwDnC,YAAY;IAIZ,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,iBAAiB;CAkDhE"}
@@ -82,6 +82,7 @@ export class IntervalNode {
82
82
  a;
83
83
  b;
84
84
  isEmpty;
85
+ isNumeric;
85
86
  constructor(a, b, closure, opts) {
86
87
  this.type = NodeType.set;
87
88
  this.id = SetIds.interval;
@@ -90,6 +91,7 @@ export class IntervalNode {
90
91
  this.b = b;
91
92
  this.isEmpty = false;
92
93
  this.opts = opts;
94
+ this.isNumeric = false;
93
95
  }
94
96
  toAllValidTexs(opts) {
95
97
  return this.toEquivalentNodes(opts ?? this.opts).flatMap((node) => node.toAllTexs(opts ?? this.opts));
@@ -126,7 +128,10 @@ export class IntervalNode {
126
128
  return this.toTex();
127
129
  }
128
130
  equals(i) {
129
- return (i.a.equals(this.a) && i.b.equals(this.b) && i.closure === this.closure);
131
+ return (isIntervalNode(i) &&
132
+ i.a.equals(this.a) &&
133
+ i.b.equals(this.b) &&
134
+ i.closure === this.closure);
130
135
  }
131
136
  toReversedClosure() {
132
137
  return new IntervalNode(this.a, this.b, Closure.reverse(this.closure));
@@ -206,6 +211,15 @@ export class IntervalNode {
206
211
  simplify(opts) {
207
212
  return new IntervalNode(this.a.simplify(opts), this.b.simplify(opts), this.closure, this.opts);
208
213
  }
214
+ derivative(varName) {
215
+ throw new Error("unimp");
216
+ }
217
+ evaluate(vars, opts) {
218
+ return Number.NaN;
219
+ }
220
+ toDetailedEvaluation(vars) {
221
+ return new IntervalNode(this.a.toDetailedEvaluation(vars), this.b.toDetailedEvaluation(vars), this.closure, this.opts);
222
+ }
209
223
  isLeftClosed() {
210
224
  return this.closure === ClosureType.FF || this.closure === ClosureType.FO;
211
225
  }
@@ -1,15 +1,17 @@
1
+ import { AlgebraicNode } from "../algebraicNode.js";
1
2
  import { Node, NodeOptions } from "../node.js";
2
3
  export declare enum SetIds {
3
4
  interval = 0,
4
5
  discrete = 1,
5
6
  union = 2
6
7
  }
7
- export interface SetNode extends Node {
8
+ export interface SetNode extends AlgebraicNode {
8
9
  id: SetIds;
9
10
  isEmpty: boolean;
10
11
  toEquivalentNodes: (opts?: NodeOptions) => SetNode[];
11
12
  simplify: () => SetNode;
12
13
  toClosedForm: () => SetNode;
14
+ toDetailedEvaluation: (vars: Record<string, AlgebraicNode>) => SetNode;
13
15
  }
14
16
  export declare function isSetNode(a: Node): a is SetNode;
15
17
  //# sourceMappingURL=setNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/setNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AAEzD,oBAAY,MAAM;IAChB,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,KAAK,IAAA;CACN;AACD,MAAM,WAAW,OAAQ,SAAQ,IAAI;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,EAAE,CAAC;IACrD,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C"}
1
+ {"version":3,"file":"setNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/setNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AAEzD,oBAAY,MAAM;IAChB,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,KAAK,IAAA;CACN;AACD,MAAM,WAAW,OAAQ,SAAQ,aAAa;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,EAAE,CAAC;IACrD,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,OAAO,CAAC;CACxE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C"}
@@ -1,15 +1,17 @@
1
- import { AlgebraicNode } from "../algebraicNode.js";
1
+ import { AlgebraicNode, EvaluateOptions } from "../algebraicNode.js";
2
2
  import { Node, NodeIds, NodeOptions, NodeType } from "../node.js";
3
3
  import { SetIds, SetNode } from "./setNode.js";
4
4
  export declare function isUnionIntervalNode(a: Node): a is UnionIntervalNode;
5
5
  export declare abstract class UnionIntervalNodeBuilder {
6
6
  static realMinus(a: AlgebraicNode): UnionIntervalNode;
7
7
  }
8
- export declare class UnionIntervalNode implements Node {
8
+ export declare class UnionIntervalNode implements SetNode {
9
9
  type: NodeType;
10
10
  id: SetIds;
11
11
  opts?: NodeOptions | undefined;
12
12
  sets: SetNode[];
13
+ isNumeric: boolean;
14
+ isEmpty: boolean;
13
15
  constructor(sets: SetNode[], opts?: NodeOptions);
14
16
  toAllValidTexs(): string[];
15
17
  toEquivalentNodes(opts?: NodeOptions): UnionIntervalNode[];
@@ -24,5 +26,9 @@ export declare class UnionIntervalNode implements Node {
24
26
  };
25
27
  simplify(): UnionIntervalNode;
26
28
  toClosedForm(): UnionIntervalNode;
29
+ derivative(varName?: string): AlgebraicNode;
30
+ equals(node: AlgebraicNode): boolean;
31
+ evaluate(vars?: Record<string, number>, opts?: EvaluateOptions): number;
32
+ toDetailedEvaluation(vars: Record<string, AlgebraicNode>): UnionIntervalNode;
27
33
  }
28
34
  //# 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,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOlE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAE1D,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;IAMR,YAAY;CAMb"}
1
+ {"version":3,"file":"unionIntervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/unionIntervalNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOlE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAE1D,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,OAAO;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;gBACL,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAS/C,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAcpC,YAAY;IAIZ,QAAQ;IAIR,KAAK;IAGL,aAAa;;;;;;IAMb,QAAQ;IAMR,YAAY;IAMZ,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IAG3C,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe;IAG9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAKzD"}
@@ -21,11 +21,15 @@ export class UnionIntervalNode {
21
21
  id;
22
22
  opts;
23
23
  sets;
24
+ isNumeric;
25
+ isEmpty;
24
26
  constructor(sets, opts) {
25
27
  this.type = NodeType.set;
26
28
  this.id = SetIds.union;
27
29
  this.sets = sets;
28
30
  this.opts = opts;
31
+ this.isNumeric = false;
32
+ this.isEmpty = this.sets.every((s) => s.isEmpty);
29
33
  }
30
34
  toAllValidTexs() {
31
35
  return this.toEquivalentNodes(this.opts).map((node) => node.toTex());
@@ -62,4 +66,16 @@ export class UnionIntervalNode {
62
66
  toClosedForm() {
63
67
  return new UnionIntervalNode(this.sets.map((set) => set.toClosedForm()), this.opts);
64
68
  }
69
+ derivative(varName) {
70
+ throw new Error("unimp");
71
+ }
72
+ equals(node) {
73
+ throw new Error("unimp");
74
+ }
75
+ evaluate(vars, opts) {
76
+ return Number.NaN;
77
+ }
78
+ toDetailedEvaluation(vars) {
79
+ return new UnionIntervalNode(this.sets.map((e) => e.toDetailedEvaluation(vars)));
80
+ }
65
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discreteSetParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/discreteSetParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAY,MAAM,kCAAkC,CAAC;AAI7E,eAAO,MAAM,iBAAiB,QAAS,MAAM,4BAmB5C,CAAC"}
1
+ {"version":3,"file":"discreteSetParser.d.ts","sourceRoot":"","sources":["../../../src/tree/parsers/discreteSetParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAY,MAAM,kCAAkC,CAAC;AAI7E,eAAO,MAAM,iBAAiB,QAAS,MAAM,4BAkB5C,CAAC"}
@@ -14,8 +14,6 @@ export const discreteSetParser = (str) => {
14
14
  return EmptySet;
15
15
  }
16
16
  const elements = formated.split(";").map((e) => parseAlgebraic(e));
17
- if (elements.some((e) => !e))
18
- return false;
19
17
  return new DiscreteSetNode(elements);
20
18
  }
21
19
  catch (err) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "math-exercises",
3
3
  "type": "module",
4
- "version": "3.0.31",
4
+ "version": "3.0.32",
5
5
  "description": "Math exercises generator for middle school and high school",
6
6
  "main": "lib/index.js",
7
7
  "files": [