math-exercises 3.0.179 → 3.0.181

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 (58) hide show
  1. package/lib/exercises/math/derivation/applications/index.d.ts +3 -0
  2. package/lib/exercises/math/derivation/applications/index.d.ts.map +1 -0
  3. package/lib/exercises/math/derivation/applications/index.js +2 -0
  4. package/lib/exercises/math/derivation/applications/maxBenefice.d.ts +11 -0
  5. package/lib/exercises/math/derivation/applications/maxBenefice.d.ts.map +1 -0
  6. package/lib/exercises/math/derivation/applications/maxBenefice.js +184 -0
  7. package/lib/exercises/math/derivation/applications/minimalCost.d.ts +11 -0
  8. package/lib/exercises/math/derivation/applications/minimalCost.d.ts.map +1 -0
  9. package/lib/exercises/math/derivation/applications/minimalCost.js +181 -0
  10. package/lib/exercises/math/derivation/index.d.ts +1 -0
  11. package/lib/exercises/math/derivation/index.d.ts.map +1 -1
  12. package/lib/exercises/math/derivation/index.js +1 -0
  13. package/lib/exercises/math/derivation/tangent/horizontalTangentFromAlgebraic.d.ts.map +1 -1
  14. package/lib/exercises/math/derivation/tangent/horizontalTangentFromAlgebraic.js +8 -4
  15. package/lib/exercises/math/functions/composition/functionComposition.d.ts.map +1 -1
  16. package/lib/exercises/math/functions/composition/functionComposition.js +20 -15
  17. package/lib/exercises/math/functions/composition/index.d.ts +1 -0
  18. package/lib/exercises/math/functions/composition/index.d.ts.map +1 -1
  19. package/lib/exercises/math/functions/composition/index.js +1 -1
  20. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts +1 -0
  21. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts.map +1 -1
  22. package/lib/exercises/math/functions/exponential/algebraic/index.js +1 -1
  23. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindRecurrenceFormulaFromSituation.d.ts.map +1 -1
  24. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindRecurrenceFormulaFromSituation.js +0 -4
  25. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.d.ts.map +1 -1
  26. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.js +38 -26
  27. package/lib/exercises/math/sequences/geometric/index.d.ts +3 -0
  28. package/lib/exercises/math/sequences/geometric/index.d.ts.map +1 -1
  29. package/lib/exercises/math/sequences/geometric/index.js +3 -3
  30. package/lib/exercises/math/sequences/geometric/situations/geometricFindExplicitFormulaFromSituation.js +1 -1
  31. package/lib/exercises/math/sequences/geometric/situations/index.d.ts +1 -0
  32. package/lib/exercises/math/sequences/geometric/situations/index.d.ts.map +1 -1
  33. package/lib/exercises/math/sequences/geometric/situations/index.js +1 -1
  34. package/lib/exercises/math/sequences/index.d.ts +1 -1
  35. package/lib/exercises/math/sequences/index.d.ts.map +1 -1
  36. package/lib/exercises/math/sequences/index.js +1 -2
  37. package/lib/exercises/math/sequences/limits/index.d.ts +2 -1
  38. package/lib/exercises/math/sequences/limits/index.d.ts.map +1 -1
  39. package/lib/exercises/math/sequences/limits/index.js +2 -2
  40. package/lib/exercises/math/sequences/limits/readSequenceConvergencyType.d.ts +9 -0
  41. package/lib/exercises/math/sequences/limits/readSequenceConvergencyType.d.ts.map +1 -0
  42. package/lib/exercises/math/sequences/limits/readSequenceConvergencyType.js +256 -0
  43. package/lib/exercises/math/sequences/limits/sequenceLimitReading.d.ts +7 -0
  44. package/lib/exercises/math/sequences/limits/sequenceLimitReading.d.ts.map +1 -1
  45. package/lib/exercises/math/sequences/limits/sequenceLimitReading.js +232 -163
  46. package/lib/exercises/math/sequences/variations/genericSequenceVariations.d.ts +7 -0
  47. package/lib/exercises/math/sequences/variations/genericSequenceVariations.d.ts.map +1 -0
  48. package/lib/exercises/math/sequences/variations/genericSequenceVariations.js +122 -0
  49. package/lib/exercises/math/sequences/variations/index.d.ts +2 -0
  50. package/lib/exercises/math/sequences/variations/index.d.ts.map +1 -1
  51. package/lib/exercises/math/sequences/variations/index.js +2 -0
  52. package/lib/exercises/math/sequences/variations/sequenceVariationFromTermsDifference.d.ts +9 -0
  53. package/lib/exercises/math/sequences/variations/sequenceVariationFromTermsDifference.d.ts.map +1 -0
  54. package/lib/exercises/math/sequences/variations/sequenceVariationFromTermsDifference.js +155 -0
  55. package/lib/index.d.ts +57 -2
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/tests/singleExo.test.js +2 -2
  58. package/package.json +1 -1
