math-exercises 2.2.67 → 2.2.68

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 (100) hide show
  1. package/lib/exercises/math/calcul/fractions/fractionsOperations.d.ts +8 -0
  2. package/lib/exercises/math/calcul/fractions/fractionsOperations.d.ts.map +1 -0
  3. package/lib/exercises/math/calcul/fractions/fractionsOperations.js +85 -0
  4. package/lib/exercises/math/calcul/fractions/index.d.ts +1 -0
  5. package/lib/exercises/math/calcul/fractions/index.d.ts.map +1 -1
  6. package/lib/exercises/math/calcul/fractions/index.js +1 -0
  7. package/lib/exercises/math/derivation/derivative/rootFunctionDerivative.d.ts.map +1 -1
  8. package/lib/exercises/math/derivation/derivative/rootFunctionDerivative.js +11 -1
  9. package/lib/exercises/math/functions/affines/leadingCoefficient.d.ts.map +1 -1
  10. package/lib/exercises/math/functions/affines/leadingCoefficient.js +9 -16
  11. package/lib/exercises/math/geometry/cartesian/placeAbscissOnLine.js +1 -1
  12. package/lib/index.d.ts +2 -0
  13. package/lib/index.d.ts.map +1 -1
  14. package/lib/playground.d.ts.map +1 -1
  15. package/lib/playground.js +1 -4
  16. package/lib/tree/nodes/algebraicNode.d.ts +1 -0
  17. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  18. package/lib/tree/nodes/functions/absNode.d.ts +1 -0
  19. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  20. package/lib/tree/nodes/functions/absNode.js +7 -0
  21. package/lib/tree/nodes/functions/arcSinNode.d.ts +1 -0
  22. package/lib/tree/nodes/functions/arcSinNode.d.ts.map +1 -1
  23. package/lib/tree/nodes/functions/arcSinNode.js +3 -0
  24. package/lib/tree/nodes/functions/arccosNode.d.ts +1 -0
  25. package/lib/tree/nodes/functions/arccosNode.d.ts.map +1 -1
  26. package/lib/tree/nodes/functions/arccosNode.js +3 -0
  27. package/lib/tree/nodes/functions/arctanNode.d.ts +1 -0
  28. package/lib/tree/nodes/functions/arctanNode.d.ts.map +1 -1
  29. package/lib/tree/nodes/functions/arctanNode.js +3 -0
  30. package/lib/tree/nodes/functions/cosNode.d.ts +2 -0
  31. package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
  32. package/lib/tree/nodes/functions/cosNode.js +9 -1
  33. package/lib/tree/nodes/functions/expNode.d.ts +2 -0
  34. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  35. package/lib/tree/nodes/functions/expNode.js +10 -1
  36. package/lib/tree/nodes/functions/log10Node.d.ts +1 -0
  37. package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
  38. package/lib/tree/nodes/functions/log10Node.js +3 -0
  39. package/lib/tree/nodes/functions/logNode.d.ts +1 -0
  40. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  41. package/lib/tree/nodes/functions/logNode.js +3 -0
  42. package/lib/tree/nodes/functions/oppositeNode.d.ts +1 -0
  43. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  44. package/lib/tree/nodes/functions/oppositeNode.js +3 -0
  45. package/lib/tree/nodes/functions/sinNode.d.ts +2 -0
  46. package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
  47. package/lib/tree/nodes/functions/sinNode.js +11 -1
  48. package/lib/tree/nodes/functions/sqrtNode.d.ts +1 -0
  49. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  50. package/lib/tree/nodes/functions/sqrtNode.js +3 -0
  51. package/lib/tree/nodes/functions/tanNode.d.ts +2 -0
  52. package/lib/tree/nodes/functions/tanNode.d.ts.map +1 -1
  53. package/lib/tree/nodes/functions/tanNode.js +9 -1
  54. package/lib/tree/nodes/geometry/degree.d.ts +1 -0
  55. package/lib/tree/nodes/geometry/degree.d.ts.map +1 -1
  56. package/lib/tree/nodes/geometry/degree.js +3 -0
  57. package/lib/tree/nodes/geometry/lengthNode.d.ts +1 -0
  58. package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
  59. package/lib/tree/nodes/geometry/lengthNode.js +3 -0
  60. package/lib/tree/nodes/node.d.ts +1 -0
  61. package/lib/tree/nodes/node.d.ts.map +1 -1
  62. package/lib/tree/nodes/numbers/constantNode.d.ts +2 -0
  63. package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
  64. package/lib/tree/nodes/numbers/constantNode.js +10 -1
  65. package/lib/tree/nodes/numbers/infiniteNode.d.ts +0 -2
  66. package/lib/tree/nodes/numbers/infiniteNode.d.ts.map +1 -1
  67. package/lib/tree/nodes/numbers/infiniteNode.js +1 -6
  68. package/lib/tree/nodes/numbers/numberNode.d.ts +1 -0
  69. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  70. package/lib/tree/nodes/numbers/numberNode.js +3 -0
  71. package/lib/tree/nodes/operators/addNode.d.ts +1 -0
  72. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  73. package/lib/tree/nodes/operators/addNode.js +3 -0
  74. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts +1 -0
  75. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts.map +1 -1
  76. package/lib/tree/nodes/operators/binomialCoefficientNode.js +3 -0
  77. package/lib/tree/nodes/operators/divideNode.d.ts +4 -1
  78. package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
  79. package/lib/tree/nodes/operators/divideNode.js +17 -2
  80. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -0
  81. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  82. package/lib/tree/nodes/operators/fractionNode.js +3 -0
  83. package/lib/tree/nodes/operators/limitNode.d.ts +1 -0
  84. package/lib/tree/nodes/operators/limitNode.d.ts.map +1 -1
  85. package/lib/tree/nodes/operators/limitNode.js +3 -0
  86. package/lib/tree/nodes/operators/multiplyNode.d.ts +1 -0
  87. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  88. package/lib/tree/nodes/operators/multiplyNode.js +10 -2
  89. package/lib/tree/nodes/operators/powerNode.d.ts +1 -0
  90. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  91. package/lib/tree/nodes/operators/powerNode.js +6 -0
  92. package/lib/tree/nodes/operators/substractNode.d.ts +4 -2
  93. package/lib/tree/nodes/operators/substractNode.d.ts.map +1 -1
  94. package/lib/tree/nodes/operators/substractNode.js +9 -2
  95. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  96. package/lib/tree/nodes/sets/intervalNode.js +8 -8
  97. package/lib/tree/nodes/variables/variableNode.d.ts +1 -0
  98. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  99. package/lib/tree/nodes/variables/variableNode.js +7 -0
  100. package/package.json +1 -1
