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.
- package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts +4 -3
- package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.js +236 -52
- package/lib/exercises/math/derivation/derivativeNumber/expressFAPlusH.d.ts +13 -0
- package/lib/exercises/math/derivation/derivativeNumber/expressFAPlusH.d.ts.map +1 -0
- package/lib/exercises/math/derivation/derivativeNumber/expressFAPlusH.js +225 -0
- package/lib/exercises/math/derivation/derivativeNumber/findAverageRateLimit.d.ts +14 -0
- package/lib/exercises/math/derivation/derivativeNumber/findAverageRateLimit.d.ts.map +1 -0
- package/lib/exercises/math/derivation/derivativeNumber/findAverageRateLimit.js +162 -0
- package/lib/exercises/math/derivation/derivativeNumber/index.d.ts +3 -0
- package/lib/exercises/math/derivation/derivativeNumber/index.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivativeNumber/index.js +3 -1
- package/lib/exercises/math/derivation/tangent/derivativeNumberReading.d.ts +4 -1
- package/lib/exercises/math/derivation/tangent/derivativeNumberReading.d.ts.map +1 -1
- package/lib/exercises/math/derivation/tangent/derivativeNumberReading.js +50 -9
- package/lib/exercises/math/derivation/variations/signVarTableFromDerivativeGraph.js +1 -1
- package/lib/exercises/math/derivation/variations/signVarTableFromGraph.js +1 -1
- package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.d.ts +8 -0
- package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.d.ts.map +1 -0
- package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.js +182 -0
- package/lib/exercises/math/functions/trinoms/equation/index.d.ts +1 -0
- package/lib/exercises/math/functions/trinoms/equation/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/trinoms/equation/index.js +1 -0
- package/lib/exercises/math/functions/trinoms/equation/trinomSelectEquationWithoutDeltaNeeded.js +1 -1
- package/lib/exercises/math/functions/trinoms/index.d.ts +1 -0
- package/lib/exercises/math/functions/trinoms/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/trinoms/index.js +1 -0
- package/lib/exercises/math/functions/trinoms/problems/index.d.ts +3 -0
- package/lib/exercises/math/functions/trinoms/problems/index.d.ts.map +1 -0
- package/lib/exercises/math/functions/trinoms/problems/index.js +2 -0
- package/lib/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.d.ts +11 -0
- package/lib/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.d.ts.map +1 -0
- package/lib/exercises/math/functions/trinoms/problems/maxSurfaceForGivenClosure.js +212 -0
- package/lib/exercises/math/functions/trinoms/problems/swedishFlag.d.ts +8 -0
- package/lib/exercises/math/functions/trinoms/problems/swedishFlag.d.ts.map +1 -0
- package/lib/exercises/math/functions/trinoms/problems/swedishFlag.js +174 -0
- package/lib/exercises/math/functions/trinoms/summitAndCanonical/findTrinomCanonicalFormFromGraph.js +2 -2
- package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitReading.d.ts.map +1 -1
- package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitReading.js +22 -1
- package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts +4 -1
- package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts.map +1 -1
- package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.js +45 -20
- package/lib/exercises/math/sequences/arithmetic/recognizeReasonFromGraph.d.ts +4 -1
- package/lib/exercises/math/sequences/arithmetic/recognizeReasonFromGraph.d.ts.map +1 -1
- package/lib/exercises/math/sequences/arithmetic/recognizeReasonFromGraph.js +43 -9
- package/lib/exercises/math/sequences/index.d.ts +1 -0
- package/lib/exercises/math/sequences/index.d.ts.map +1 -1
- package/lib/exercises/math/sequences/index.js +1 -0
- package/lib/exercises/math/sequences/variations/expressConsecutiveTermsDifference.d.ts +11 -0
- package/lib/exercises/math/sequences/variations/expressConsecutiveTermsDifference.d.ts.map +1 -0
- package/lib/exercises/math/sequences/variations/expressConsecutiveTermsDifference.js +160 -0
- package/lib/exercises/math/sequences/variations/index.d.ts +2 -0
- package/lib/exercises/math/sequences/variations/index.d.ts.map +1 -0
- package/lib/exercises/math/sequences/variations/index.js +1 -0
- package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.js +0 -1
- package/lib/exercises/math/trigonometry/circle/findAssociateAnglePointOnTrigoCircle.d.ts +8 -0
- package/lib/exercises/math/trigonometry/circle/findAssociateAnglePointOnTrigoCircle.d.ts.map +1 -0
- package/lib/exercises/math/trigonometry/circle/findAssociateAnglePointOnTrigoCircle.js +158 -0
- package/lib/exercises/math/trigonometry/circle/index.d.ts +2 -0
- package/lib/exercises/math/trigonometry/circle/index.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/circle/index.js +2 -0
- package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.js +8 -3
- package/lib/exercises/math/trigonometry/circle/placeAssociateAngleOnCircle.d.ts +8 -0
- package/lib/exercises/math/trigonometry/circle/placeAssociateAngleOnCircle.d.ts.map +1 -0
- package/lib/exercises/math/trigonometry/circle/placeAssociateAngleOnCircle.js +167 -0
- package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts +2 -0
- package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts.map +1 -1
- package/lib/exercises/utils/geogebra/toolBarConstructor.js +4 -0
- package/lib/index.d.ts +52 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/math/geometry/segment.d.ts +1 -1
- package/lib/math/polynomials/trinom.d.ts +1 -1
- package/lib/math/polynomials/trinom.d.ts.map +1 -1
- package/lib/math/polynomials/trinom.js +2 -2
- package/lib/playground.d.ts.map +1 -1
- package/lib/playground.js +1 -3
- package/lib/tree/nodes/algebraicNode.d.ts +2 -0
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/complex/complexNode.d.ts +1 -0
- package/lib/tree/nodes/complex/complexNode.d.ts.map +1 -1
- package/lib/tree/nodes/complex/complexNode.js +3 -0
- package/lib/tree/nodes/equations/equalNode.d.ts +1 -0
- package/lib/tree/nodes/equations/equalNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/equalNode.js +3 -0
- package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
- package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
- package/lib/tree/nodes/equations/multiEqualNode.d.ts +1 -0
- package/lib/tree/nodes/equations/multiEqualNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/multiEqualNode.js +3 -0
- package/lib/tree/nodes/equations/notEqualNode.d.ts +1 -0
- package/lib/tree/nodes/equations/notEqualNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/notEqualNode.js +3 -0
- package/lib/tree/nodes/functions/absNode.d.ts +1 -0
- package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/absNode.js +3 -0
- package/lib/tree/nodes/functions/arcSinNode.d.ts +1 -0
- package/lib/tree/nodes/functions/arcSinNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/arcSinNode.js +3 -0
- package/lib/tree/nodes/functions/arccosNode.d.ts +1 -0
- package/lib/tree/nodes/functions/arccosNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/arccosNode.js +3 -0
- package/lib/tree/nodes/functions/arctanNode.d.ts +1 -0
- package/lib/tree/nodes/functions/arctanNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/arctanNode.js +3 -0
- package/lib/tree/nodes/functions/cosNode.d.ts +1 -0
- package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/cosNode.js +3 -0
- package/lib/tree/nodes/functions/expNode.d.ts +1 -0
- package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/expNode.js +3 -0
- package/lib/tree/nodes/functions/integralNode.d.ts +1 -0
- package/lib/tree/nodes/functions/integralNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/integralNode.js +3 -0
- package/lib/tree/nodes/functions/log10Node.d.ts +1 -0
- package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
- package/lib/tree/nodes/functions/log10Node.js +3 -0
- package/lib/tree/nodes/functions/logNode.d.ts +1 -0
- package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/logNode.js +3 -0
- package/lib/tree/nodes/functions/oppositeNode.d.ts +1 -0
- package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/oppositeNode.js +6 -0
- package/lib/tree/nodes/functions/sinNode.d.ts +1 -0
- package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/sinNode.js +3 -0
- package/lib/tree/nodes/functions/sqrtNode.d.ts +1 -2
- package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/tanNode.d.ts +1 -0
- package/lib/tree/nodes/functions/tanNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/tanNode.js +3 -0
- package/lib/tree/nodes/geometry/degree.d.ts +1 -0
- package/lib/tree/nodes/geometry/degree.d.ts.map +1 -1
- package/lib/tree/nodes/geometry/degree.js +3 -0
- package/lib/tree/nodes/geometry/lengthNode.d.ts +1 -0
- package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
- package/lib/tree/nodes/geometry/lengthNode.js +3 -0
- package/lib/tree/nodes/geometry/pointNode.d.ts +1 -0
- package/lib/tree/nodes/geometry/pointNode.d.ts.map +1 -1
- package/lib/tree/nodes/geometry/pointNode.js +3 -0
- package/lib/tree/nodes/geometry/vectorNode.d.ts +1 -0
- package/lib/tree/nodes/geometry/vectorNode.d.ts.map +1 -1
- package/lib/tree/nodes/geometry/vectorNode.js +3 -0
- package/lib/tree/nodes/inequations/inequationNode.d.ts +1 -0
- package/lib/tree/nodes/inequations/inequationNode.d.ts.map +1 -1
- package/lib/tree/nodes/inequations/inequationNode.js +3 -0
- package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
- package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
- package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
- package/lib/tree/nodes/numbers/constantNode.d.ts +3 -2
- package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/constantNode.js +7 -1
- package/lib/tree/nodes/numbers/numberNode.d.ts +1 -0
- package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/numberNode.js +6 -0
- package/lib/tree/nodes/numbers/percentNode.d.ts +1 -0
- package/lib/tree/nodes/numbers/percentNode.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/percentNode.js +3 -0
- package/lib/tree/nodes/operators/addNode.js +17 -14
- package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts +1 -0
- package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/binomialCoefficientNode.js +3 -0
- package/lib/tree/nodes/operators/divideNode.d.ts +1 -0
- package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/divideNode.js +3 -0
- package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/limitNode.d.ts +1 -0
- package/lib/tree/nodes/operators/limitNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/limitNode.js +3 -0
- package/lib/tree/nodes/operators/powerNode.d.ts +1 -0
- package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/powerNode.js +6 -0
- package/lib/tree/nodes/polynomials/monomNode.d.ts +1 -0
- package/lib/tree/nodes/polynomials/monomNode.d.ts.map +1 -1
- package/lib/tree/nodes/polynomials/monomNode.js +3 -0
- package/lib/tree/nodes/polynomials/trinomNode.d.ts +1 -0
- package/lib/tree/nodes/polynomials/trinomNode.d.ts.map +1 -1
- package/lib/tree/nodes/polynomials/trinomNode.js +3 -0
- package/lib/tree/nodes/sets/belongsNode.d.ts +1 -0
- package/lib/tree/nodes/sets/belongsNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/belongsNode.js +3 -0
- package/lib/tree/nodes/sets/discreteSetNode.d.ts +1 -0
- package/lib/tree/nodes/sets/discreteSetNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/discreteSetNode.js +3 -0
- package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
- package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/intervalNode.js +3 -0
- package/lib/tree/nodes/sets/unionIntervalNode.d.ts +1 -0
- package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/unionIntervalNode.js +3 -0
- package/lib/tree/nodes/variables/variableNode.d.ts +1 -0
- package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
- package/lib/tree/nodes/variables/variableNode.js +3 -0
- 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
|
-
|
|
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
|
-
|
|
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,
|
|
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 $
|
|
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
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
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
|
|
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
|
package/lib/exercises/math/functions/trinoms/equation/findTwoNumbersFromSumAndProduct.d.ts.map
ADDED
|
@@ -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";
|
package/lib/exercises/math/functions/trinoms/equation/trinomSelectEquationWithoutDeltaNeeded.js
CHANGED
|
@@ -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,
|
|
@@ -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"}
|
|
@@ -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,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"}
|