@@ -0,0 +1,3 @@
1
+ export * from "./maxBenefice.js";
2
+ export * from "./minimalCost.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./maxBenefice.js";
2
+ export * from "./minimalCost.js";
@@ -0,0 +1,11 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ isAskingX: boolean;
4
+ coeffs: number[];
5
+ };
6
+ type Options = {
7
+ method: string;
8
+ };
9
+ export declare const maxBenefice: Exercise<Identifiers, Options>;
10
+ export {};
11
+ //# sourceMappingURL=maxBenefice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maxBenefice.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/applications/maxBenefice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAWrC,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AA6KF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAaF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAoBtD,CAAC"}
@@ -0,0 +1,184 @@
1
+ import { addValidProp, shuffleProps, propWhile, GeneratorOptionTarget, GeneratorOptionType, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
4
+ import { TrinomConstructor } from "../../../../math/polynomials/trinom.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
7
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
8
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
9
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
10
+ const getPropositions = (n, { answer }) => {
11
+ const propositions = [];
12
+ addValidProp(propositions, answer);
13
+ propWhile(propositions, n, () => {
14
+ tryToAddWrongProp(propositions, randint(20, 100) + "");
15
+ });
16
+ return shuffleProps(propositions, n);
17
+ };
18
+ const getAnswer = (identifiers) => {
19
+ const { isAskingX, coeffs } = identifiers;
20
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
21
+ return isAskingX
22
+ ? trinom.getAlphaNode().toTex()
23
+ : trinom.getBetaNode().toTex();
24
+ };
25
+ const getInstruction = (identifiers) => {
26
+ const { isAskingX, coeffs } = identifiers;
27
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
28
+ return `Une entreprise de cosmétique produit de la crème solaire.
29
+
30
+ Pour $x$ litres de crème produits, le bénéfice quotidien est donné, en centaines d'euros par :
31
+
32
+ $$
33
+ B(x)=${trinom.toTree().toTex()}
34
+ $$
35
+
36
+ ${isAskingX
37
+ ? "Déterminer la quantité de crème qu'elle doit produire pour obtenir un bénéfice maximal."
38
+ : "Déterminer le bénéfice quotidien maximal que peut obtenir l'entreprise."}`;
39
+ };
40
+ const getHint = (_identifiers, opts) => {
41
+ const useDerivative = !opts?.method || opts?.method === "Dérivation";
42
+ if (useDerivative) {
43
+ return `Dérive la fonction $B$, puis étudie le signe de $B'(x)$.
44
+
45
+ La fonction $B$ atteint son maximum pour la valeur de $x$ telle que $B'(x) = 0$.`;
46
+ }
47
+ return `La fonction $B$ est une fonction polynôme du second degré. Pour trouver le bénéfice maximal ou la valeur de $x$ pour laquelle il est atteint, on peut donc déterminer $\\alpha$ ou $\\beta$.`;
48
+ };
49
+ const getCorrection = (identifiers, opts) => {
50
+ const { coeffs } = identifiers;
51
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
52
+ const useDerivative = !opts?.method || opts?.method === "Dérivation";
53
+ const deriv = trinom.derivate().toTree();
54
+ if (useDerivative) {
55
+ const xMax = trinom.getAlphaNode().toTex();
56
+ return `On calcule $B'(x)$ :
57
+
58
+ $$
59
+ B'(x) = ${deriv.toTex()}
60
+ $$
61
+
62
+ On étudie le signe de $B'(x)$ :
63
+
64
+ ${alignTex([
65
+ ["B'(x)", "\\geq", "0"],
66
+ [deriv.toTex(), "\\geq", "0"],
67
+ ["x", "\\leq", xMax],
68
+ ])}
69
+
70
+ $B$ est donc croissante jusqu'à $${xMax}$, puis elle décroit.
71
+
72
+ Elle atteint donc son maximum pour $x = ${xMax}$.
73
+
74
+ Ce maximum vaut alors :
75
+
76
+ $$
77
+ B(${xMax}) = ${trinom.getBetaNode().toTex()}
78
+ $$
79
+
80
+ L'entreprise fait donc son bénéfice maximal pour $${trinom
81
+ .getAlphaNode()
82
+ .toTex()}$ litres de crème, et ce bénéfice vaut $${trinom
83
+ .getBetaNode()
84
+ .toTex()}$ centaines d'euros (c'est à dire $${multiply(trinom.getBetaNode(), 100)
85
+ .simplify()
86
+ .toTex()}$ euros).
87
+ `;
88
+ }
89
+ return `La fonction $B$ est un polynôme du second degré avec $a = ${trinom.a}$, $b = ${trinom.b}$ et $c = ${trinom.b}$.
90
+
91
+ L'extremum de ce type de fonction est atteint pour $x = \\alpha$, avec :
92
+
93
+ $$
94
+ \\alpha = \\frac{-b}{2a}
95
+ $$
96
+
97
+ On peut alors retrouver $\\beta$ en calculant $B(\\alpha)$.
98
+
99
+ Ici, on a donc :
100
+
101
+ $$
102
+ \\alpha = ${trinom.getAlphaNode().toTex()}
103
+ $$
104
+
105
+ d'où
106
+
107
+ $$
108
+ \\beta = ${trinom.getBetaNode().toTex()}
109
+ $$
110
+
111
+ L'entreprise fait donc son bénéfice maximal pour $${trinom
112
+ .getAlphaNode()
113
+ .toTex()}$ litres de crème, et ce bénéfice vaut $${trinom
114
+ .getBetaNode()
115
+ .toTex()}$ centaines d'euros (c'est à dire $${multiply(trinom.getBetaNode(), 100)
116
+ .simplify()
117
+ .toTex()}$ euros).`;
118
+ };
119
+ const getKeys = () => {
120
+ return [];
121
+ };
122
+ const isAnswerValid = (ans, { answer }) => {
123
+ try {
124
+ return numberVEA(ans, answer);
125
+ }
126
+ catch (err) {
127
+ return handleVEAError(err);
128
+ }
129
+ };
130
+ const getMaxBeneficeQuestion = (opts) => {
131
+ const a = randint(-5, 0);
132
+ const alpha = randint(30, 100);
133
+ const beta = randint(30, 100, [alpha]);
134
+ const trinom = TrinomConstructor.fromAlphaBeta({
135
+ a,
136
+ alpha,
137
+ beta,
138
+ });
139
+ const identifiers = {
140
+ isAskingX: coinFlip(),
141
+ coeffs: trinom.coefficients,
142
+ };
143
+ return getQuestionFromIdentifiers(identifiers, opts);
144
+ };
145
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
146
+ return {
147
+ answer: getAnswer(identifiers, opts),
148
+ instruction: getInstruction(identifiers, opts),
149
+ keys: getKeys(identifiers),
150
+ answerFormat: "tex",
151
+ identifiers,
152
+ hint: getHint(identifiers, opts),
153
+ correction: getCorrection(identifiers, opts),
154
+ };
155
+ };
156
+ const options = [
157
+ {
158
+ id: "method",
159
+ label: "Méthode de résolution",
160
+ defaultValue: "Dérivation",
161
+ target: GeneratorOptionTarget.correction,
162
+ type: GeneratorOptionType.select,
163
+ values: ["Dérivation", "Étude de la fonction du second degré"],
164
+ },
165
+ ];
166
+ export const maxBenefice = {
167
+ id: "maxBenefice",
168
+ connector: "=",
169
+ label: "Déterminer le bénéfice maximal dans un contexte (dérivation ou fonction du second degré)",
170
+ isSingleStep: true,
171
+ generator: (nb, opts) => getDistinctQuestions(() => getMaxBeneficeQuestion(opts), nb),
172
+ qcmTimer: 60,
173
+ freeTimer: 60,
174
+ getPropositions,
175
+ isAnswerValid,
176
+ subject: "Mathématiques",
177
+ getInstruction,
178
+ getHint,
179
+ getCorrection,
180
+ getAnswer,
181
+ getQuestionFromIdentifiers,
182
+ hasHintAndCorrection: true,
183
+ options,
184
+ };
@@ -0,0 +1,11 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ isAskingX: boolean;
4
+ coeffs: number[];
5
+ };
6
+ type Options = {
7
+ method: string;
8
+ };
9
+ export declare const minimalCost: Exercise<Identifiers, Options>;
10
+ export {};
11
+ //# sourceMappingURL=minimalCost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimalCost.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/applications/minimalCost.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAsKF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAaF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAoBtD,CAAC"}
@@ -0,0 +1,181 @@
1
+ import { addValidProp, shuffleProps, propWhile, GeneratorOptionTarget, GeneratorOptionType, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
4
+ import { TrinomConstructor } from "../../../../math/polynomials/trinom.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
7
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
8
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
9
+ const getPropositions = (n, { answer }) => {
10
+ const propositions = [];
11
+ addValidProp(propositions, answer);
12
+ propWhile(propositions, n, () => {
13
+ tryToAddWrongProp(propositions, randint(20, 100) + "");
14
+ });
15
+ return shuffleProps(propositions, n);
16
+ };
17
+ const getAnswer = (identifiers) => {
18
+ const { isAskingX, coeffs } = identifiers;
19
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
20
+ return isAskingX
21
+ ? trinom.getAlphaNode().toTex()
22
+ : trinom.getBetaNode().toTex();
23
+ };
24
+ const getInstruction = (identifiers) => {
25
+ const { isAskingX, coeffs } = identifiers;
26
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
27
+ return `Une minoterie produit de la farine. On note $x$ la quantité de farine produite en une journée, exprimée en tonnes.
28
+
29
+ Le coût de production unitaire (d'une tonne de farine) est donné par :
30
+
31
+ $$
32
+ C(x)=${trinom.toTree().toTex()}
33
+ $$
34
+
35
+
36
+ ${isAskingX
37
+ ? "Déterminer la quantité de farine (en tonnes) à produire pour obtenir un coût de production unitaire minimal."
38
+ : "Déterminer le coût de production unitaire minimal que l'entreprise peut obtenir."}
39
+ `;
40
+ };
41
+ const getHint = (_identifiers, opts) => {
42
+ const useDerivative = !opts?.method || opts?.method === "Dérivation";
43
+ if (useDerivative) {
44
+ return `Dérive la fonction $C$, puis étudie le signe de $C'(x)$.
45
+
46
+ La fonction $C$ atteint son minimum pour la valeur de $x$ telle que $C'(x) = 0$.`;
47
+ }
48
+ return `La fonction $C$ est une fonction polynôme du second degré. Pour trouver le coût minimal ou la valeur de $x$ pour laquelle il est atteint, on peut donc déterminer $\\alpha$ ou $\\beta$.`;
49
+ };
50
+ const getCorrection = (identifiers, opts) => {
51
+ const { coeffs } = identifiers;
52
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
53
+ const useDerivative = !opts?.method || opts?.method === "Dérivation";
54
+ const deriv = trinom.derivate().toTree();
55
+ if (useDerivative) {
56
+ const xMax = trinom.getAlphaNode().toTex();
57
+ return `On calcule $C'(x)$ :
58
+
59
+ $$
60
+ C'(x) = ${deriv.toTex()}
61
+ $$
62
+
63
+ On étudie le signe de $C'(x)$ :
64
+
65
+ ${alignTex([
66
+ ["C'(x)", "\\geq", "0"],
67
+ [deriv.toTex(), "\\geq", "0"],
68
+ ["x", "\\geq", xMax],
69
+ ])}
70
+
71
+ $C$ est donc décroissante jusqu'à $${xMax}$, puis elle croît.
72
+
73
+ Elle atteint donc son minimum pour $x = ${xMax}$.
74
+
75
+ Ce minimum vaut alors :
76
+
77
+ $$
78
+ C(${xMax}) = ${trinom.getBetaNode().toTex()}
79
+ $$
80
+
81
+ Le coût est donc minimal pour $${trinom
82
+ .getAlphaNode()
83
+ .toTex()}$ tonnes, et ce coût vaut $${trinom
84
+ .getBetaNode()
85
+ .toTex()}$ euros.
86
+ `;
87
+ }
88
+ return `La fonction $C$ est un polynôme du second degré avec $a = ${trinom.a}$, $b = ${trinom.b}$ et $c = ${trinom.b}$.
89
+
90
+ L'extremum de ce type de fonction est atteint pour $x = \\alpha$, avec :
91
+
92
+ $$
93
+ \\alpha = \\frac{-b}{2a}
94
+ $$
95
+
96
+ On peut alors retrouver $\\beta$ en calculant $C(\\alpha)$.
97
+
98
+ Ici, on a donc :
99
+
100
+ $$
101
+ \\alpha = ${trinom.getAlphaNode().toTex()}
102
+ $$
103
+
104
+ d'où
105
+
106
+ $$
107
+ \\beta = ${trinom.getBetaNode().toTex()}
108
+ $$
109
+
110
+ Le coût est donc minimal pour $${trinom
111
+ .getAlphaNode()
112
+ .toTex()}$ tonnes, et ce coût vaut $${trinom
113
+ .getBetaNode()
114
+ .toTex()}$ euros.`;
115
+ };
116
+ const getKeys = () => {
117
+ return [];
118
+ };
119
+ const isAnswerValid = (ans, { answer }) => {
120
+ try {
121
+ return numberVEA(ans, answer);
122
+ }
123
+ catch (err) {
124
+ return handleVEAError(err);
125
+ }
126
+ };
127
+ const getMaxBeneficeQuestion = (opts) => {
128
+ const a = randint(1, 5);
129
+ const alpha = randint(30, 100);
130
+ const beta = randint(30, 100, [alpha]);
131
+ const trinom = TrinomConstructor.fromAlphaBeta({
132
+ a,
133
+ alpha,
134
+ beta,
135
+ });
136
+ const identifiers = {
137
+ isAskingX: coinFlip(),
138
+ coeffs: trinom.coefficients,
139
+ };
140
+ return getQuestionFromIdentifiers(identifiers, opts);
141
+ };
142
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
143
+ return {
144
+ answer: getAnswer(identifiers, opts),
145
+ instruction: getInstruction(identifiers, opts),
146
+ keys: getKeys(identifiers),
147
+ answerFormat: "tex",
148
+ identifiers,
149
+ hint: getHint(identifiers, opts),
150
+ correction: getCorrection(identifiers, opts),
151
+ };
152
+ };
153
+ const options = [
154
+ {
155
+ id: "method",
156
+ label: "Méthode de résolution",
157
+ defaultValue: "Dérivation",
158
+ target: GeneratorOptionTarget.correction,
159
+ type: GeneratorOptionType.select,
160
+ values: ["Dérivation", "Étude de la fonction du second degré"],
161
+ },
162
+ ];
163
+ export const minimalCost = {
164
+ id: "minimalCost",
165
+ connector: "=",
166
+ label: "Déterminer le coût unitaire minimal dans un contexte (dérivation ou fonction du second degré)",
167
+ isSingleStep: true,
168
+ generator: (nb, opts) => getDistinctQuestions(() => getMaxBeneficeQuestion(opts), nb),
169
+ qcmTimer: 60,
170
+ freeTimer: 60,
171
+ getPropositions,
172
+ isAnswerValid,
173
+ subject: "Mathématiques",
174
+ getInstruction,
175
+ getHint,
176
+ getCorrection,
177
+ getAnswer,
178
+ getQuestionFromIdentifiers,
179
+ hasHintAndCorrection: true,
180
+ options,
181
+ };
@@ -3,4 +3,5 @@ export * from "./derivativeNumber/index.js";
3
3
  export * from "./tangent/index.js";
4
4
  export * from "./variations/index.js";
5
5
  export * from "./convexity/index.js";
6
+ export * from "./applications/index.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/derivation/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/derivation/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
@@ -3,3 +3,4 @@ export * from "./derivativeNumber/index.js";
3
3
  export * from "./tangent/index.js";
4
4
  export * from "./variations/index.js";
5
5
  export * from "./convexity/index.js";
6
+ export * from "./applications/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"horizontalTangentFromAlgebraic.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/tangent/horizontalTangentFromAlgebraic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAYrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAkGF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,WAAW,CAiBhE,CAAC"}
1
+ {"version":3,"file":"horizontalTangentFromAlgebraic.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/tangent/horizontalTangentFromAlgebraic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAYrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAwGF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,WAAW,CAiBhE,CAAC"}
@@ -51,10 +51,14 @@ const getCorrection = (identifiers) => {
51
51
  const res = equation.isolate("x", { steps });
52
52
  return `On calcule la fonction dérivée $f'$ de $f$ :
53
53
 
54
- ${alignTex([
55
- ["f'(x)", "=", deriv.toTex()],
56
- ["", "=", derivSimp.toTex()],
57
- ])}
54
+ ${deriv.toTex() !== derivSimp.toTex()
55
+ ? alignTex([
56
+ ["f'(x)", "=", deriv.toTex()],
57
+ ["", "=", derivSimp.toTex()],
58
+ ])
59
+ : `$$
60
+ f'(x) = ${deriv.toTex()}
61
+ $$`}
58
62
 
59
63
  On résout ensuite l'équation $f'(x) = 0$ :
60
64
 
@@ -1 +1 @@
1
- {"version":3,"file":"functionComposition.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/composition/functionComposition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AASrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AA+D7C,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AA8NF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAiBrD,CAAC"}
1
+ {"version":3,"file":"functionComposition.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/composition/functionComposition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AASrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AA8D7C,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AA4NF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAiBrD,CAAC"}
@@ -7,7 +7,6 @@ import { NodeConstructor, } from "../../../../tree/nodes/nodeConstructor.js";
7
7
  // import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
8
8
  import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
9
9
  import { isOperatorNode } from "../../../../tree/nodes/operators/operatorNode.js";
10
- import { substract } from "../../../../tree/nodes/operators/substractNode.js";
11
10
  import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
12
11
  import { random } from "../../../../utils/alea/random.js";
13
12
  import { alignTex } from "../../../../utils/latex/alignTex.js";
@@ -100,22 +99,28 @@ const getAnswer = (identifiers) => {
100
99
  const isAnswerValid = (ans, { answer }) => {
101
100
  const nodeAns = parseAlgebraic(ans);
102
101
  const nodeAnswer = parseAlgebraic(answer);
103
- // return (
104
- // substract(nodeAns.simplify(), nodeAnswer.simplify())
105
- // .simplify()
106
- // .evaluate() === 0
107
- // );
108
- // return (
109
- // nodeAns.simplify().toMathString() === nodeAnswer.simplify().toMathString()
110
- // );
111
- //
112
102
  // Une façon de savoir que expr1(x) et expr2(x) sont équivalentes:
113
103
  // x|->expr1(expr2(x)) doit être la même fonction que x|->expr2(expr1(x))
114
- const nodeAnsOfAnswer = nodeBySubstitutingX(nodeAns.simplify(), nodeAnswer.simplify().toTex()).simplify();
115
- const nodeAnswerOfAns = nodeBySubstitutingX(nodeAnswer.simplify(), nodeAns.simplify().toTex()).simplify();
116
- return [0, 1, 1000].every((x) => {
117
- return (substract(nodeAnsOfAnswer.evaluate({ x }), nodeAnswerOfAns.evaluate({ x })).evaluate() === 0);
118
- });
104
+ /*!! ROBIN
105
+ Fix à l'arrache car les tests pétent
106
+ */
107
+ // const nodeAnsOfAnswer = nodeBySubstitutingX(
108
+ // nodeAns.simplify(),
109
+ // nodeAnswer.simplify().toTex(),
110
+ // ).simplify();
111
+ // const nodeAnswerOfAns = nodeBySubstitutingX(
112
+ // nodeAnswer.simplify(),
113
+ // nodeAns.simplify().toTex(),
114
+ // ).simplify();
115
+ // return [0, 1, 1000].every((x) => {
116
+ // return (
117
+ // substract(
118
+ // nodeAnsOfAnswer.evaluate({ x }),
119
+ // nodeAnswerOfAns.evaluate({ x }),
120
+ // ).evaluate() === 0
121
+ // );
122
+ // });
123
+ return nodeAns.simplify().toTex() === nodeAnswer.simplify().toTex();
119
124
  };
120
125
  const getPropositions = (n, { answer, ...identifiers }) => {
121
126
  const { nodeIds } = identifiers;
@@ -1,3 +1,4 @@
1
+ export * from "./functionComposition.js";
1
2
  export * from "./functionDecompositionFindUOrV.js";
2
3
  export * from "./functionDecompositionFindPossibleUVs.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/composition/index.ts"],"names":[],"mappings":"AACA,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/composition/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC"}
@@ -1,3 +1,3 @@
1
- // export * from "./functionComposition.js";
1
+ export * from "./functionComposition.js";
2
2
  export * from "./functionDecompositionFindUOrV.js";
3
3
  export * from "./functionDecompositionFindPossibleUVs.js";
@@ -1,4 +1,5 @@
1
1
  export * from "./approxExpN.js";
2
2
  export * from "./approxExpKa.js";
3
3
  export * from "./approxExpAPlusB.js";
4
+ export * from "./rewriteExpUsingExpA.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/exponential/algebraic/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/exponential/algebraic/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export * from "./approxExpN.js";
2
2
  export * from "./approxExpKa.js";
3
3
  export * from "./approxExpAPlusB.js";
4
- // export * from "./rewriteExpUsingExpA.js";
4
+ export * from "./rewriteExpUsingExpA.js";
@@ -1 +1 @@
1
- {"version":3,"file":"arithmeticFindRecurrenceFormulaFromSituation.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/arithmetic/situations/arithmeticFindRecurrenceFormulaFromSituation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,sBAAsB,EACvB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,wDAAwD,CAAC;AAGhE,OAAO,EAEL,kCAAkC,EAEnC,MAAM,kEAAkE,CAAC;AAgB1E,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,kCAAkC,CAAC;CACtD,CAAC;AAiRF,KAAK,OAAO,GAAG,sBAAsB,GAAG,2BAA2B,CAAC;AAcpE,eAAO,MAAM,4CAA4C,EAAE,QAAQ,CACjE,WAAW,EACX,OAAO,CAoBR,CAAC"}
1
+ {"version":3,"file":"arithmeticFindRecurrenceFormulaFromSituation.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/arithmetic/situations/arithmeticFindRecurrenceFormulaFromSituation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,sBAAsB,EACvB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,wDAAwD,CAAC;AAGhE,OAAO,EAEL,kCAAkC,EAEnC,MAAM,kEAAkE,CAAC;AAW1E,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,kCAAkC,CAAC;CACtD,CAAC;AAiRF,KAAK,OAAO,GAAG,sBAAsB,GAAG,2BAA2B,CAAC;AAcpE,eAAO,MAAM,4CAA4C,EAAE,QAAQ,CACjE,WAAW,EACX,OAAO,CAoBR,CAAC"}
@@ -10,10 +10,6 @@ import { multiply } from "../../../../../tree/nodes/operators/multiplyNode.js";
10
10
  import { substract } from "../../../../../tree/nodes/operators/substractNode.js";
11
11
  import { parseAlgebraic } from "../../../../../tree/parsers/latexParser.js";
12
12
  import { handleVEAError } from "../../../../../utils/errors/handleVEAError.js";
13
- const _getNodeFactor = (firstRank, varName = "n") => {
14
- const nodeN = varName.toTree();
15
- return firstRank === 0 ? nodeN : substract(nodeN, 1);
16
- };
17
13
  const situations = situationsArithmetic;
18
14
  const getInstruction = (identifiers, optsIn) => {
19
15
  const opts = optsIn ?? optsDefault;
@@ -1 +1 @@
1
- {"version":3,"file":"geometricFindExplicitFormulaFromTwoConsecutiveTerms.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,sBAAsB,EACvB,MAAM,mDAAmD,CAAC;AAoB3D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAyVF,KAAK,OAAO,GAAG,sBAAsB,CAAC;AAMtC,eAAO,MAAM,mDAAmD,EAAE,QAAQ,CACxE,WAAW,EACX,OAAO,CAqBR,CAAC"}
1
+ {"version":3,"file":"geometricFindExplicitFormulaFromTwoConsecutiveTerms.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,sBAAsB,EACvB,MAAM,mDAAmD,CAAC;AAiB3D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAwVF,KAAK,OAAO,GAAG,sBAAsB,CAAC;AAMtC,eAAO,MAAM,mDAAmD,EAAE,QAAQ,CACxE,WAAW,EACX,OAAO,CAqBR,CAAC"}