math-exercises 3.0.168 → 3.0.170

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 (196) hide show
  1. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts +4 -3
  2. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts.map +1 -1
  3. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.js +236 -52
  4. package/lib/exercises/math/derivation/derivativeNumber/expressFAPlusH.d.ts +13 -0
  5. package/lib/exercises/math/derivation/derivativeNumber/expressFAPlusH.d.ts.map +1 -0
  6. package/lib/exercises/math/derivation/derivativeNumber/expressFAPlusH.js +225 -0
  7. package/lib/exercises/math/derivation/derivativeNumber/findAverageRateLimit.d.ts +14 -0
  8. package/lib/exercises/math/derivation/derivativeNumber/findAverageRateLimit.d.ts.map +1 -0
  9. package/lib/exercises/math/derivation/derivativeNumber/findAverageRateLimit.js +162 -0
  10. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts +3 -0
  11. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts.map +1 -1
  12. package/lib/exercises/math/derivation/derivativeNumber/index.js +3 -1
  13. package/lib/exercises/math/derivation/tangent/derivativeNumberReading.d.ts +4 -1
  14. package/lib/exercises/math/derivation/tangent/derivativeNumberReading.d.ts.map +1 -1
  15. package/lib/exercises/math/derivation/tangent/derivativeNumberReading.js +50 -9
  16. package/lib/exercises/math/derivation/variations/signVarTableFromDerivativeGraph.js +1 -1
  17. package/lib/exercises/math/derivation/variations/signVarTableFromGraph.js +1 -1
  18. package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.d.ts +8 -0
  19. package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.d.ts.map +1 -0
  20. package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.js +182 -0
  21. package/lib/exercises/math/functions/trinoms/equation/index.d.ts +1 -0
  22. package/lib/exercises/math/functions/trinoms/equation/index.d.ts.map +1 -1
  23. package/lib/exercises/math/functions/trinoms/equation/index.js +1 -0
  24. package/lib/exercises/math/functions/trinoms/equation/trinomSelectEquationWithoutDeltaNeeded.js +1 -1
  25. package/lib/exercises/math/functions/trinoms/index.d.ts +1 -0
  26. package/lib/exercises/math/functions/trinoms/index.d.ts.map +1 -1
  27. package/lib/exercises/math/functions/trinoms/index.js +1 -0
  28. package/lib/exercises/math/functions/trinoms/problems/index.d.ts +3 -0
  29. package/lib/exercises/math/functions/trinoms/problems/index.d.ts.map +1 -0
  30. package/lib/exercises/math/functions/trinoms/problems/index.js +2 -0
  31. package/lib/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.d.ts +11 -0
  32. package/lib/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.d.ts.map +1 -0
  33. package/lib/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.js +212 -0
  34. package/lib/exercises/math/functions/trinoms/problems/swedishFlag.d.ts +8 -0
  35. package/lib/exercises/math/functions/trinoms/problems/swedishFlag.d.ts.map +1 -0
  36. package/lib/exercises/math/functions/trinoms/problems/swedishFlag.js +174 -0
  37. package/lib/exercises/math/functions/trinoms/summitAndCanonical/findTrinomCanonicalFormFromGraph.js +2 -2
  38. package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitReading.d.ts.map +1 -1
  39. package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitReading.js +22 -1
  40. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts +4 -1
  41. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts.map +1 -1
  42. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.js +45 -20
  43. package/lib/exercises/math/sequences/arithmetic/recognizeReasonFromGraph.d.ts +4 -1
  44. package/lib/exercises/math/sequences/arithmetic/recognizeReasonFromGraph.d.ts.map +1 -1
  45. package/lib/exercises/math/sequences/arithmetic/recognizeReasonFromGraph.js +43 -9
  46. package/lib/exercises/math/sequences/index.d.ts +1 -0
  47. package/lib/exercises/math/sequences/index.d.ts.map +1 -1
  48. package/lib/exercises/math/sequences/index.js +1 -0
  49. package/lib/exercises/math/sequences/variations/expressConsecutiveTermsDifference.d.ts +11 -0
  50. package/lib/exercises/math/sequences/variations/expressConsecutiveTermsDifference.d.ts.map +1 -0
  51. package/lib/exercises/math/sequences/variations/expressConsecutiveTermsDifference.js +160 -0
  52. package/lib/exercises/math/sequences/variations/index.d.ts +2 -0
  53. package/lib/exercises/math/sequences/variations/index.d.ts.map +1 -0
  54. package/lib/exercises/math/sequences/variations/index.js +1 -0
  55. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts.map +1 -1
  56. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.js +0 -1
  57. package/lib/exercises/math/trigonometry/circle/findAssociateAnglePointOnTrigoCircle.d.ts +8 -0
  58. package/lib/exercises/math/trigonometry/circle/findAssociateAnglePointOnTrigoCircle.d.ts.map +1 -0
  59. package/lib/exercises/math/trigonometry/circle/findAssociateAnglePointOnTrigoCircle.js +158 -0
  60. package/lib/exercises/math/trigonometry/circle/index.d.ts +2 -0
  61. package/lib/exercises/math/trigonometry/circle/index.d.ts.map +1 -1
  62. package/lib/exercises/math/trigonometry/circle/index.js +2 -0
  63. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts.map +1 -1
  64. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.js +8 -3
  65. package/lib/exercises/math/trigonometry/circle/placeAssociateAngleOnCircle.d.ts +8 -0
  66. package/lib/exercises/math/trigonometry/circle/placeAssociateAngleOnCircle.d.ts.map +1 -0
  67. package/lib/exercises/math/trigonometry/circle/placeAssociateAngleOnCircle.js +167 -0
  68. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts +2 -0
  69. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts.map +1 -1
  70. package/lib/exercises/utils/geogebra/toolBarConstructor.js +4 -0
  71. package/lib/index.d.ts +52 -4
  72. package/lib/index.d.ts.map +1 -1
  73. package/lib/math/geometry/segment.d.ts +1 -1
  74. package/lib/math/polynomials/trinom.d.ts +1 -1
  75. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  76. package/lib/math/polynomials/trinom.js +2 -2
  77. package/lib/playground.d.ts.map +1 -1
  78. package/lib/playground.js +1 -3
  79. package/lib/tree/nodes/algebraicNode.d.ts +2 -0
  80. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  81. package/lib/tree/nodes/complex/complexNode.d.ts +1 -0
  82. package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
  83. package/lib/tree/nodes/complex/complexNode.js +3 -0
  84. package/lib/tree/nodes/equations/equalNode.d.ts +1 -0
  85. package/lib/tree/nodes/equations/equalNode.d.ts.map +1 -1
  86. package/lib/tree/nodes/equations/equalNode.js +3 -0
  87. package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
  88. package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
  89. package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
  90. package/lib/tree/nodes/equations/multiEqualNode.d.ts +1 -0
  91. package/lib/tree/nodes/equations/multiEqualNode.d.ts.map +1 -1
  92. package/lib/tree/nodes/equations/multiEqualNode.js +3 -0
  93. package/lib/tree/nodes/equations/notEqualNode.d.ts +1 -0
  94. package/lib/tree/nodes/equations/notEqualNode.d.ts.map +1 -1
  95. package/lib/tree/nodes/equations/notEqualNode.js +3 -0
  96. package/lib/tree/nodes/functions/absNode.d.ts +1 -0
  97. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  98. package/lib/tree/nodes/functions/absNode.js +3 -0
  99. package/lib/tree/nodes/functions/arcSinNode.d.ts +1 -0
  100. package/lib/tree/nodes/functions/arcSinNode.d.ts.map +1 -1
  101. package/lib/tree/nodes/functions/arcSinNode.js +3 -0
  102. package/lib/tree/nodes/functions/arccosNode.d.ts +1 -0
  103. package/lib/tree/nodes/functions/arccosNode.d.ts.map +1 -1
  104. package/lib/tree/nodes/functions/arccosNode.js +3 -0
  105. package/lib/tree/nodes/functions/arctanNode.d.ts +1 -0
  106. package/lib/tree/nodes/functions/arctanNode.d.ts.map +1 -1
  107. package/lib/tree/nodes/functions/arctanNode.js +3 -0
  108. package/lib/tree/nodes/functions/cosNode.d.ts +1 -0
  109. package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
  110. package/lib/tree/nodes/functions/cosNode.js +3 -0
  111. package/lib/tree/nodes/functions/expNode.d.ts +1 -0
  112. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  113. package/lib/tree/nodes/functions/expNode.js +3 -0
  114. package/lib/tree/nodes/functions/integralNode.d.ts +1 -0
  115. package/lib/tree/nodes/functions/integralNode.d.ts.map +1 -1
  116. package/lib/tree/nodes/functions/integralNode.js +3 -0
  117. package/lib/tree/nodes/functions/log10Node.d.ts +1 -0
  118. package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
  119. package/lib/tree/nodes/functions/log10Node.js +3 -0
  120. package/lib/tree/nodes/functions/logNode.d.ts +1 -0
  121. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  122. package/lib/tree/nodes/functions/logNode.js +3 -0
  123. package/lib/tree/nodes/functions/oppositeNode.d.ts +1 -0
  124. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  125. package/lib/tree/nodes/functions/oppositeNode.js +6 -0
  126. package/lib/tree/nodes/functions/sinNode.d.ts +1 -0
  127. package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
  128. package/lib/tree/nodes/functions/sinNode.js +3 -0
  129. package/lib/tree/nodes/functions/sqrtNode.d.ts +1 -2
  130. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  131. package/lib/tree/nodes/functions/tanNode.d.ts +1 -0
  132. package/lib/tree/nodes/functions/tanNode.d.ts.map +1 -1
  133. package/lib/tree/nodes/functions/tanNode.js +3 -0
  134. package/lib/tree/nodes/geometry/degree.d.ts +1 -0
  135. package/lib/tree/nodes/geometry/degree.d.ts.map +1 -1
  136. package/lib/tree/nodes/geometry/degree.js +3 -0
  137. package/lib/tree/nodes/geometry/lengthNode.d.ts +1 -0
  138. package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
  139. package/lib/tree/nodes/geometry/lengthNode.js +3 -0
  140. package/lib/tree/nodes/geometry/pointNode.d.ts +1 -0
  141. package/lib/tree/nodes/geometry/pointNode.d.ts.map +1 -1
  142. package/lib/tree/nodes/geometry/pointNode.js +3 -0
  143. package/lib/tree/nodes/geometry/vectorNode.d.ts +1 -0
  144. package/lib/tree/nodes/geometry/vectorNode.d.ts.map +1 -1
  145. package/lib/tree/nodes/geometry/vectorNode.js +3 -0
  146. package/lib/tree/nodes/inequations/inequationNode.d.ts +1 -0
  147. package/lib/tree/nodes/inequations/inequationNode.d.ts.map +1 -1
  148. package/lib/tree/nodes/inequations/inequationNode.js +3 -0
  149. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
  150. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  151. package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
  152. package/lib/tree/nodes/numbers/constantNode.d.ts +3 -2
  153. package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
  154. package/lib/tree/nodes/numbers/constantNode.js +7 -1
  155. package/lib/tree/nodes/numbers/numberNode.d.ts +1 -0
  156. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  157. package/lib/tree/nodes/numbers/numberNode.js +6 -0
  158. package/lib/tree/nodes/numbers/percentNode.d.ts +1 -0
  159. package/lib/tree/nodes/numbers/percentNode.d.ts.map +1 -1
  160. package/lib/tree/nodes/numbers/percentNode.js +3 -0
  161. package/lib/tree/nodes/operators/addNode.js +17 -14
  162. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts +1 -0
  163. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts.map +1 -1
  164. package/lib/tree/nodes/operators/binomialCoefficientNode.js +3 -0
  165. package/lib/tree/nodes/operators/divideNode.d.ts +1 -0
  166. package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
  167. package/lib/tree/nodes/operators/divideNode.js +3 -0
  168. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  169. package/lib/tree/nodes/operators/limitNode.d.ts +1 -0
  170. package/lib/tree/nodes/operators/limitNode.d.ts.map +1 -1
  171. package/lib/tree/nodes/operators/limitNode.js +3 -0
  172. package/lib/tree/nodes/operators/powerNode.d.ts +1 -0
  173. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  174. package/lib/tree/nodes/operators/powerNode.js +6 -0
  175. package/lib/tree/nodes/polynomials/monomNode.d.ts +1 -0
  176. package/lib/tree/nodes/polynomials/monomNode.d.ts.map +1 -1
  177. package/lib/tree/nodes/polynomials/monomNode.js +3 -0
  178. package/lib/tree/nodes/polynomials/trinomNode.d.ts +1 -0
  179. package/lib/tree/nodes/polynomials/trinomNode.d.ts.map +1 -1
  180. package/lib/tree/nodes/polynomials/trinomNode.js +3 -0
  181. package/lib/tree/nodes/sets/belongsNode.d.ts +1 -0
  182. package/lib/tree/nodes/sets/belongsNode.d.ts.map +1 -1
  183. package/lib/tree/nodes/sets/belongsNode.js +3 -0
  184. package/lib/tree/nodes/sets/discreteSetNode.d.ts +1 -0
  185. package/lib/tree/nodes/sets/discreteSetNode.d.ts.map +1 -1
  186. package/lib/tree/nodes/sets/discreteSetNode.js +3 -0
  187. package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
  188. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  189. package/lib/tree/nodes/sets/intervalNode.js +3 -0
  190. package/lib/tree/nodes/sets/unionIntervalNode.d.ts +1 -0
  191. package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
  192. package/lib/tree/nodes/sets/unionIntervalNode.js +3 -0
  193. package/lib/tree/nodes/variables/variableNode.d.ts +1 -0
  194. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  195. package/lib/tree/nodes/variables/variableNode.js +3 -0
  196. package/package.json +1 -1