@@ -20,6 +20,10 @@ const substract = (a, b) => {
20
20
  exports.substract = substract;
21
21
  class SubstractNode {
22
22
  constructor(leftChild, rightChild, opts) {
23
+ this.shuffle = () => {
24
+ if ((0, coinFlip_1.coinFlip)())
25
+ [this.leftChild, this.rightChild] = [this.rightChild, this.leftChild];
26
+ };
23
27
  this.id = operatorNode_1.OperatorIds.substract;
24
28
  this.leftChild = leftChild;
25
29
  this.rightChild = rightChild;
@@ -33,8 +37,8 @@ class SubstractNode {
33
37
  toIdentifiers() {
34
38
  return {
35
39
  id: node_1.NodeIds.substract,
36
- left: this.leftChild.toIdentifiers(),
37
- right: this.rightChild.toIdentifiers(),
40
+ leftChild: this.leftChild.toIdentifiers(),
41
+ rightChild: this.rightChild.toIdentifiers(),
38
42
  };
39
43
  }
40
44
  toEquivalentNodes() {
@@ -88,5 +92,8 @@ class SubstractNode {
88
92
  toDetailedEvaluation(vars) {
89
93
  return new SubstractNode(this.leftChild.toDetailedEvaluation(vars), this.rightChild.toDetailedEvaluation(vars));
90
94
  }
95
+ derivative(varName) {
96
+ return (0, exports.substract)(this.leftChild.derivative(varName), this.rightChild.derivative(varName));
97
+ }
91
98
  }
92
99
  exports.SubstractNode = SubstractNode;
@@ -1 +1 @@
1
- {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQrD,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,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,QAAQ;IAIR,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;CAGT"}
1
+ {"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,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,QAAQ;IAIR,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;CAGT"}
@@ -72,12 +72,12 @@ class IntervalNode {
72
72
  return new IntervalNode(this.a, this.b, closure_1.Closure.rightReverse(this.closure));
73
73
  }
74
74
  toRandomDifferentClosure() {
75
- if ((0, infiniteNode_1.isInfiniteNode)(this.a) && (0, infiniteNode_1.isInfiniteNode)(this.b))
75
+ if ((0, constantNode_1.isInfiniteNode)(this.a) && (0, constantNode_1.isInfiniteNode)(this.b))
76
76
  return this;
77
77
  let closure;
78
78
  do {
79
- const left = (0, infiniteNode_1.isInfiniteNode)(this.a) ? "]" : (0, random_1.random)(["[", "]"]);
80
- const right = (0, infiniteNode_1.isInfiniteNode)(this.b)
79
+ const left = (0, constantNode_1.isInfiniteNode)(this.a) ? "]" : (0, random_1.random)(["[", "]"]);
80
+ const right = (0, constantNode_1.isInfiniteNode)(this.b)
81
81
  ? "["
82
82
  : (0, random_1.random)(["[", "]"]);
83
83
  closure = closure_1.Closure.fromBrackets(left, right);
@@ -85,12 +85,12 @@ class IntervalNode {
85
85
  return new IntervalNode(this.a, this.b, closure);
86
86
  }
87
87
  toComplement() {
88
- if ((0, infiniteNode_1.isInfiniteNode)(this.a) && (0, infiniteNode_1.isInfiniteNode)(this.b))
88
+ if ((0, constantNode_1.isInfiniteNode)(this.a) && (0, constantNode_1.isInfiniteNode)(this.b))
89
89
  return this;
90
- if ((0, infiniteNode_1.isInfiniteNode)(this.a)) {
90
+ if ((0, constantNode_1.isInfiniteNode)(this.a)) {
91
91
  return new IntervalNode(this.b, infiniteNode_1.PlusInfinityNode, this.closure === closure_1.ClosureType.OF ? closure_1.ClosureType.FO : closure_1.ClosureType.OO);
92
92
  }
93
- if ((0, infiniteNode_1.isInfiniteNode)(this.b)) {
93
+ if ((0, constantNode_1.isInfiniteNode)(this.b)) {
94
94
  return new IntervalNode(infiniteNode_1.MinusInfinityNode, this.a, this.closure === closure_1.ClosureType.FO ? closure_1.ClosureType.OO : closure_1.ClosureType.OF);
95
95
  }
96
96
  const aClosed = this.closure === closure_1.ClosureType.FO || this.closure === closure_1.ClosureType.FF;
@@ -127,11 +127,11 @@ class IntervalNode {
127
127
  }
128
128
  toText(isPlural, isFeminine) {
129
129
  const conjugaison = isFeminine ? "e" : "" + isPlural ? "s" : "";
130
- return (0, infiniteNode_1.isInfiniteNode)(this.a)
130
+ return (0, constantNode_1.isInfiniteNode)(this.a)
131
131
  ? closure_1.Closure.isRightOpen(this.closure)
132
132
  ? `strictement inférieur${conjugaison} à $${this.b.toTex()}$`
133
133
  : `inférieur${conjugaison} à $${this.b.toTex()}$`
134
- : (0, infiniteNode_1.isInfiniteNode)(this.b)
134
+ : (0, constantNode_1.isInfiniteNode)(this.b)
135
135
  ? closure_1.Closure.isLeftOpen(this.closure)
136
136
  ? `strictement supérieur${conjugaison} à $${this.a.toTex()}$`
137
137
  : `supérieur${conjugaison} à $${this.a.toTex()}$`
@@ -19,5 +19,6 @@ export declare class VariableNode implements AlgebraicNode {
19
19
  simplify(): this;
20
20
  equals(node: AlgebraicNode): boolean;
21
21
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): AlgebraicNode;
22
+ derivative(varName?: string | undefined): AlgebraicNode;
22
23
  }
23
24
  //# 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,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,WAAqB;IACzB,SAAS,EAAE,OAAO,CAAC;gBACP,IAAI,EAAE,MAAM;IAIxB,aAAa;;;;IAMb,KAAK,IAAI,MAAM;IAGf,YAAY,IAAI,MAAM;IAGtB,QAAQ;IAGR,cAAc;IAGd,iBAAiB;IAIjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAStC,QAAQ;IAGR,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAKzD"}
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,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,WAAqB;IACzB,SAAS,EAAE,OAAO,CAAC;gBACP,IAAI,EAAE,MAAM;IAIxB,aAAa;;;;IAMb,KAAK,IAAI,MAAM;IAGf,YAAY,IAAI,MAAM;IAGtB,QAAQ;IAGR,cAAc;IAGd,iBAAiB;IAIjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAStC,QAAQ;IAGR,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAKxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAKxD"}
@@ -53,5 +53,12 @@ class VariableNode {
53
53
  throw Error("Detailed Evaluation variable non handled");
54
54
  return vars[this.name];
55
55
  }
56
+ derivative(varName) {
57
+ const variable = varName ?? "x";
58
+ if (this.name === variable)
59
+ return (1).toTree();
60
+ else
61
+ return (0).toTree();
62
+ }
56
63
  }
57
64
  exports.VariableNode = VariableNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "2.2.67",
3
+ "version": "2.2.68",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [