math-exercises 2.0.7 → 2.0.10

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 (118) hide show
  1. package/lib/exercises/calcul/fractions/index.d.ts +1 -0
  2. package/lib/exercises/calcul/fractions/index.d.ts.map +1 -1
  3. package/lib/exercises/calcul/fractions/index.js +1 -0
  4. package/lib/exercises/calcul/fractions/periodicWritingToFraction.d.ts +9 -0
  5. package/lib/exercises/calcul/fractions/periodicWritingToFraction.d.ts.map +1 -0
  6. package/lib/exercises/calcul/fractions/periodicWritingToFraction.js +80 -0
  7. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.d.ts.map +1 -1
  8. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.js +2 -1
  9. package/lib/exercises/complex/argumentFromAlgebraicComplex.d.ts +6 -0
  10. package/lib/exercises/complex/argumentFromAlgebraicComplex.d.ts.map +1 -1
  11. package/lib/exercises/complex/argumentFromAlgebraicComplex.js +62 -51
  12. package/lib/exercises/complex/index.d.ts +1 -0
  13. package/lib/exercises/complex/index.d.ts.map +1 -1
  14. package/lib/exercises/complex/index.js +1 -0
  15. package/lib/exercises/functions/exponential/expEquation.d.ts +1 -0
  16. package/lib/exercises/functions/exponential/expEquation.d.ts.map +1 -1
  17. package/lib/exercises/functions/logarithm/index.d.ts +2 -0
  18. package/lib/exercises/functions/logarithm/index.d.ts.map +1 -1
  19. package/lib/exercises/functions/logarithm/index.js +2 -1
  20. package/lib/exercises/functions/logarithm/log10PowerSimplifying.d.ts.map +1 -1
  21. package/lib/exercises/functions/logarithm/log10PowerSimplifying.js +3 -2
  22. package/lib/exercises/functions/logarithm/log10Simplifying.d.ts +11 -0
  23. package/lib/exercises/functions/logarithm/log10Simplifying.d.ts.map +1 -0
  24. package/lib/exercises/functions/logarithm/log10Simplifying.js +97 -0
  25. package/lib/exercises/functions/logarithm/logEquation.d.ts.map +1 -1
  26. package/lib/exercises/functions/logarithm/logEquation.js +0 -1
  27. package/lib/exercises/functions/logarithm/logPowerEquation.d.ts +7 -1
  28. package/lib/exercises/functions/logarithm/logPowerEquation.d.ts.map +1 -1
  29. package/lib/exercises/functions/logarithm/logPowerEquation.js +47 -17
  30. package/lib/exercises/trigonometry/associatePoint.d.ts +7 -0
  31. package/lib/exercises/trigonometry/associatePoint.d.ts.map +1 -0
  32. package/lib/exercises/trigonometry/associatePoint.js +64 -0
  33. package/lib/exercises/trigonometry/index.d.ts +1 -0
  34. package/lib/exercises/trigonometry/index.d.ts.map +1 -1
  35. package/lib/exercises/trigonometry/index.js +1 -0
  36. package/lib/exercises/trigonometry/remarkableValues.d.ts +1 -1
  37. package/lib/exercises/trigonometry/remarkableValues.d.ts.map +1 -1
  38. package/lib/exercises/trigonometry/remarkableValues.js +9 -7
  39. package/lib/index.d.ts +22 -3
  40. package/lib/index.d.ts.map +1 -1
  41. package/lib/math/numbers/decimals/decimal.d.ts +3 -0
  42. package/lib/math/numbers/decimals/decimal.d.ts.map +1 -1
  43. package/lib/math/numbers/decimals/decimal.js +8 -0
  44. package/lib/math/numbers/integer/integer.d.ts +1 -1
  45. package/lib/math/numbers/nombre.d.ts +1 -1
  46. package/lib/math/numbers/nombre.js +1 -1
  47. package/lib/math/numbers/reals/extendedRingElement.d.ts +2 -1
  48. package/lib/math/numbers/reals/extendedRingElement.d.ts.map +1 -1
  49. package/lib/math/polynomials/rationalFrac.d.ts +1 -1
  50. package/lib/math/polynomials/trinom.d.ts +2 -2
  51. package/lib/math/trigonometry/remarkableValue.d.ts +3 -10
  52. package/lib/math/trigonometry/remarkableValue.d.ts.map +1 -1
  53. package/lib/math/trigonometry/remarkableValue.js +5 -15
  54. package/lib/math/trigonometry/remarkableValues.d.ts +7 -1
  55. package/lib/math/trigonometry/remarkableValues.d.ts.map +1 -1
  56. package/lib/math/trigonometry/remarkableValues.js +63 -13
  57. package/lib/math/utils/arithmetic/gcd.js +1 -1
  58. package/lib/server.js +2 -7
  59. package/lib/tree/nodes/algebraicNode.d.ts +3 -0
  60. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  61. package/lib/tree/nodes/functions/absNode.d.ts +3 -1
  62. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  63. package/lib/tree/nodes/functions/absNode.js +5 -1
  64. package/lib/tree/nodes/functions/cosNode.d.ts +3 -1
  65. package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
  66. package/lib/tree/nodes/functions/cosNode.js +21 -0
  67. package/lib/tree/nodes/functions/expNode.d.ts +3 -1
  68. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  69. package/lib/tree/nodes/functions/expNode.js +4 -0
  70. package/lib/tree/nodes/functions/log10Node.d.ts +3 -1
  71. package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
  72. package/lib/tree/nodes/functions/log10Node.js +28 -0
  73. package/lib/tree/nodes/functions/logNode.d.ts +3 -1
  74. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  75. package/lib/tree/nodes/functions/logNode.js +32 -0
  76. package/lib/tree/nodes/functions/oppositeNode.d.ts +3 -0
  77. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  78. package/lib/tree/nodes/functions/oppositeNode.js +7 -0
  79. package/lib/tree/nodes/functions/sinNode.d.ts +3 -1
  80. package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
  81. package/lib/tree/nodes/functions/sinNode.js +21 -0
  82. package/lib/tree/nodes/functions/sqrtNode.d.ts +3 -0
  83. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  84. package/lib/tree/nodes/functions/sqrtNode.js +41 -0
  85. package/lib/tree/nodes/geometry/lengthNode.d.ts +5 -1
  86. package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
  87. package/lib/tree/nodes/geometry/lengthNode.js +12 -1
  88. package/lib/tree/nodes/node.d.ts +1 -0
  89. package/lib/tree/nodes/node.d.ts.map +1 -1
  90. package/lib/tree/nodes/node.js +14 -1
  91. package/lib/tree/nodes/numbers/constantNode.d.ts +3 -0
  92. package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
  93. package/lib/tree/nodes/numbers/constantNode.js +7 -0
  94. package/lib/tree/nodes/numbers/numberNode.d.ts +3 -0
  95. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  96. package/lib/tree/nodes/numbers/numberNode.js +7 -0
  97. package/lib/tree/nodes/operators/addNode.d.ts +3 -0
  98. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  99. package/lib/tree/nodes/operators/addNode.js +173 -0
  100. package/lib/tree/nodes/operators/divideNode.d.ts +3 -0
  101. package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
  102. package/lib/tree/nodes/operators/divideNode.js +12 -0
  103. package/lib/tree/nodes/operators/fractionNode.d.ts +3 -0
  104. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  105. package/lib/tree/nodes/operators/fractionNode.js +84 -0
  106. package/lib/tree/nodes/operators/multiplyNode.d.ts +5 -0
  107. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  108. package/lib/tree/nodes/operators/multiplyNode.js +126 -10
  109. package/lib/tree/nodes/operators/powerNode.d.ts +3 -0
  110. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  111. package/lib/tree/nodes/operators/powerNode.js +46 -0
  112. package/lib/tree/nodes/operators/substractNode.d.ts +3 -0
  113. package/lib/tree/nodes/operators/substractNode.d.ts.map +1 -1
  114. package/lib/tree/nodes/operators/substractNode.js +12 -0
  115. package/lib/tree/nodes/variables/variableNode.d.ts +3 -0
  116. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  117. package/lib/tree/nodes/variables/variableNode.js +10 -0
  118. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.associatePoint = void 0;