@@ -0,0 +1,162 @@
1
+ import { addValidProp, shuffleProps, propWhile, GeneratorOptionTarget, GeneratorOptionType, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { rationalVEA } from "../../../../exercises/vea/rationalVEA.js";
4
+ import { AffineConstructor } from "../../../../math/polynomials/affine.js";
5
+ import { TrinomConstructor } from "../../../../math/polynomials/trinom.js";
6
+ import { randint } from "../../../../math/utils/random/randint.js";
7
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
8
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
9
+ import { random } from "../../../../utils/alea/random.js";
10
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
11
+ const getPropositions = (n, { answer }) => {
12
+ const propositions = [];
13
+ addValidProp(propositions, answer);
14
+ propWhile(propositions, n, () => {
15
+ tryToAddWrongProp(propositions, randint(-10, 10).frenchify());
16
+ });
17
+ return shuffleProps(propositions, n);
18
+ };
19
+ const getAnswer = (identifiers) => {
20
+ const { rateIds } = identifiers;
21
+ const rate = reifyAlgebraic(rateIds);
22
+ return rate.toDetailedEvaluation({ h: (0).toTree() }).simplify().toTex();
23
+ };
24
+ const getInstruction = (identifiers, opts) => {
25
+ const { a, rateIds } = identifiers;
26
+ const rate = reifyAlgebraic(rateIds);
27
+ const questionString = opts?.questionType === "Déterminer $f'(a)$"
28
+ ? `Déterminer $f'(${a})$.`
29
+ : "Déterminer la limite de ce taux d'accroissement quand $h$ tend vers $0$.";
30
+ return `On considère une fonction $f$ définie et dérivable sur $\\mathbb{R}$.
31
+
32
+ Le taux d'accroissement de $f$ entre $${a}$ et $${a}+h$ est :
33
+
34
+ $$
35
+ ${rate.toTex()}
36
+ $$
37
+
38
+ ${questionString}
39
+ `;
40
+ };
41
+ const getHint = (identifiers, opts) => {
42
+ let hint = "";
43
+ const { a } = identifiers;
44
+ if (opts?.questionType === "Déterminer $f'(a)$") {
45
+ hint += `$f'(${a})$ est la limite du taux d'accroissement de $f$ en $${a}$ lorsque $h$ tend vers $0$.`;
46
+ }
47
+ hint += `
48
+
49
+ La limite du taux d'accroissement lorsque $h$ tend vers $0$, si elle existe, est le nombre vers lequel se rapproche ce taux lorsque $h$ prend des valeurs de plus en plus proches de $0$.`;
50
+ return hint;
51
+ };
52
+ const getCorrection = (identifiers, opts) => {
53
+ const { a } = identifiers;
54
+ let corr = "";
55
+ if (opts?.questionType === "Déterminer $f'(a)$") {
56
+ corr += `$f'(${a})$ est la limite du taux d'accroissement de $f$ en $${a}$ lorsque $h$ tend vers $0$.`;
57
+ }
58
+ return (corr += `
59
+
60
+ Ici, plus $h$ se rapproche de $0$, plus le taux d'accroissement se rapproche de :
61
+
62
+ $$
63
+ ${getAnswer(identifiers)}
64
+ $$
65
+
66
+ La limite du taux d'accroissement de $f$ en $${a}$ lorsque $h$ tend vers $0$ est donc $${getAnswer(identifiers)}$ : c'est la valeur de $f'(${a})$.`);
67
+ };
68
+ const getKeys = () => {
69
+ return [];
70
+ };
71
+ const isAnswerValid = (ans, { answer }) => {
72
+ try {
73
+ return rationalVEA(ans, answer);
74
+ }
75
+ catch (err) {
76
+ return handleVEAError(err);
77
+ }
78
+ };
79
+ const getFindAverageRateLimitQuestion = (opts) => {
80
+ const values = ["$ah+b$", "$ah^2+bh+c$", "$\\frac{k}{ah+b}$"];
81
+ const frenchType = random(opts?.functionTypes ?? values);
82
+ const type = values.indexOf(frenchType);
83
+ let a = 0;
84
+ let rateIds;
85
+ switch (type) {
86
+ case 0:
87
+ a = randint(-10, 10);
88
+ rateIds = AffineConstructor.random(undefined, undefined, "h")
89
+ .toTree()
90
+ .toIdentifiers();
91
+ break;
92
+ case 1:
93
+ a = randint(-10, 10);
94
+ rateIds = TrinomConstructor.random(undefined, undefined, undefined, "h")
95
+ .toTree()
96
+ .toIdentifiers();
97
+ break;
98
+ case 2:
99
+ default:
100
+ {
101
+ const affine = AffineConstructor.random(undefined, { excludes: [0] }, "h");
102
+ const k = randint(-9, 10, [0]);
103
+ a = randint(-10, 10);
104
+ rateIds = frac(k, affine.toTree()).toIdentifiers();
105
+ }
106
+ break;
107
+ }
108
+ const identifiers = {
109
+ a,
110
+ rateIds,
111
+ type,
112
+ };
113
+ return getQuestionFromIdentifiers(identifiers, opts);
114
+ };
115
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
116
+ return {
117
+ answer: getAnswer(identifiers),
118
+ instruction: getInstruction(identifiers, opts),
119
+ keys: getKeys(identifiers),
120
+ answerFormat: "tex",
121
+ identifiers,
122
+ hint: getHint(identifiers, opts),
123
+ correction: getCorrection(identifiers, opts),
124
+ };
125
+ };
126
+ const options = [
127
+ {
128
+ id: "functionTypes",
129
+ label: "Types de taux d'accroissement",
130
+ target: GeneratorOptionTarget.generation,
131
+ type: GeneratorOptionType.multiselect,
132
+ values: ["$ah+b$", "$ah^2+bh+c$", "$\\frac{k}{ah+b}$"],
133
+ defaultValue: ["$ah+b$", "$ah^2+bh+c$", "$\\frac{k}{ah+b}$"],
134
+ },
135
+ {
136
+ id: "questionType",
137
+ label: "Formulation de la question",
138
+ target: GeneratorOptionTarget.generation,
139
+ type: GeneratorOptionType.select,
140
+ values: ["Déterminer la limite", "Déterminer $f'(a)$"],
141
+ defaultValue: "Déterminer la limite",
142
+ },
143
+ ];
144
+ export const findAverageRateLimit = {
145
+ id: "findAverageRateLimit",
146
+ connector: "=",
147
+ label: "Déterminer la limite d'un taux d'accroissement donné quand $h$ tend vers $0$",
148
+ isSingleStep: true,
149
+ generator: (nb, opts) => getDistinctQuestions(() => getFindAverageRateLimitQuestion(opts), nb),
150
+ qcmTimer: 60,
151
+ freeTimer: 60,
152
+ getPropositions,
153
+ isAnswerValid,
154
+ subject: "Mathématiques",
155
+ getInstruction,
156
+ getHint,
157
+ getCorrection,
158
+ getAnswer,
159
+ getQuestionFromIdentifiers,
160
+ hasHintAndCorrection: true,
161
+ options,
162
+ };
@@ -1,4 +1,7 @@
1
1
  export * from "./derivativeNumberCalcul.js";
2
2
  export * from "./averageRateOfChangeFromImages.js";
3
3
  export * from "./averageRateOfChangeFromAlgebraic.js";
4
+ export * from "./averageRateOfChangeAlgebraicExpression.js";
5
+ export * from "./expressFAPlusH.js";
6
+ export * from "./findAverageRateLimit.js";
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/derivativeNumber/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/derivativeNumber/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from "./derivativeNumberCalcul.js";
2
2
  export * from "./averageRateOfChangeFromImages.js";
3
3
  export * from "./averageRateOfChangeFromAlgebraic.js";
4
- // export * from "./averageRateOfChangeAlgebraicExpression.js";
4
+ export * from "./averageRateOfChangeAlgebraicExpression.js";
5
+ export * from "./expressFAPlusH.js";
6
+ export * from "./findAverageRateLimit.js";
@@ -4,6 +4,9 @@ type Identifiers = {
4
4
  B: number[];
5
5
  coeffs: number[];
6
6
  };
7
- export declare const derivativeNumberReading: Exercise<Identifiers>;
7
+ type Options = {
8
+ notationType: string;
9
+ };
10
+ export declare const derivativeNumberReading: Exercise<Identifiers, Options>;
8
11
  export {};
9
12
  //# sourceMappingURL=derivativeNumberReading.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"derivativeNumberReading.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/tangent/derivativeNumberReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AA+HF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
1
+ {"version":3,"file":"derivativeNumberReading.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/tangent/derivativeNumberReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAiBT,MAAM,6BAA6B,CAAC;AAerC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AA4KF,KAAK,OAAO,GAAG;IACb,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAgBlE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { addValidProp, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
1
+ import { GeneratorOptionTarget, GeneratorOptionType, addValidProp, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
3
  import { blueMain, orange } from "../../../../geogebra/colors.js";
4
4
  import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
@@ -7,15 +7,20 @@ import { Rational } from "../../../../math/numbers/rationals/rational.js";
7
7
  import { Polynomial } from "../../../../math/polynomials/polynomial.js";
8
8
  import { randint } from "../../../../math/utils/random/randint.js";
9
9
  import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
10
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
11
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
10
12
  import { rationalParser } from "../../../../tree/parsers/rationalParser.js";
11
13
  import { shuffle } from "../../../../utils/alea/shuffle.js";
12
14
  import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
13
- const getInstruction = (identifiers) => {
15
+ const getInstruction = (identifiers, opts) => {
14
16
  const { A } = identifiers;
15
17
  const xA = A[0];
18
+ const notation = opts?.notationType === "Nombre dérivé de $f$ en $a$"
19
+ ? `le nombre dérivé de $f$ en $${xA}$`
20
+ : `$f'(${xA})$`;
16
21
  return `Ci-dessous sont tracées la courbe $\\mathcal C_f$ de la fonction $f$ et la tangente à cette courbe au point d'abscisse $${xA}$.
17
22
 
18
- Déterminer $f'(${xA})$.`;
23
+ Déterminer ${notation}.`;
19
24
  };
20
25
  const getAnswer = (identifiers) => {
21
26
  const { A, B } = identifiers;
@@ -66,7 +71,7 @@ const getGGBOptions = (identifiers) => {
66
71
  coords: [xMin - 5, xMax + 5, yMin - 5, yMax + 5],
67
72
  });
68
73
  };
69
- const getDerivativeNumberReading = () => {
74
+ const getDerivativeNumberReading = (opts) => {
70
75
  const [xA, yA] = [1, 2].map((_el) => randint(-5, 6));
71
76
  const xB = xA > 0 ? randint(xA - 4, 6, [xA]) : randint(-4, xA + 5, [xA]); // l'écart entre les deux points ne soit pas grand
72
77
  const yB = yA > 0 ? randint(yA - 4, 6) : randint(-4, yA + 5);
@@ -83,19 +88,43 @@ const getDerivativeNumberReading = () => {
83
88
  B: [xB, yB],
84
89
  coeffs: [d, c, b / 2, a / 3],
85
90
  };
86
- return getQuestionFromIdentifiers(identifiers);
91
+ return getQuestionFromIdentifiers(identifiers, opts);
87
92
  };
88
- const getQuestionFromIdentifiers = (identifiers) => {
89
- const question = {
90
- instruction: getInstruction(identifiers),
93
+ const getHint = () => {
94
+ return `Le nombre dérivé de $f$ en $a$, aussi noté $f'(a)$, est le coefficient directeur la tangente à la courbe représentative de $f$ au point d'abscisse $a$.`;
95
+ };
96
+ const getCorrection = (identifiers) => {
97
+ const { A, B } = identifiers;
98
+ const xA = A[0];
99
+ const yA = A[1];
100
+ const xB = B[0];
101
+ const yB = B[1];
102
+ return `Le nombre dérivé de $f$ en $${xA}$, aussi noté $f'(${xA})$, est le coefficient directeur la tangente à la courbe représentative de $f$ au point d'abscisse $a$.
103
+
104
+ Ici, on doit donc lire le coefficient directeur de la tangente passant par $A(${xA};${yA})$.
105
+
106
+ On lit un deuxième point par lequel passe cette tangente : c'est $B(${xB};${yB})$.
107
+
108
+ Le coefficient directeur est donc :
109
+
110
+ $$
111
+ ${frac(substract(yB, yA), substract(xB, xA)).toSimplificationTex()}
112
+ $$
113
+
114
+ C'est donc le nombre dérivé de $f$ en $${xA}$, noté $f'(${xA})$.`;
115
+ };
116
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
117
+ return {
118
+ instruction: getInstruction(identifiers, opts),
91
119
  startStatement: "a",
92
120
  answer: getAnswer(identifiers),
93
121
  ggbOptions: getGGBOptions(identifiers),
94
122
  answerFormat: "tex",
95
123
  keys: [],
124
+ hint: getHint(identifiers, opts),
125
+ correction: getCorrection(identifiers, opts),
96
126
  identifiers,
97
127
  };
98
- return question;
99
128
  };
100
129
  const getPropositions = (n, { answer, A, B }) => {
101
130
  const propositions = [];
@@ -119,6 +148,16 @@ const isAnswerValid = (ans, { answer }) => {
119
148
  return handleVEAError(err);
120
149
  }
121
150
  };
151
+ const options = [
152
+ {
153
+ id: "notationType",
154
+ label: "",
155
+ type: GeneratorOptionType.select,
156
+ target: GeneratorOptionTarget.instruction,
157
+ values: ["Nombre dérivé de $f$ en $a$", "$f'(a)$"],
158
+ defaultValue: "$f'(a)$",
159
+ },
160
+ ];
122
161
  export const derivativeNumberReading = {
123
162
  id: "derivativeNumberReading",
124
163
  connector: "=",
@@ -132,4 +171,6 @@ export const derivativeNumberReading = {
132
171
  hasGeogebra: true,
133
172
  subject: "Mathématiques",
134
173
  getQuestionFromIdentifiers,
174
+ options,
175
+ hasHintAndCorrection: true,
135
176
  };
@@ -145,7 +145,7 @@ const getQuestionFromIdentifiers = (identifiers) => {
145
145
  };
146
146
  export const signVarTableFromDerivativeGraph = {
147
147
  id: "signVarTableFromDerivativeGraph",
148
- label: "Dresser le tableau de signes de $f'$ et de variations de $f$ à partir d'une représentation graphique",
148
+ label: "Dresser le tableau de signes de $f'$ et de variations de $f$ à partir de la représentation graphique de $f'$",
149
149
  isSingleStep: true,
150
150
  generator: (nb, opts) => getDistinctQuestions(() => getVarSignTableFromGraphQuestion(opts), nb),
151
151
  qcmTimer: 60,
@@ -171,7 +171,7 @@ const getQuestionFromIdentifiers = (identifiers) => {
171
171
  };
172
172
  export const signVarTableFromGraph = {
173
173
  id: "signVarTableFromGraph",
174
- label: "Dresser le tableau de signes de $f'$ et de variations de $f$ à partir d'une représentation graphique",
174
+ label: "Dresser le tableau de signes de $f'$ et de variations de $f$ à partir de la représentation graphique de $f$",
175
175
  isSingleStep: true,
176
176
  generator: (nb, opts) => getDistinctQuestions(() => getVarSignTableFromGraphQuestion(opts), nb),
177
177
  qcmTimer: 60,
@@ -0,0 +1,8 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ sum: number;
4
+ product: number;
5
+ };
6
+ export declare const findTwoNumbersFromSumAndProduct: Exercise<Identifiers>;
7
+ export {};
8
+ //# sourceMappingURL=findTwoNumbersFromSumAndProduct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findTwoNumbersFromSumAndProduct.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAiLF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAuBjE,CAAC"}
@@ -0,0 +1,182 @@
1
+ import { addValidProp, shuffleProps, propWhile, tryToAddWrongProp, } from "../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { numberVEA } from "../../../../../exercises/vea/numberVEA.js";
4
+ import { randint } from "../../../../../math/utils/random/randint.js";
5
+ import { opposite } from "../../../../../tree/nodes/functions/oppositeNode.js";
6
+ import { sqrt } from "../../../../../tree/nodes/functions/sqrtNode.js";
7
+ import { add } from "../../../../../tree/nodes/operators/addNode.js";
8
+ import { frac } from "../../../../../tree/nodes/operators/fractionNode.js";
9
+ import { multiply } from "../../../../../tree/nodes/operators/multiplyNode.js";
10
+ import { square } from "../../../../../tree/nodes/operators/powerNode.js";
11
+ import { substract } from "../../../../../tree/nodes/operators/substractNode.js";
12
+ import { valueParser } from "../../../../../tree/parsers/valueParser.js";
13
+ import { handleVEAError } from "../../../../../utils/errors/handleVEAError.js";
14
+ const getPropositions = (n, { answer }) => {
15
+ const propositions = [];
16
+ addValidProp(propositions, answer);
17
+ propWhile(propositions, n, () => {
18
+ let a = randint(-10, 10);
19
+ let b = randint(-10, 10, [a]);
20
+ if (b < a)
21
+ [a, b] = [b, a];
22
+ tryToAddWrongProp(propositions, `${a}\\text{ et }${b}`);
23
+ });
24
+ return shuffleProps(propositions, n);
25
+ };
26
+ const getAnswer = (identifiers) => {
27
+ const { sum, product } = identifiers;
28
+ const yByX = substract(sum, "x");
29
+ const a = (-1).toTree();
30
+ const b = sum.toTree();
31
+ const c = opposite(product);
32
+ const delta = substract(square(b), multiply(4, multiply(a, c))).simplify();
33
+ const x1 = frac(substract(opposite(b), sqrt(delta)), multiply(2, a)).simplify();
34
+ const x = x1;
35
+ const y = yByX.toDetailedEvaluation({ x: x }).simplify();
36
+ const ordered = x.evaluate() < y.evaluate() ? [x, y] : [y, x];
37
+ return `${ordered[0].toTex()}\\text{ et }${ordered[1].toTex()}`;
38
+ };
39
+ const getInstruction = (identifiers) => {
40
+ const { sum, product } = identifiers;
41
+ return `On considère deux nombres dont la somme vaut $${sum.frenchify()}$ et le produit vaut $${product.frenchify()}$.
42
+
43
+ Quels sont ces nombres ?`;
44
+ };
45
+ const getHint = () => {
46
+ return `Nomme $x$ et $y$ les nombres recherchés. Cela te donnera alors deux équations.
47
+
48
+ Utilise l'une des équations pour écrire $y$ en fonction de $x$.
49
+
50
+ Puis, réécris l'autre équation en utilisant ce résultat.
51
+
52
+ Tu obtiendras alors une équation du second degré, que tu peux résoudre en utilisant le discriminant.`;
53
+ };
54
+ const getCorrection = (identifiers) => {
55
+ const { sum, product } = identifiers;
56
+ const yByX = substract(sum, "x");
57
+ const a = (-1).toTree();
58
+ const b = sum.toTree();
59
+ const c = opposite(product);
60
+ const delta = substract(square(b), multiply(4, multiply(a, c))).simplify();
61
+ const x1 = frac(substract(opposite(b), sqrt(delta)), multiply(2, a)).simplify();
62
+ const x2 = frac(add(opposite(b), sqrt(delta)), multiply(2, a)).simplify();
63
+ const x = x1;
64
+ const y = yByX.toDetailedEvaluation({ x: x }).simplify();
65
+ return `On note $x$ et $y$ les deux nombres recherchés. On a alors :
66
+
67
+ $$
68
+ x+y = ${sum.frenchify()}
69
+ $$
70
+
71
+ $$
72
+ xy = ${product.frenchify()}
73
+ $$
74
+
75
+ La première équation permet d'exprimer $y$ en fonction de $x$ :
76
+
77
+ $$
78
+ y = ${sum.frenchify()} - x
79
+ $$
80
+
81
+ On injecte cela dans la deuxième équation :
82
+
83
+ $$
84
+ ${multiply("x", yByX).toTex()} = ${product.frenchify()}
85
+ $$
86
+
87
+ Cela nous donne une équation du second degré :
88
+
89
+ $$
90
+ ${substract(multiply("x", yByX), product)
91
+ .simplify({
92
+ towardsDistribute: true,
93
+ forbidFactorize: true,
94
+ })
95
+ .toTex()}=0
96
+ $$
97
+
98
+ On calcule le discriminant :
99
+
100
+ $$
101
+ \\Delta = ${substract(square(b), multiply(4, multiply(a, c))).toSimplificationTex()}
102
+ $$
103
+
104
+ Il y a donc deux solutions :
105
+
106
+ $$
107
+ x_1 = ${frac(substract(opposite(b), sqrt(delta)), multiply(2, a)).toSimplificationTex()}
108
+ $$
109
+
110
+ ce qui donne $y = ${yByX
111
+ .toDetailedEvaluation({ x: x1 })
112
+ .toSimplificationTex()}$ ; et :
113
+
114
+ $$
115
+ x_2 = ${frac(add(opposite(b), sqrt(delta)), multiply(2, a)).toSimplificationTex()}
116
+ $$
117
+
118
+ ce qui donne $y = ${yByX
119
+ .toDetailedEvaluation({ x: x2 })
120
+ .toSimplificationTex()}$.
121
+
122
+ Les deux nombres recherchés sont donc $${x.toTex()}$ et $${y.toTex()}$.
123
+ `;
124
+ };
125
+ const getKeys = () => {
126
+ return ["et"];
127
+ };
128
+ const isAnswerValid = (ans, { answer }) => {
129
+ try {
130
+ const answerValues = answer.split("\\text{ et }");
131
+ const values = ans.includes("et")
132
+ ? ans.split("\\text{ et }")
133
+ : ans.split(",");
134
+ const parsed = values.map((e) => valueParser(e));
135
+ if (parsed.some((e) => e === false))
136
+ return false;
137
+ return [...parsed]
138
+ .sort((a, b) => a - b)
139
+ .every((e, i) => numberVEA(e.frenchify(), answerValues[i]));
140
+ }
141
+ catch (err) {
142
+ return handleVEAError(err);
143
+ }
144
+ };
145
+ const getFindTwoNumbersFromSumAndProductQuestion = () => {
146
+ const x = randint(-10, 10);
147
+ const y = randint(10, 10, [x]);
148
+ const identifiers = {
149
+ sum: x + y,
150
+ product: x * y,
151
+ };
152
+ return getQuestionFromIdentifiers(identifiers);
153
+ };
154
+ const getQuestionFromIdentifiers = (identifiers) => {
155
+ return {
156
+ answer: getAnswer(identifiers),
157
+ instruction: getInstruction(identifiers),
158
+ keys: getKeys(identifiers),
159
+ answerFormat: "tex",
160
+ identifiers,
161
+ hint: getHint(identifiers),
162
+ correction: getCorrection(identifiers),
163
+ };
164
+ };
165
+ export const findTwoNumbersFromSumAndProduct = {
166
+ id: "findTwoNumbersFromSumAndProduct",
167
+ label: "Déterminer deux nombres en connaissant leur somme et leur produit (second degré)",
168
+ isSingleStep: true,
169
+ generator: (nb, opts) => getDistinctQuestions(() => getFindTwoNumbersFromSumAndProductQuestion(opts), nb, 20),
170
+ qcmTimer: 60,
171
+ freeTimer: 60,
172
+ getPropositions,
173
+ isAnswerValid,
174
+ subject: "Mathématiques",
175
+ getInstruction,
176
+ getHint,
177
+ getCorrection,
178
+ getAnswer,
179
+ getQuestionFromIdentifiers,
180
+ hasHintAndCorrection: true,
181
+ maxAllowedQuestions: 20,
182
+ };
@@ -6,4 +6,5 @@ export * from "./trinomSelectEquationWithoutDeltaNeeded.js";
6
6
  export * from "./solveSecondDegreeEquationEqualsC.js";
7
7
  export * from "./secondDegreeEquationWithRightMember.js";
8
8
  export * from "./solveBisquaredEquation.js";
9
+ export * from "./findTwoNumbersFromSumAndProduct.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/trinoms/equation/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/trinoms/equation/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC"}
@@ -6,3 +6,4 @@ export * from "./trinomSelectEquationWithoutDeltaNeeded.js";
6
6
  export * from "./solveSecondDegreeEquationEqualsC.js";
7
7
  export * from "./secondDegreeEquationWithRightMember.js";
8
8
  export * from "./solveBisquaredEquation.js";
9
+ export * from "./findTwoNumbersFromSumAndProduct.js";
@@ -141,7 +141,7 @@ const getTrinomSelectEquationWithoutDeltaNeededQuestion = () => {
141
141
  else {
142
142
  const trinom = TrinomConstructor.randomCanonical(undefined, {
143
143
  excludes: [0],
144
- });
144
+ }); //prevents x^2 + b which looks like devform
145
145
  return {
146
146
  a: trinom.a,
147
147
  b: trinom.b,
@@ -6,4 +6,5 @@ export * from "./roots/index.js";
6
6
  export * from "./sign/index.js";
7
7
  export * from "./summitAndCanonical/index.js";
8
8
  export * from "./parabole/index.js";
9
+ export * from "./problems/index.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/trinoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/trinoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -6,3 +6,4 @@ export * from "./roots/index.js";
6
6
  export * from "./sign/index.js";
7
7
  export * from "./summitAndCanonical/index.js";
8
8
  export * from "./parabole/index.js";
9
+ export * from "./problems/index.js";
@@ -0,0 +1,3 @@
1
+ export * from "./swedishFlag.js";
2
+ export * from "./maxSurfaceForGivenClosure.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/trinoms/problems/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./swedishFlag.js";
2
+ export * from "./maxSurfaceForGivenClosure.js";
@@ -0,0 +1,11 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ closureLength: number;
4
+ askedParam: number;
5
+ };
6
+ type Options = {
7
+ askedParam: string[];
8
+ };
9
+ export declare const maxSurfaceForGivenClosure: Exercise<Identifiers, Options>;
10
+ export {};
11
+ //# sourceMappingURL=maxSurfaceForGivenClosure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maxSurfaceForGivenClosure.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAerC,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA0MF,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAmBF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAkBpE,CAAC"}