4
+ const exercise_1 = require("../../exercises/exercise");
5
+ const getDistinctQuestions_1 = require("../../exercises/utils/getDistinctQuestions");
6
+ const remarkableValue_1 = require("../../math/trigonometry/remarkableValue");
7
+ const random_1 = require("../../utils/random");
8
+ const points = [
9
+ "I",
10
+ "A",
11
+ "B",
12
+ "C",
13
+ "J",
14
+ "D",
15
+ "E",
16
+ "F",
17
+ "G",
18
+ "H",
19
+ "K",
20
+ "L",
21
+ "M",
22
+ "N",
23
+ "P",
24
+ "Q",
25
+ ];
26
+ const getAssociatePointQuestion = () => {
27
+ const remarkableValue = remarkableValue_1.RemarkableValueConstructor.simplifiable();
28
+ const answer = remarkableValue.point;
29
+ const question = {
30
+ answer,
31
+ instruction: `À quel point du cercle trigonométrique ci-dessous le réel $${remarkableValue.angle.toTex()}$ est-il associé ?
32
+ ![](https://heureuxhasarddocsbucket.s3.eu-west-3.amazonaws.com/mathliveV2/activities/quizzes/generator/piCircle.png)
33
+ `,
34
+ keys: points,
35
+ answerFormat: "tex",
36
+ identifiers: { angleValue: remarkableValue.mainAngle.evaluate({}) },
37
+ };
38
+ return question;
39
+ };
40
+ const getPropositions = (n, { answer, angleValue }) => {
41
+ const propositions = [];
42
+ (0, exercise_1.addValidProp)(propositions, answer);
43
+ while (propositions.length < n) {
44
+ const rand = (0, random_1.random)(points);
45
+ (0, exercise_1.tryToAddWrongProp)(propositions, rand);
46
+ }
47
+ return (0, exercise_1.shuffleProps)(propositions, n);
48
+ };
49
+ const isAnswerValid = (ans, { answer }) => {
50
+ return answer === ans;
51
+ };
52
+ exports.associatePoint = {
53
+ id: "associatePoint",
54
+ connector: "=",
55
+ label: "Associer un réel à un point du cercle trigonométrique",
56
+ levels: ["1reSpé", "TermSpé"],
57
+ isSingleStep: true,
58
+ sections: ["Trigonométrie"],
59
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getAssociatePointQuestion, nb),
60
+ qcmTimer: 60,
61
+ freeTimer: 60,
62
+ getPropositions,
63
+ isAnswerValid,
64
+ };
@@ -3,4 +3,5 @@ export * from "./remarkableValues";
3
3
  export * from "./trigonometry";
4
4
  export * from "./trigonometryAngleCalcul";
5
5
  export * from "./trigonometrySideCalcul";
6
+ export * from "./associatePoint";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exercises/trigonometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exercises/trigonometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
@@ -19,3 +19,4 @@ __exportStar(require("./remarkableValues"), exports);
19
19
  __exportStar(require("./trigonometry"), exports);
20
20
  __exportStar(require("./trigonometryAngleCalcul"), exports);
21
21
  __exportStar(require("./trigonometrySideCalcul"), exports);
22
+ __exportStar(require("./associatePoint"), exports);
@@ -1,6 +1,6 @@
1
1
  import { MathExercise } from "../exercise";
2
2
  type Identifiers = {
3
- valueIndex: number;
3
+ mainValue: number;
4
4
  isCos: boolean;
5
5
  };
6
6
  export declare const remarkableValuesExercise: MathExercise<Identifiers>;
@@ -1 +1 @@
1
- {"version":3,"file":"remarkableValues.d.ts","sourceRoot":"","sources":["../../../src/exercises/trigonometry/remarkableValues.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EAQb,MAAM,aAAa,CAAC;AAerB,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAwCF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,WAAW,CAY9D,CAAC"}
1
+ {"version":3,"file":"remarkableValues.d.ts","sourceRoot":"","sources":["../../../src/exercises/trigonometry/remarkableValues.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,YAAY,EAQb,MAAM,aAAa,CAAC;AAerB,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAyCF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,WAAW,CAY9D,CAAC"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.remarkableValuesExercise = void 0;
4
4
  const remarkableValue_1 = require("../../math/trigonometry/remarkableValue");
5
5
  const remarkableValues_1 = require("../../math/trigonometry/remarkableValues");
6
+ const cosNode_1 = require("../../tree/nodes/functions/cosNode");
7
+ const sinNode_1 = require("../../tree/nodes/functions/sinNode");
6
8
  const coinFlip_1 = require("../../utils/coinFlip");
7
9
  const random_1 = require("../../utils/random");
8
10
  const shuffle_1 = require("../../utils/shuffle");
@@ -22,21 +24,21 @@ const values = [
22
24
  const getRemarkableValues = () => {
23
25
  const isCos = (0, coinFlip_1.coinFlip)();
24
26
  const remarkableValue = remarkableValue_1.RemarkableValueConstructor.simplifiable();
25
- const valueIndex = remarkableValue.index;
27
+ const mainValue = remarkableValue.mainAngle.evaluate({});
28
+ // const valueIndex = remarkableValue.index;
26
29
  const answer = isCos
27
30
  ? remarkableValue.cos.toTex()
28
31
  : remarkableValue.sin.toTex();
29
- (0, shuffle_1.shuffle)(values);
30
32
  const statement = isCos
31
- ? `\\cos\\left(${remarkableValue.angle.toTex()}\\right)`
32
- : `\\sin\\left(${remarkableValue.angle.toTex()}\\right)`;
33
+ ? new cosNode_1.CosNode(remarkableValue.angle).toTex()
34
+ : new sinNode_1.SinNode(remarkableValue.angle).toTex();
33
35
  const question = {
34
36
  instruction: `Donner la valeur exacte de : $${statement}$`,
35
37
  startStatement: statement,
36
38
  answer: answer,
37
39
  keys: ["pi", "cos", "sin"],
38
40
  answerFormat: "tex",
39
- identifiers: { isCos, valueIndex },
41
+ identifiers: { isCos, mainValue },
40
42
  };
41
43
  return question;
42
44
  };
@@ -49,8 +51,8 @@ const getPropositions = (n, { answer }) => {
49
51
  }
50
52
  return (0, shuffle_1.shuffle)(propositions);
51
53
  };
52
- const isAnswerValid = (ans, { valueIndex, isCos }) => {
53
- const remarkableValue = remarkableValues_1.remarkableTrigoValues[valueIndex];
54
+ const isAnswerValid = (ans, { mainValue, isCos }) => {
55
+ const remarkableValue = remarkableValues_1.remarkableTrigoValues.find((point) => point.angle.evaluate({}) === mainValue);
54
56
  const answer = isCos ? remarkableValue.cos : remarkableValue.sin;
55
57
  const texs = answer.toAllValidTexs({ allowFractionToDecimal: true });
56
58
  return texs.includes(ans);
package/lib/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  declare const mathExercises: (import("./exercises/exercise").MathExercise<{
2
- numbers: number[];
2
+ chosenNumbers: number[];
3
3
  }> | import("./exercises/exercise").MathExercise<{
4
4
  numbers: number[];
5
5
  }> | import("./exercises/exercise").MathExercise<{
6
- chosenNumbers: number[];
6
+ numbers: number[];
7
7
  }> | import("./exercises/exercise").MathExercise<{
8
8
  dividend: number;
9
9
  divisor: number;
@@ -35,6 +35,10 @@ declare const mathExercises: (import("./exercises/exercise").MathExercise<{
35
35
  }> | import("./exercises/exercise").MathExercise<{
36
36
  num: number;
37
37
  denum: number;
38
+ }> | import("./exercises/exercise").MathExercise<{
39
+ num: number;
40
+ denum: number;
41
+ leadingPart: number;
38
42
  }> | import("./exercises/exercise").MathExercise<{
39
43
  numbers: number[];
40
44
  }> | import("./exercises/exercise").MathExercise<{
@@ -208,6 +212,8 @@ declare const mathExercises: (import("./exercises/exercise").MathExercise<{
208
212
  re: number;
209
213
  im: number;
210
214
  isRe: boolean;
215
+ }> | import("./exercises/exercise").MathExercise<{
216
+ arg: number;
211
217
  }> | import("./exercises/exercise").MathExercise<{
212
218
  randomUnitIndex: number;
213
219
  randomUnitInstructionIndex: number;
@@ -417,6 +423,17 @@ declare const mathExercises: (import("./exercises/exercise").MathExercise<{
417
423
  b: number;
418
424
  }> | import("./exercises/exercise").MathExercise<{
419
425
  tenthPower: number;
426
+ }> | import("./exercises/exercise").MathExercise<{
427
+ a: number;
428
+ powered: number;
429
+ c: number;
430
+ k: number;
431
+ isLog10: boolean;
432
+ }> | import("./exercises/exercise").MathExercise<{
433
+ nb: number;
434
+ powers: number[];
435
+ signs: number[];
436
+ isLog10: boolean;
420
437
  }> | import("./exercises/exercise").MathExercise<{
421
438
  coin: boolean;
422
439
  radius: number;
@@ -691,7 +708,7 @@ declare const mathExercises: (import("./exercises/exercise").MathExercise<{
691
708
  valueIndex: number;
692
709
  isCos: boolean;
693
710
  }> | import("./exercises/exercise").MathExercise<{
694
- valueIndex: number;
711
+ mainValue: number;
695
712
  isCos: boolean;
696
713
  }> | import("./exercises/exercise").MathExercise<{
697
714
  sideA: string;
@@ -708,6 +725,8 @@ declare const mathExercises: (import("./exercises/exercise").MathExercise<{
708
725
  randAngle: number;
709
726
  randSide: number;
710
727
  randSideQuestion: number;
728
+ }> | import("./exercises/exercise").MathExercise<{
729
+ angleValue: number;
711
730
  }>)[];
712
731
  export { mathExercises };
713
732
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAA2B,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAA2B,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { NumberNode } from "../../../tree/nodes/numbers/numberNode";
2
2
  import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode";
3
+ import { Integer } from "../integer/integer";
3
4
  import { Nombre, NumberType } from "../nombre";
5
+ import { Rational } from "../rationals/rational";
4
6
  export declare abstract class DecimalConstructor {
5
7
  static randomFracPart(precision: number, leadingZeros?: number): string;
6
8
  static random(min: number, max: number, precision?: number): Decimal;
@@ -24,6 +26,7 @@ export declare class Decimal implements Nombre {
24
26
  multiplyByPowerOfTen(power: number): Decimal;
25
27
  toScientificPart(): NumberNode;
26
28
  toScientificNotation(): NumberNode | MultiplyNode;
29
+ toRational(): Rational | Integer;
27
30
  toTree(): NumberNode;
28
31
  }
29
32
  //# sourceMappingURL=decimal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/decimals/decimal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/C,8BAAsB,kBAAkB;IACtC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM;IAW1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAMpE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAI/D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAMrD;AAED,qBAAa,OAAQ,YAAW,MAAM;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,aAAsB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;gBACR,KAAK,EAAE,MAAM;IASzB;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAsEhC,oBAAoB,CAAC,KAAK,EAAE,MAAM;IA2BlC,gBAAgB;IAgBhB,oBAAoB;IAmBpB,MAAM;CAGP"}
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/decimals/decimal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,8BAAsB,kBAAkB;IACtC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM;IAW1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAMpE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAK/D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAMrD;AAED,qBAAa,OAAQ,YAAW,MAAM;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,aAAsB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;gBACR,KAAK,EAAE,MAAM;IASzB;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAsEhC,oBAAoB,CAAC,KAAK,EAAE,MAAM;IA4BlC,gBAAgB;IAgBhB,oBAAoB;IAmBpB,UAAU;IAMV,MAAM;CAGP"}
@@ -7,6 +7,7 @@ const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
7
7
  const powerNode_1 = require("../../../tree/nodes/operators/powerNode");
8
8
  const integer_1 = require("../integer/integer");
9
9
  const nombre_1 = require("../nombre");
10
+ const rational_1 = require("../rationals/rational");
10
11
  class DecimalConstructor {
11
12
  static randomFracPart(precision, leadingZeros = 0) {
12
13
  let decimals = "";
@@ -27,6 +28,8 @@ class DecimalConstructor {
27
28
  return DecimalConstructor.fromParts(int, decimals);
28
29
  }
29
30
  static fromParts(intPart, decimalPart) {
31
+ if (decimalPart.length === 0)
32
+ return new Decimal(Number("" + intPart));
30
33
  return new Decimal(Number("" + intPart + "." + decimalPart));
31
34
  }
32
35
  //returns X.YYYY where X € [0, 9] and first Y is not zero if X is zero
@@ -127,6 +130,8 @@ class Decimal {
127
130
  return DecimalConstructor.fromParts(newIntPart, newFracPart);
128
131
  }
129
132
  multiplyByPowerOfTen(power) {
133
+ if (power === 0)
134
+ return this;
130
135
  let newIntPart = "", newFracPart = "";
131
136
  if (power > -1) {
132
137
  newIntPart = this.intPart + "";
@@ -180,6 +185,9 @@ class Decimal {
180
185
  return new multiplyNode_1.MultiplyNode(decNode, new numberNode_1.NumberNode(10));
181
186
  return new multiplyNode_1.MultiplyNode(decNode, new powerNode_1.PowerNode(new numberNode_1.NumberNode(10), new numberNode_1.NumberNode(power)));
182
187
  }
188
+ toRational() {
189
+ return new rational_1.Rational(this.multiplyByPowerOfTen(this.precision).value, 10 ** this.precision).simplify();
190
+ }
183
191
  toTree() {
184
192
  return new numberNode_1.NumberNode(this.value);
185
193
  }
@@ -16,6 +16,6 @@ export declare class Integer implements Nombre {
16
16
  divide(nb: Nombre): Nombre;
17
17
  multiply(nb: Nombre): Rational | Integer;
18
18
  opposite(): Integer;
19
- add(nb: Nombre): Nombre | Integer;
19
+ add(nb: Nombre): Integer | Nombre;
20
20
  }
21
21
  //# sourceMappingURL=integer.d.ts.map
@@ -14,6 +14,6 @@ export interface Nombre {
14
14
  toTree: (opts?: NodeOptions) => AlgebraicNode;
15
15
  }
16
16
  export declare abstract class NombreConstructor {
17
- static random(): import("./decimals/decimal").Decimal | Integer | import("./rationals/rational").Rational | import("./reals/real").Real;
17
+ static random(): import("./rationals/rational").Rational | Integer | import("./decimals/decimal").Decimal | import("./reals/real").Real;
18
18
  }
19
19
  //# sourceMappingURL=nombre.d.ts.map
@@ -17,7 +17,7 @@ var NumberType;
17
17
  class NombreConstructor {
18
18
  static random() {
19
19
  const type = (0, random_1.random)([
20
- NumberType.Decimal,
20
+ NumberType.Integer,
21
21
  NumberType.Decimal,
22
22
  NumberType.Rational,
23
23
  NumberType.Real,
@@ -1,4 +1,5 @@
1
1
  import { NumberNode } from '../../../tree/nodes/numbers/numberNode';
2
+ import { MultiplyNode } from '../../../tree/nodes/operators/multiplyNode';
2
3
  import { SubstractNode } from '../../../tree/nodes/operators/substractNode';
3
4
  import { Nombre } from '../nombre';
4
5
  /**
@@ -10,6 +11,6 @@ export declare class ExtendedRingElement {
10
11
  b: number;
11
12
  algebraicElement: Nombre;
12
13
  constructor(a: number, b: number, algebraicElement: Nombre);
13
- toTree(): import("../../../tree/nodes/algebraicNode").AlgebraicNode | NumberNode | SubstractNode;
14
+ toTree(): import("../../../tree/nodes/algebraicNode").AlgebraicNode | NumberNode | MultiplyNode | SubstractNode;
14
15
  }
15
16
  //# sourceMappingURL=extendedRingElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extendedRingElement.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/reals/extendedRingElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;GAGG;AACH,qBAAa,mBAAmB;IAM9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,gBAAgB,EAAE,MAAM,CAAC;gBACb,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAM1D,MAAM;CAeP"}
1
+ {"version":3,"file":"extendedRingElement.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/reals/extendedRingElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;GAGG;AACH,qBAAa,mBAAmB;IAM9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,gBAAgB,EAAE,MAAM,CAAC;gBACb,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAM1D,MAAM;CAeP"}
@@ -7,6 +7,6 @@ export declare class RationalFrac {
7
7
  denum: Polynomial;
8
8
  constructor(num: Polynomial, denum: Polynomial);
9
9
  toTree(): FractionNode;
10
- simplify(): Integer | Rational | RationalFrac;
10
+ simplify(): Rational | Integer | RationalFrac;
11
11
  }
12
12
  //# sourceMappingURL=rationalFrac.d.ts.map
@@ -27,8 +27,8 @@ export declare class Trinom extends Polynomial {
27
27
  getAlphaNode(): NumberNode | FractionNode | OppositeNode;
28
28
  getBeta(): number;
29
29
  getBetaNode(): NumberNode | FractionNode | OppositeNode;
30
- getFactorizedForm(): AlgebraicNode;
31
- getCanonicalForm(): AddNode | MultiplyNode;
30
+ getFactorizedForm(): AlgebraicNode | MultiplyNode;
31
+ getCanonicalForm(): MultiplyNode | AddNode;
32
32
  getSommet(): Point;
33
33
  }
34
34
  //# sourceMappingURL=trinom.d.ts.map
@@ -1,16 +1,9 @@
1
- import { Node } from "../../tree/nodes/node";
2
- import { Integer } from "../numbers/integer/integer";
3
- import { Rational } from "../numbers/rationals/rational";
4
- export interface RemarkableValue {
5
- angleValue: Integer | Rational;
6
- angle: Node;
7
- cos: Node;
8
- sin: Node;
9
- }
1
+ import { AlgebraicNode } from "../../tree/nodes/algebraicNode";
2
+ import { RemarkableValue } from "./remarkableValues";
10
3
  export declare abstract class RemarkableValueConstructor {
11
4
  static mainInterval: () => RemarkableValue;
12
5
  static simplifiable: () => RemarkableValue & {
13
- index: number;
6
+ mainAngle: AlgebraicNode;
14
7
  };
15
8
  }
16
9
  //# sourceMappingURL=remarkableValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remarkableValue.d.ts","sourceRoot":"","sources":["../../../src/math/trigonometry/remarkableValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAM7C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAKzD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACX;AAED,8BAAsB,0BAA0B;IAC9C,MAAM,CAAC,YAAY,QAAO,eAAe,CAIvC;IAEF,MAAM,CAAC,YAAY;eAAkC,MAAM;MAwBzD;CACH"}
1
+ {"version":3,"file":"remarkableValue.d.ts","sourceRoot":"","sources":["../../../src/math/trigonometry/remarkableValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAa/D,OAAO,EAAE,eAAe,EAAyB,MAAM,oBAAoB,CAAC;AAE5E,8BAAsB,0BAA0B;IAC9C,MAAM,CAAC,YAAY,QAAO,eAAe,CAGvC;IACF,MAAM,CAAC,YAAY,QAAO,eAAe,GAAG;QAC1C,SAAS,EAAE,aAAa,CAAC;KAC1B,CAeC;CACH"}
@@ -3,12 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RemarkableValueConstructor = void 0;
4
4
  const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
5
5
  const piNode_1 = require("../../tree/nodes/numbers/piNode");
6
- const fractionNode_1 = require("../../tree/nodes/operators/fractionNode");
6
+ const addNode_1 = require("../../tree/nodes/operators/addNode");
7
7
  const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
8
8
  const random_1 = require("../../utils/random");
9
- const integer_1 = require("../numbers/integer/integer");
10
- const nombre_1 = require("../numbers/nombre");
11
- const rational_1 = require("../numbers/rationals/rational");
12
9
  const randint_1 = require("../utils/random/randint");
13
10
  const remarkableValues_1 = require("./remarkableValues");
14
11
  class RemarkableValueConstructor {
@@ -17,24 +14,17 @@ exports.RemarkableValueConstructor = RemarkableValueConstructor;
17
14
  RemarkableValueConstructor.mainInterval = () => {
18
15
  const randValue = (0, random_1.random)(remarkableValues_1.remarkableTrigoValues);
19
16
  return randValue;
20
- // return new RemarkableValue(randValue.angle, randValue.cos, randValue.sin);
21
17
  };
22
18
  RemarkableValueConstructor.simplifiable = () => {
23
19
  const index = (0, randint_1.randint)(0, remarkableValues_1.remarkableTrigoValues.length);
24
20
  const randValue = remarkableValues_1.remarkableTrigoValues[index];
25
- const isInt = randValue.angleValue.type === nombre_1.NumberType.Integer;
26
21
  const toAdd = (0, randint_1.randint)(-3, 4) * 2;
27
- const newRadian = isInt
28
- ? new integer_1.Integer(randValue.angleValue.value + toAdd)
29
- : new rational_1.Rational(randValue.angleValue.num, randValue.angleValue.denum).add(new integer_1.Integer(toAdd));
30
- const newAngle = isInt
31
- ? new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(newRadian.value), piNode_1.PiNode)
32
- : new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(newRadian.num), piNode_1.PiNode), new numberNode_1.NumberNode(newRadian.denum));
22
+ const newRadian = new addNode_1.AddNode(randValue.angle, new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(toAdd), piNode_1.PiNode)).simplify();
33
23
  return {
34
- angleValue: newRadian,
35
- angle: newAngle,
24
+ mainAngle: randValue.angle,
25
+ angle: newRadian,
36
26
  cos: randValue.cos,
37
27
  sin: randValue.sin,
38
- index,
28
+ point: randValue.point,
39
29
  };
40
30
  };
@@ -1,3 +1,9 @@
1
- import { RemarkableValue } from "./remarkableValue";
1
+ import { AlgebraicNode } from "../../tree/nodes/algebraicNode";
2
+ export interface RemarkableValue {
3
+ angle: AlgebraicNode;
4
+ cos: AlgebraicNode;
5
+ sin: AlgebraicNode;
6
+ point: string;
7
+ }
2
8
  export declare const remarkableTrigoValues: RemarkableValue[];
3
9
  //# sourceMappingURL=remarkableValues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remarkableValues.d.ts","sourceRoot":"","sources":["../../../src/math/trigonometry/remarkableValues.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,EAAE,eAAe,EA+ElD,CAAC"}
1
+ {"version":3,"file":"remarkableValues.d.ts","sourceRoot":"","sources":["../../../src/math/trigonometry/remarkableValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAW/D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,eAAO,MAAM,qBAAqB,EAAE,eAAe,EA2KlD,CAAC"}
@@ -7,61 +7,111 @@ const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
7
7
  const piNode_1 = require("../../tree/nodes/numbers/piNode");
8
8
  const fractionNode_1 = require("../../tree/nodes/operators/fractionNode");
9
9
  const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
10
- const integer_1 = require("../numbers/integer/integer");
11
- const rational_1 = require("../numbers/rationals/rational");
12
10
  exports.remarkableTrigoValues = [
13
11
  {
14
- angleValue: new integer_1.Integer(0),
12
+ // angleValue: 0,
15
13
  angle: new numberNode_1.NumberNode(0),
16
14
  cos: new numberNode_1.NumberNode(1),
17
15
  sin: new numberNode_1.NumberNode(0),
16
+ point: "I",
18
17
  },
19
18
  {
20
- angleValue: new rational_1.Rational(1, 6),
19
+ // angleValue: Math.PI / 6,
21
20
  angle: new fractionNode_1.FractionNode(piNode_1.PiNode, new numberNode_1.NumberNode(6)),
22
21
  cos: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2)),
23
22
  sin: new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2)),
23
+ point: "A",
24
24
  },
25
25
  {
26
- angleValue: new rational_1.Rational(1, 4),
26
+ // angleValue: Math.PI / 4,
27
27
  angle: new fractionNode_1.FractionNode(piNode_1.PiNode, new numberNode_1.NumberNode(4)),
28
28
  cos: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2)),
29
29
  sin: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2)),
30
+ point: "B",
30
31
  },
31
32
  {
32
- angleValue: new rational_1.Rational(1, 3),
33
+ // angleValue: Math.PI / 3,
33
34
  angle: new fractionNode_1.FractionNode(piNode_1.PiNode, new numberNode_1.NumberNode(3)),
34
35
  cos: new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2)),
35
36
  sin: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2)),
37
+ point: "C",
36
38
  },
37
39
  {
38
- angleValue: new rational_1.Rational(1, 2),
40
+ // angleValue: Math.PI / 2,
39
41
  angle: new fractionNode_1.FractionNode(piNode_1.PiNode, new numberNode_1.NumberNode(2)),
40
42
  cos: new numberNode_1.NumberNode(0),
41
43
  sin: new numberNode_1.NumberNode(1),
44
+ point: "J",
42
45
  },
43
46
  {
44
- angleValue: new rational_1.Rational(2, 3),
47
+ // angleValue: (Math.PI * 2) / 3,
45
48
  angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(2), piNode_1.PiNode), new numberNode_1.NumberNode(3)),
46
49
  cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2))),
47
50
  sin: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2)),
51
+ point: "D",
48
52
  },
49
53
  {
50
- angleValue: new rational_1.Rational(3, 4),
54
+ // angleValue: (Math.PI * 3) / 4,
51
55
  angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(3), piNode_1.PiNode), new numberNode_1.NumberNode(4)),
52
56
  cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2))),
53
57
  sin: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2)),
58
+ point: "E",
54
59
  },
55
60
  {
56
- angleValue: new rational_1.Rational(5, 6),
61
+ // angleValue: (Math.PI * 5) / 6,
57
62
  angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(5), piNode_1.PiNode), new numberNode_1.NumberNode(6)),
58
- cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2))),
59
- sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2))),
63
+ cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2))),
64
+ sin: new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2)),
65
+ point: "F",
60
66
  },
61
67
  {
62
- angleValue: new integer_1.Integer(1),
68
+ // angleValue: Math.PI,
69
+ //
63
70
  angle: piNode_1.PiNode,
64
71
  cos: new numberNode_1.NumberNode(-1),
65
72
  sin: new numberNode_1.NumberNode(0),
73
+ point: "G",
74
+ },
75
+ {
76
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(7), piNode_1.PiNode), new numberNode_1.NumberNode(6)),
77
+ cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2))),
78
+ sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2))),
79
+ point: "H",
80
+ },
81
+ {
82
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(5), piNode_1.PiNode), new numberNode_1.NumberNode(4)),
83
+ cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2))),
84
+ sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2))),
85
+ point: "K",
86
+ },
87
+ {
88
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(7), piNode_1.PiNode), new numberNode_1.NumberNode(3)),
89
+ cos: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2))),
90
+ sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2))),
91
+ point: "L",
92
+ },
93
+ {
94
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(3), piNode_1.PiNode), new numberNode_1.NumberNode(2)),
95
+ cos: new numberNode_1.NumberNode(0),
96
+ sin: new numberNode_1.NumberNode(-1),
97
+ point: "M",
98
+ },
99
+ {
100
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(5), piNode_1.PiNode), new numberNode_1.NumberNode(3)),
101
+ cos: new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2)),
102
+ sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2))),
103
+ point: "N",
104
+ },
105
+ {
106
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(7), piNode_1.PiNode), new numberNode_1.NumberNode(4)),
107
+ cos: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2)),
108
+ sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(2)), new numberNode_1.NumberNode(2))),
109
+ point: "P",
110
+ },
111
+ {
112
+ angle: new fractionNode_1.FractionNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(11), piNode_1.PiNode), new numberNode_1.NumberNode(6)),
113
+ cos: new fractionNode_1.FractionNode(new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(3)), new numberNode_1.NumberNode(2)),
114
+ sin: new oppositeNode_1.OppositeNode(new fractionNode_1.FractionNode(new numberNode_1.NumberNode(1), new numberNode_1.NumberNode(2))),
115
+ point: "Q",
66
116
  },
67
117
  ];
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gcd = void 0;
4
4
  function pgcd(a, b) {
5
- return b ? gcd(b, a % b) : a;
5
+ return b ? pgcd(b, a % b) : Math.abs(a);
6
6
  }
7
7
  function gcd(...args) {
8
8
  if (args.length === 2)
package/lib/server.js CHANGED
@@ -35,22 +35,17 @@ const express_1 = __importDefault(require("express"));
35
35
  const body_parser_1 = __importDefault(require("body-parser"));
36
36
  const dotenv_1 = __importDefault(require("dotenv"));
37
37
  const cors_1 = __importDefault(require("cors"));
38
- const multiplyNode_1 = require("./tree/nodes/operators/multiplyNode");
39
- const numberNode_1 = require("./tree/nodes/numbers/numberNode");
40
- const addNode_1 = require("./tree/nodes/operators/addNode");
41
- const powerNode_1 = require("./tree/nodes/operators/powerNode");
42
38
  const jsonParser = body_parser_1.default.json();
43
39
  const allExercises = [...exercises];
44
40
  const runServer = () => {
45
41
  dotenv_1.default.config();
46
42
  const app = (0, express_1.default)();
47
43
  app.use((0, cors_1.default)());
48
- console.log(exercises.length);
44
+ console.log(exercises.length + " exercices");
45
+ console.log(exercises.filter((exo) => exo.isSingleStep).length);
49
46
  app.get("/", (req, res) => {
50
47
  res.json(allExercises);
51
48
  });
52
- const tree = new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(3), new addNode_1.AddNode(new powerNode_1.SquareNode(new numberNode_1.NumberNode(4)), new powerNode_1.PowerNode(new numberNode_1.NumberNode(2), new numberNode_1.NumberNode(3))));
53
- console.log(tree.evaluate({}));
54
49
  app.get("/exo", (req, res) => {
55
50
  const exoId = req.query.exoId;
56
51
  const exoIndex = allExercises.findIndex((exo) => exo.id == exoId);
@@ -2,5 +2,8 @@ import { Node, NodeOptions } from "./node";
2
2
  export interface AlgebraicNode extends Node {
3
3
  evaluate: (vars: Record<string, number>) => number;
4
4
  toEquivalentNodes: (opts?: NodeOptions) => AlgebraicNode[];
5
+ simplify: () => AlgebraicNode;
6
+ equals: (node: AlgebraicNode) => boolean;
7
+ isNumeric: boolean;
5
8
  }
6
9
  //# sourceMappingURL=algebraicNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,WAAW,aAAc,SAAQ,IAAI;IAEzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACnD,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;CAC5D"}
1
+ {"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,WAAW,aAAc,SAAQ,IAAI;IAEzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACnD,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;IAC3D,QAAQ,EAAE,MAAM,aAAa,CAAC;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB"}