math-exercises 3.0.201 → 3.0.202
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/dataRepresentations/scatterPlot/index.d.ts +2 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/index.d.ts.map +1 -1
- package/lib/exercises/math/dataRepresentations/scatterPlot/index.js +2 -2
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableFromScatterPlotData.js +2 -2
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableWithDataClassesFromScatterPlotData.d.ts.map +1 -1
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableWithDataClassesFromScatterPlotData.js +9 -2
- package/lib/exercises/math/derivation/derivative/exp/secondDerivativeOfExpoFunction.js +1 -1
- package/lib/exercises/math/derivation/derivative/trigo/index.d.ts +1 -0
- package/lib/exercises/math/derivation/derivative/trigo/index.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/trigo/index.js +1 -1
- package/lib/exercises/math/derivation/derivative/trigo/sinCosDerivativeRewriteUsingCos2PlusSin2Equals1.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/trigo/sinCosDerivativeRewriteUsingCos2PlusSin2Equals1.js +1 -1
- package/lib/exercises/math/derivation/problems/index.d.ts +1 -0
- package/lib/exercises/math/derivation/problems/index.d.ts.map +1 -1
- package/lib/exercises/math/derivation/problems/index.js +1 -1
- package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.d.ts.map +1 -1
- package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.js +31 -21
- package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineY.d.ts.map +1 -1
- package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineY.js +8 -128
- package/lib/exercises/math/derivation/tangent/index.d.ts +1 -0
- package/lib/exercises/math/derivation/tangent/index.d.ts.map +1 -1
- package/lib/exercises/math/derivation/tangent/index.js +1 -1
- package/lib/exercises/math/derivation/variations/index.d.ts +1 -0
- package/lib/exercises/math/derivation/variations/index.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/index.js +1 -1
- package/lib/exercises/math/derivation/variations/signVarTableQuotientFExp.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/signVarTableQuotientFExp.js +47 -20
- package/lib/exercises/math/equaDiff/equaDiffAyPlusB.d.ts.map +1 -1
- package/lib/exercises/math/equaDiff/equaDiffAyPlusB.js +29 -6
- package/lib/exercises/math/equaDiff/equaDiffCheckSolutionFirstOrder.d.ts.map +1 -1
- package/lib/exercises/math/equaDiff/equaDiffCheckSolutionFirstOrder.js +33 -0
- package/lib/exercises/math/equaDiff/exponentialDifferentialEquation.d.ts +7 -0
- package/lib/exercises/math/equaDiff/exponentialDifferentialEquation.d.ts.map +1 -0
- package/lib/exercises/math/equaDiff/exponentialDifferentialEquation.js +86 -0
- package/lib/exercises/math/equaDiff/exponentialDifferentialEquationWithIC.d.ts.map +1 -1
- package/lib/exercises/math/equaDiff/exponentialDifferentialEquationWithIC.js +35 -7
- package/lib/exercises/math/equaDiff/index.d.ts +1 -1
- package/lib/exercises/math/equaDiff/index.d.ts.map +1 -1
- package/lib/exercises/math/equaDiff/index.js +1 -1
- package/lib/exercises/math/functions/integral/integralExpU.d.ts.map +1 -1
- package/lib/exercises/math/functions/integral/integralExpU.js +48 -0
- package/lib/exercises/math/functions/integral/integralFractions.d.ts.map +1 -1
- package/lib/exercises/math/functions/integral/integralFractions.js +52 -0
- package/lib/exercises/math/functions/integral/integralTrinomials.d.ts.map +1 -1
- package/lib/exercises/math/functions/integral/integralTrinomials.js +40 -0
- package/lib/exercises/math/functions/logarithm/log10Simplifying.js +2 -2
- package/lib/exercises/math/functions/logarithm/powerEquation.js +1 -1
- package/lib/exercises/math/geometry/parametric/extractVectorFromParametricLine.d.ts.map +1 -1
- package/lib/exercises/math/geometry/parametric/extractVectorFromParametricLine.js +30 -25
- package/lib/exercises/math/geometry/parametric/pointFromParametricLine.d.ts.map +1 -1
- package/lib/exercises/math/geometry/parametric/pointFromParametricLine.js +52 -5
- package/lib/exercises/math/integration/fromExpr/areaBetweenCrossingCurvesFixedPosFromExpr.d.ts.map +1 -1
- package/lib/exercises/math/integration/fromExpr/areaBetweenCrossingCurvesFixedPosFromExpr.js +26 -35
- package/lib/exercises/math/integration/fromExpr/index.d.ts +1 -0
- package/lib/exercises/math/integration/fromExpr/index.d.ts.map +1 -1
- package/lib/exercises/math/integration/fromExpr/index.js +1 -1
- package/lib/exercises/math/primitive/constantPrimitive.d.ts.map +1 -1
- package/lib/exercises/math/primitive/constantPrimitive.js +25 -1
- package/lib/exercises/math/primitive/exponentialPrimitive.d.ts.map +1 -1
- package/lib/exercises/math/primitive/exponentialPrimitive.js +17 -0
- package/lib/exercises/math/primitive/polynomialPrimitive.d.ts.map +1 -1
- package/lib/exercises/math/primitive/polynomialPrimitive.js +17 -1
- package/lib/exercises/math/primitive/sinCosPrimitive.d.ts.map +1 -1
- package/lib/exercises/math/primitive/sinCosPrimitive.js +20 -1
- package/lib/exercises/math/primitive/usualPrimitives.d.ts.map +1 -1
- package/lib/exercises/math/primitive/usualPrimitives.js +1 -0
- package/lib/exercises/math/sets/cartesianProduct/findCardinalOfCartesianProductOfFiniteSets.js +4 -4
- package/lib/exercises/math/sets/cartesianProduct/findCardinalOfCartesianProductOfFiniteSetsFromSituation.js +3 -3
- package/lib/exercises/math/sets/cartesianProduct/proposeElementInCartesianProductOfFiniteSets.js +4 -4
- package/lib/exercises/math/spaceGeometry/basis/spaceCoordinatesOfPointInCubeCoordSystemFromVecPath.js +1 -1
- package/lib/exercises/math/spaceGeometry/orthogonalProjection/findOrthogonalProjectionOfPointOnPlane.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/orthogonalProjection/findOrthogonalProjectionOfPointOnPlane.js +12 -25
- package/lib/exercises/math/spaceGeometry/orthogonalProjection/index.d.ts +1 -1
- package/lib/exercises/math/spaceGeometry/orthogonalProjection/index.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/orthogonalProjection/index.js +1 -2
- package/lib/exercises/math/spaceGeometry/planes/findNormalVectorFromPlanePointsCoords.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/planes/findNormalVectorFromPlanePointsCoords.js +11 -26
- package/lib/exercises/math/spaceGeometry/planes/index.d.ts +1 -0
- package/lib/exercises/math/spaceGeometry/planes/index.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/planes/index.js +1 -1
- package/lib/exercises/math/spaceGeometry/planes/planePlaneRelativePositions.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/planes/planePlaneRelativePositions.js +11 -25
- package/lib/exercises/math/spaceGeometry/scalarProduct/angleFromScalarProductFromSpacePointCoords.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/scalarProduct/angleFromScalarProductFromSpacePointCoords.js +25 -5
- package/lib/exercises/math/spaceGeometry/scalarProduct/index.d.ts +1 -0
- package/lib/exercises/math/spaceGeometry/scalarProduct/index.d.ts.map +1 -1
- package/lib/exercises/math/spaceGeometry/scalarProduct/index.js +1 -1
- package/lib/exercises/math/spaceGeometry/vectors/findLinearDecompositionWrtCoplanarUVFromCoords.js +2 -2
- package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.js +87 -24
- package/lib/exercises/pc/mathExosInPC.d.ts +1 -1
- package/lib/exercises/pc/mathExosInPC.d.ts.map +1 -1
- package/lib/exercises/pc/mathExosInPC.js +1 -1
- package/lib/index.d.ts +55 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/math/geometry/spaceVector.d.ts +2 -0
- package/lib/math/geometry/spaceVector.d.ts.map +1 -1
- package/lib/math/geometry/spaceVector.js +40 -0
- package/lib/math/utils/polynomial/polynomialUtils.d.ts +2 -2
- package/lib/math/utils/polynomial/polynomialUtils.d.ts.map +1 -1
- package/lib/math/utils/polynomial/polynomialUtils.js +5 -2
- package/lib/tests/exoTest.js +1 -1
- package/lib/tests/questionTest.d.ts.map +1 -1
- package/lib/tests/questionTest.js +7 -3
- package/lib/tests/singleExo.test.d.ts.map +1 -1
- package/lib/tests/singleExo.test.js +2 -2
- package/lib/tree/utilities/nodeComparator.d.ts +1 -1
- package/lib/tree/utilities/nodeComparator.d.ts.map +1 -1
- package/lib/tree/utilities/nodeComparator.js +6 -4
- package/lib/tree/utilities/nodeSimplifier.d.ts +1 -0
- package/lib/tree/utilities/nodeSimplifier.d.ts.map +1 -1
- package/lib/tree/utilities/nodeSimplifier.js +40 -0
- package/package.json +1 -1
|
@@ -26,6 +26,36 @@ const getAnswer = (identifiers) => {
|
|
|
26
26
|
const answer = identifiers.isSolution ? "Oui" : "Non";
|
|
27
27
|
return answer;
|
|
28
28
|
};
|
|
29
|
+
const getHint = () => {
|
|
30
|
+
return `Calcule la dérivée $y'$ de $y$. Puis, remplace ton résultat dans l'équation différentielle donnée. La fonction $y$ est une solution si et seulement si l'égalité est vérifiée pour tout réel $x$.`;
|
|
31
|
+
};
|
|
32
|
+
const getCorrection = (identifiers) => {
|
|
33
|
+
const { equaDiffIdentifiers, randFuncIdentifiers } = identifiers;
|
|
34
|
+
const equaDiff = reifyAlgebraic(equaDiffIdentifiers);
|
|
35
|
+
const y = reifyAlgebraic(randFuncIdentifiers);
|
|
36
|
+
const yPrime = y.derivative().simplify({ forbidFactorize: true });
|
|
37
|
+
return `On calcule la fonction dérivée de $y$ :
|
|
38
|
+
|
|
39
|
+
$$
|
|
40
|
+
y' = ${yPrime.toTex()}
|
|
41
|
+
$$
|
|
42
|
+
|
|
43
|
+
La fonction $y$ est solution de l'équation différentielle proposée si et seulement si :
|
|
44
|
+
|
|
45
|
+
$$
|
|
46
|
+
${equaDiff.toTex()}
|
|
47
|
+
$$
|
|
48
|
+
|
|
49
|
+
C'est à dire si et seulement si :
|
|
50
|
+
|
|
51
|
+
$$
|
|
52
|
+
${equaDiff.toDetailedEvaluation({ y: y, "y'": yPrime }).toTex()}
|
|
53
|
+
$$
|
|
54
|
+
|
|
55
|
+
${identifiers.isSolution
|
|
56
|
+
? `L'égalité est bien vérifiée pour tout réel $x$ : la fonction $y$ est donc bien une solution de cette équation différentielle.`
|
|
57
|
+
: "L'égalité n'est pas vérifiée pour tout réel $x$ : la fontion $y$ n'est donc pas une solution de cette équation différentielle."}.`;
|
|
58
|
+
};
|
|
29
59
|
const getQuestionFromIdentifiers = (identifiers) => {
|
|
30
60
|
const question = {
|
|
31
61
|
answer: getAnswer(identifiers),
|
|
@@ -33,6 +63,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
33
63
|
keys: [],
|
|
34
64
|
answerFormat: "raw",
|
|
35
65
|
identifiers,
|
|
66
|
+
hint: getHint(identifiers),
|
|
67
|
+
correction: getCorrection(identifiers),
|
|
36
68
|
};
|
|
37
69
|
return question;
|
|
38
70
|
};
|
|
@@ -117,4 +149,5 @@ export const equaDiffCheckSolutionFirstOrder = {
|
|
|
117
149
|
answerType: "QCU",
|
|
118
150
|
subject: "Mathématiques",
|
|
119
151
|
getQuestionFromIdentifiers,
|
|
152
|
+
hasHintAndCorrection: true,
|
|
120
153
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exponentialDifferentialEquation.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/equaDiff/exponentialDifferentialEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAmGF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAajE,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { addValidProp, propWhile, tryToAddWrongProp, } from "../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { randint } from "../../../math/utils/random/randint.js";
|
|
4
|
+
import { ExpNode } from "../../../tree/nodes/functions/expNode.js";
|
|
5
|
+
import { NumberNode } from "../../../tree/nodes/numbers/numberNode.js";
|
|
6
|
+
import { VariableNode } from "../../../tree/nodes/variables/variableNode.js";
|
|
7
|
+
import { EqualNode } from "../../../tree/nodes/equations/equalNode.js";
|
|
8
|
+
import { multiply, MultiplyNode, } from "../../../tree/nodes/operators/multiplyNode.js";
|
|
9
|
+
import { shuffle } from "../../../utils/alea/shuffle.js";
|
|
10
|
+
const getInstruction = (identifiers) => {
|
|
11
|
+
const { a } = identifiers;
|
|
12
|
+
const equation = new MultiplyNode(new NumberNode(a), new VariableNode("y"));
|
|
13
|
+
return `Résoudre l'équation différentielle suivante :
|
|
14
|
+
|
|
15
|
+
$$
|
|
16
|
+
y' = ${equation.toTex()}
|
|
17
|
+
$$`;
|
|
18
|
+
};
|
|
19
|
+
const getAnswer = (identifiers) => {
|
|
20
|
+
const { a } = identifiers;
|
|
21
|
+
const answer = new EqualNode(new VariableNode("y"), new MultiplyNode(new VariableNode("C"), new ExpNode(new MultiplyNode(new NumberNode(a), new VariableNode("x"))))).toTex();
|
|
22
|
+
return answer;
|
|
23
|
+
};
|
|
24
|
+
const getHint = () => {
|
|
25
|
+
return "La solution générale d'une équation différentielle de la forme $y' = ay$ est de la forme $y = Ce^{ax}$, où $C$ est une constante d'intégration.";
|
|
26
|
+
};
|
|
27
|
+
const getCorrection = (identifiers) => {
|
|
28
|
+
const { a } = identifiers;
|
|
29
|
+
return `La solution générale d'une équation différentielle de la forme $y' = ay$ est de la forme $y = Ce^{ax}$, où $C$ est une constante d'intégration.
|
|
30
|
+
|
|
31
|
+
Donc, la solution générale de l'équation différentielle $y' = ${multiply(a, "y").toTex()}$ est :
|
|
32
|
+
|
|
33
|
+
$$
|
|
34
|
+
y = Ce^{${multiply(a, "x").toTex()}}
|
|
35
|
+
$$`;
|
|
36
|
+
};
|
|
37
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
38
|
+
const question = {
|
|
39
|
+
instruction: getInstruction(identifiers),
|
|
40
|
+
startStatement: `y(x)`,
|
|
41
|
+
answer: getAnswer(identifiers),
|
|
42
|
+
hint: getHint(identifiers),
|
|
43
|
+
correction: getCorrection(identifiers),
|
|
44
|
+
keys: ["x", "y", "epower", "exp", "C", "equal"],
|
|
45
|
+
answerFormat: "tex",
|
|
46
|
+
identifiers,
|
|
47
|
+
};
|
|
48
|
+
return question;
|
|
49
|
+
};
|
|
50
|
+
const getExponentialEquation = () => {
|
|
51
|
+
const a = randint(-19, 20, [0]);
|
|
52
|
+
const identifiers = { a };
|
|
53
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
54
|
+
};
|
|
55
|
+
const getPropositions = (n, { answer }) => {
|
|
56
|
+
const propositions = [];
|
|
57
|
+
addValidProp(propositions, answer);
|
|
58
|
+
const yNode = new VariableNode("y");
|
|
59
|
+
const cNode = new VariableNode("C");
|
|
60
|
+
const xNode = new VariableNode("x");
|
|
61
|
+
propWhile(propositions, n, () => {
|
|
62
|
+
const a = randint(1, 10);
|
|
63
|
+
const myWrongAnswer = new EqualNode(yNode, new MultiplyNode(cNode, new ExpNode(new MultiplyNode(new NumberNode(a), xNode))));
|
|
64
|
+
tryToAddWrongProp(propositions, myWrongAnswer.toTex());
|
|
65
|
+
});
|
|
66
|
+
return shuffle(propositions);
|
|
67
|
+
};
|
|
68
|
+
const isAnswerValid = (ans, { a }) => {
|
|
69
|
+
const answer = new EqualNode(new VariableNode("y"), new MultiplyNode(new VariableNode("C"), new ExpNode(new MultiplyNode(new NumberNode(a), new VariableNode("x")))), { allowRawRightChildAsSolution: true });
|
|
70
|
+
const texs = answer.toAllValidTexs();
|
|
71
|
+
return texs.includes(ans);
|
|
72
|
+
};
|
|
73
|
+
export const exponentialDifferentialEquation = {
|
|
74
|
+
id: "exponentialDifferentialEquation",
|
|
75
|
+
connector: "=",
|
|
76
|
+
label: "Équation différentielle $y' = ay$",
|
|
77
|
+
isSingleStep: false,
|
|
78
|
+
generator: (nb) => getDistinctQuestions(getExponentialEquation, nb),
|
|
79
|
+
qcmTimer: 60,
|
|
80
|
+
freeTimer: 60,
|
|
81
|
+
getPropositions,
|
|
82
|
+
isAnswerValid,
|
|
83
|
+
subject: "Mathématiques",
|
|
84
|
+
hasHintAndCorrection: true,
|
|
85
|
+
getQuestionFromIdentifiers,
|
|
86
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exponentialDifferentialEquationWithIC.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/equaDiff/exponentialDifferentialEquationWithIC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"exponentialDifferentialEquationWithIC.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/equaDiff/exponentialDifferentialEquationWithIC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA2IF,eAAO,MAAM,qCAAqC,EAAE,QAAQ,CAAC,WAAW,CAcvE,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { randint } from "../../../math/utils/random/randint.js";
|
|
|
4
4
|
import { ExpNode } from "../../../tree/nodes/functions/expNode.js";
|
|
5
5
|
import { NumberNode } from "../../../tree/nodes/numbers/numberNode.js";
|
|
6
6
|
import { EqualNode } from "../../../tree/nodes/equations/equalNode.js";
|
|
7
|
-
import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode.js";
|
|
7
|
+
import { multiply, MultiplyNode, } from "../../../tree/nodes/operators/multiplyNode.js";
|
|
8
8
|
import { VariableNode } from "../../../tree/nodes/variables/variableNode.js";
|
|
9
9
|
import { shuffle } from "../../../utils/alea/shuffle.js";
|
|
10
10
|
const getInstruction = (identifiers) => {
|
|
@@ -24,12 +24,37 @@ const getAnswer = (identifiers) => {
|
|
|
24
24
|
const answer = new EqualNode(new VariableNode("y"), solution).toTex();
|
|
25
25
|
return answer;
|
|
26
26
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
const getHint = (identifiers) => {
|
|
28
|
+
return `La solution générale d'une équation différentielle de la forme $y' = ay$ est de la forme $y = Ce^{ax}$, où $C$ est une constante d'intégration.
|
|
29
|
+
|
|
30
|
+
Pour déterminer $C$, utilise le fait que la solution $y$ vérifie :
|
|
31
|
+
|
|
32
|
+
$$
|
|
33
|
+
y(0) = ${identifiers.initialY}
|
|
34
|
+
$$`;
|
|
35
|
+
};
|
|
36
|
+
const getCorrection = (identifiers) => {
|
|
37
|
+
const { a } = identifiers;
|
|
38
|
+
return `La solution générale d'une équation différentielle de la forme $y' = ay$ est de la forme $y = Ce^{ax}$, où $C$ est une constante d'intégration.
|
|
39
|
+
|
|
40
|
+
Donc, la solution générale de l'équation différentielle $y' = ${multiply(a, "y").toTex()}$ est :
|
|
41
|
+
|
|
42
|
+
$$
|
|
43
|
+
y = Ce^{${multiply(a, "x").toTex()}}
|
|
44
|
+
$$
|
|
45
|
+
|
|
46
|
+
Or, on sait de plus que :
|
|
47
|
+
|
|
48
|
+
$$
|
|
49
|
+
y(0) = ${identifiers.initialY}
|
|
50
|
+
$$
|
|
51
|
+
|
|
52
|
+
On en déduit que l'unique solution de cette équation différentielle est :
|
|
53
|
+
|
|
54
|
+
$$
|
|
55
|
+
${getAnswer(identifiers)}
|
|
56
|
+
$$`;
|
|
57
|
+
};
|
|
33
58
|
const getQuestionFromIdentifiers = (identifiers) => {
|
|
34
59
|
const question = {
|
|
35
60
|
instruction: getInstruction(identifiers),
|
|
@@ -38,6 +63,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
38
63
|
keys: ["x", "y", "epower", "exp", "equal"],
|
|
39
64
|
answerFormat: "tex",
|
|
40
65
|
identifiers,
|
|
66
|
+
hint: getHint(identifiers),
|
|
67
|
+
correction: getCorrection(identifiers),
|
|
41
68
|
};
|
|
42
69
|
return question;
|
|
43
70
|
};
|
|
@@ -89,4 +116,5 @@ export const exponentialDifferentialEquationWithIC = {
|
|
|
89
116
|
isAnswerValid,
|
|
90
117
|
subject: "Mathématiques",
|
|
91
118
|
getQuestionFromIdentifiers,
|
|
119
|
+
hasHintAndCorrection: true,
|
|
92
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/equaDiff/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/equaDiff/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integralExpU.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/integral/integralExpU.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"integralExpU.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/integral/integralExpU.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAYrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA8NF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,WAAW,CAY9C,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { AddNode } from "../../../../tree/nodes/operators/addNode.js";
|
|
|
8
8
|
import { MultiplyNode } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
9
9
|
import { SubstractNode } from "../../../../tree/nodes/operators/substractNode.js";
|
|
10
10
|
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
11
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
11
12
|
const doesTrinomialVanishInInterval = (trinomial, a, b) => {
|
|
12
13
|
const calculate = (x) => trinomial.calculate(x);
|
|
13
14
|
for (let x = a; x <= b; x++) {
|
|
@@ -45,6 +46,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
45
46
|
keys: ["epower", "e"],
|
|
46
47
|
answerFormat: "tex",
|
|
47
48
|
identifiers,
|
|
49
|
+
hint: getHint(identifiers),
|
|
50
|
+
correction: getCorrection(identifiers),
|
|
48
51
|
};
|
|
49
52
|
return question;
|
|
50
53
|
};
|
|
@@ -75,6 +78,50 @@ const getIntegralExpUQuestion = () => {
|
|
|
75
78
|
};
|
|
76
79
|
return getQuestionFromIdentifiers(identifiers);
|
|
77
80
|
};
|
|
81
|
+
const getHint = (identifiers) => {
|
|
82
|
+
const { questionType, trinomial } = identifiers;
|
|
83
|
+
const trinom = new Trinom(trinomial[0], trinomial[1], trinomial[2]);
|
|
84
|
+
const affine = trinom.derivate();
|
|
85
|
+
const polynomial = questionType === "Trinomial" ? trinom : affine;
|
|
86
|
+
const expU = new MultiplyNode(polynomial.derivate().toTree(), new ExpNode(polynomial.toTree()));
|
|
87
|
+
return `Commence par déterminer une primitive de la fonction $x\\mapsto ${expU.toTex()}$.
|
|
88
|
+
|
|
89
|
+
Puis, utilise le fait que si $F$ est une primitive d'une fonction $f$, alors :
|
|
90
|
+
|
|
91
|
+
$$
|
|
92
|
+
\\int_{a}^b f(x) \\, \\mathrm{d}x = F(b)-F(a)
|
|
93
|
+
$$`;
|
|
94
|
+
};
|
|
95
|
+
const getCorrection = (identifiers) => {
|
|
96
|
+
const { lowerBound, upperBound, questionType, trinomial } = identifiers;
|
|
97
|
+
const trinom = new Trinom(trinomial[0], trinomial[1], trinomial[2]);
|
|
98
|
+
const affine = trinom.derivate();
|
|
99
|
+
const polynomial = questionType === "Trinomial" ? trinom : affine;
|
|
100
|
+
const expU = new MultiplyNode(polynomial.derivate().toTree(), new ExpNode(polynomial.toTree()));
|
|
101
|
+
const integral = new IntegralNode(expU, lowerBound.toTree(), upperBound.toTree(), "x");
|
|
102
|
+
return `On remarque que :
|
|
103
|
+
|
|
104
|
+
$$
|
|
105
|
+
${expU.toTex()} = u'(x)e^{u(x)}
|
|
106
|
+
$$
|
|
107
|
+
|
|
108
|
+
où $u(x) = ${questionType === "Trinomial" ? trinom.toTex() : affine.toTex()}$.
|
|
109
|
+
|
|
110
|
+
Une primitive de la fonction $x\\mapsto ${expU.toTex()}$ est donc :
|
|
111
|
+
|
|
112
|
+
$$
|
|
113
|
+
F(x) = ${new ExpNode(polynomial.toTree()).toTex()}
|
|
114
|
+
$$
|
|
115
|
+
|
|
116
|
+
On a donc :
|
|
117
|
+
|
|
118
|
+
${alignTex([
|
|
119
|
+
["", integral.toTex()],
|
|
120
|
+
["=", `F(${upperBound.frenchify()}) - F(${lowerBound.frenchify()})`],
|
|
121
|
+
["=", getAnswer(identifiers)],
|
|
122
|
+
])}
|
|
123
|
+
`;
|
|
124
|
+
};
|
|
78
125
|
const getPropositions = (n, { answer, questionType, trinomial, upperBound, lowerBound }) => {
|
|
79
126
|
const propositions = [];
|
|
80
127
|
addValidProp(propositions, answer);
|
|
@@ -112,4 +159,5 @@ export const integralExpU = {
|
|
|
112
159
|
isAnswerValid,
|
|
113
160
|
subject: "Mathématiques",
|
|
114
161
|
getQuestionFromIdentifiers,
|
|
162
|
+
hasHintAndCorrection: true,
|
|
115
163
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integralFractions.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/integral/integralFractions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"integralFractions.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/integral/integralFractions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA6RF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAanD,CAAC"}
|
|
@@ -2,12 +2,14 @@ import { addValidProp, propWhile, shuffleProps, tryToAddWrongProp, } from "../..
|
|
|
2
2
|
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
3
|
import { Trinom, TrinomConstructor } from "../../../../math/polynomials/trinom.js";
|
|
4
4
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
5
|
+
import { abs } from "../../../../tree/nodes/functions/absNode.js";
|
|
5
6
|
import { IntegralNode } from "../../../../tree/nodes/functions/integralNode.js";
|
|
6
7
|
import { LogNode } from "../../../../tree/nodes/functions/logNode.js";
|
|
7
8
|
import { AddNode } from "../../../../tree/nodes/operators/addNode.js";
|
|
8
9
|
import { FractionNode } from "../../../../tree/nodes/operators/fractionNode.js";
|
|
9
10
|
import { SubstractNode } from "../../../../tree/nodes/operators/substractNode.js";
|
|
10
11
|
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
12
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
11
13
|
const doesTrinomialVanishInInterval = (trinomial, a, b) => {
|
|
12
14
|
const calculate = (x) => trinomial.calculate(x);
|
|
13
15
|
for (let x = a; x <= b; x++) {
|
|
@@ -46,6 +48,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
46
48
|
instruction: getInstruction(identifiers),
|
|
47
49
|
keys: ["lnBrackets"],
|
|
48
50
|
answerFormat: "tex",
|
|
51
|
+
hint: getHint(identifiers),
|
|
52
|
+
correction: getCorrection(identifiers),
|
|
49
53
|
identifiers,
|
|
50
54
|
};
|
|
51
55
|
return question;
|
|
@@ -80,6 +84,53 @@ const getIntegralFractionsQuestion = () => {
|
|
|
80
84
|
};
|
|
81
85
|
return getQuestionFromIdentifiers(identifiers);
|
|
82
86
|
};
|
|
87
|
+
const getHint = (identifiers) => {
|
|
88
|
+
const { questionType, trinomial } = identifiers;
|
|
89
|
+
const trinom = new Trinom(trinomial[0], trinomial[1], trinomial[2]);
|
|
90
|
+
const affine = trinom.derivate();
|
|
91
|
+
const fraction = questionType === "Trinomial"
|
|
92
|
+
? new FractionNode(affine.toTree(), trinom.toTree())
|
|
93
|
+
: new FractionNode(affine.coefficients[1].toTree(), affine.toTree());
|
|
94
|
+
return `Commence par déterminer une primitive de la fonction $x\\mapsto ${fraction.toTex()}$.
|
|
95
|
+
|
|
96
|
+
Puis, utilise le fait que si $F$ est une primitive d'une fonction $f$, alors :
|
|
97
|
+
|
|
98
|
+
$$
|
|
99
|
+
\\int_{a}^b f(x) \\, \\mathrm{d}x = F(b)-F(a)
|
|
100
|
+
$$`;
|
|
101
|
+
};
|
|
102
|
+
const getCorrection = (identifiers) => {
|
|
103
|
+
const { lowerBound, upperBound, questionType, trinomial } = identifiers;
|
|
104
|
+
const trinom = new Trinom(trinomial[0], trinomial[1], trinomial[2]);
|
|
105
|
+
const affine = trinom.derivate();
|
|
106
|
+
const fraction = questionType === "Trinomial"
|
|
107
|
+
? new FractionNode(affine.toTree(), trinom.toTree())
|
|
108
|
+
: new FractionNode(affine.coefficients[1].toTree(), affine.toTree());
|
|
109
|
+
const log = new LogNode(abs(questionType === "Trinomial" ? trinom.toTree() : affine.toTree()));
|
|
110
|
+
const integral = new IntegralNode(fraction, lowerBound.toTree(), upperBound.toTree(), "x");
|
|
111
|
+
return `On remarque que :
|
|
112
|
+
|
|
113
|
+
$$
|
|
114
|
+
${fraction.toTex()} = \\frac{u'}{u}
|
|
115
|
+
$$
|
|
116
|
+
|
|
117
|
+
où $u(x) = ${questionType === "Trinomial" ? trinom.toTex() : affine.toTex()}$.
|
|
118
|
+
|
|
119
|
+
Une primitive de la fonction $x\\mapsto ${fraction.toTex()}$ est donc :
|
|
120
|
+
|
|
121
|
+
$$
|
|
122
|
+
F(x) = ${log.toTex()}
|
|
123
|
+
$$
|
|
124
|
+
|
|
125
|
+
On a donc :
|
|
126
|
+
|
|
127
|
+
${alignTex([
|
|
128
|
+
["", integral.toTex()],
|
|
129
|
+
["=", `F(${upperBound.frenchify()}) - F(${lowerBound.frenchify()})`],
|
|
130
|
+
["=", getAnswer(identifiers)],
|
|
131
|
+
])}
|
|
132
|
+
`;
|
|
133
|
+
};
|
|
83
134
|
const getPropositions = (n, { answer, questionType, trinomial, upperBound, lowerBound }) => {
|
|
84
135
|
const propositions = [];
|
|
85
136
|
addValidProp(propositions, answer);
|
|
@@ -128,4 +179,5 @@ export const integralFractions = {
|
|
|
128
179
|
isAnswerValid,
|
|
129
180
|
subject: "Mathématiques",
|
|
130
181
|
getQuestionFromIdentifiers,
|
|
182
|
+
hasHintAndCorrection: true,
|
|
131
183
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integralTrinomials.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/integral/integralTrinomials.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"integralTrinomials.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/integral/integralTrinomials.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAqJF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAapD,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
|
|
|
4
4
|
import { Polynomial } from "../../../../math/polynomials/polynomial.js";
|
|
5
5
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
6
6
|
import { IntegralNode } from "../../../../tree/nodes/functions/integralNode.js";
|
|
7
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
7
8
|
const getInstruction = (identifiers) => {
|
|
8
9
|
const { lowerBound, upperBound, quadrinomial } = identifiers;
|
|
9
10
|
const quadrinomial1 = new Polynomial(quadrinomial);
|
|
@@ -50,6 +51,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
50
51
|
keys: [],
|
|
51
52
|
answerFormat: "tex",
|
|
52
53
|
identifiers,
|
|
54
|
+
hint: getHint(identifiers),
|
|
55
|
+
correction: getCorrection(identifiers),
|
|
53
56
|
};
|
|
54
57
|
return question;
|
|
55
58
|
};
|
|
@@ -75,6 +78,42 @@ const getPropositions = (n, { answer, lowerBound, upperBound, quadrinomial }) =>
|
|
|
75
78
|
});
|
|
76
79
|
return shuffleProps(propositions, n);
|
|
77
80
|
};
|
|
81
|
+
const getHint = (identifiers) => {
|
|
82
|
+
const { quadrinomial } = identifiers;
|
|
83
|
+
const quadrinomial1 = new Polynomial(quadrinomial);
|
|
84
|
+
const trinomial = quadrinomial1.derivate();
|
|
85
|
+
return `Commence par déterminer une primitive de la fonction $x\\mapsto ${trinomial
|
|
86
|
+
.toTree()
|
|
87
|
+
.toTex()}$.
|
|
88
|
+
|
|
89
|
+
Puis, utilise le fait que si $F$ est une primitive d'une fonction $f$, alors :
|
|
90
|
+
|
|
91
|
+
$$
|
|
92
|
+
\\int_{a}^b f(x) \\, \\mathrm{d}x = F(b)-F(a)
|
|
93
|
+
$$`;
|
|
94
|
+
};
|
|
95
|
+
const getCorrection = (identifiers) => {
|
|
96
|
+
const { lowerBound, upperBound, quadrinomial } = identifiers;
|
|
97
|
+
const quadrinomial1 = new Polynomial(quadrinomial);
|
|
98
|
+
const trinomial = quadrinomial1.derivate();
|
|
99
|
+
const integral = new IntegralNode(trinomial.toTree(), lowerBound.toTree(), upperBound.toTree(), "x").toTex();
|
|
100
|
+
return `Une primitive de la fonction $x\\mapsto ${trinomial
|
|
101
|
+
.toTree()
|
|
102
|
+
.toTex()}$ est :
|
|
103
|
+
|
|
104
|
+
$$
|
|
105
|
+
F(x) = ${quadrinomial1.toTree().toTex()}
|
|
106
|
+
$$
|
|
107
|
+
|
|
108
|
+
On a donc :
|
|
109
|
+
|
|
110
|
+
${alignTex([
|
|
111
|
+
["", integral],
|
|
112
|
+
["=", `F(${upperBound.frenchify()}) - F(${lowerBound.frenchify()})`],
|
|
113
|
+
["=", getAnswer(identifiers)],
|
|
114
|
+
])}
|
|
115
|
+
`;
|
|
116
|
+
};
|
|
78
117
|
const isAnswerValid = (ans, { answer }) => {
|
|
79
118
|
return numberVEA(ans, answer);
|
|
80
119
|
};
|
|
@@ -89,4 +128,5 @@ export const integralTrinomials = {
|
|
|
89
128
|
isAnswerValid,
|
|
90
129
|
subject: "Mathématiques",
|
|
91
130
|
getQuestionFromIdentifiers,
|
|
131
|
+
hasHintAndCorrection: true,
|
|
92
132
|
};
|
|
@@ -99,7 +99,7 @@ const isAnswerValid = (ans, { nb, powers, signs, isLog10 }) => {
|
|
|
99
99
|
export const log10SumSimplifying = {
|
|
100
100
|
id: "log10SumSimplifying",
|
|
101
101
|
connector: "=",
|
|
102
|
-
label: "
|
|
102
|
+
label: "Simplifier une somme de logarithmes décimaux",
|
|
103
103
|
isSingleStep: true,
|
|
104
104
|
generator: (nb) => getDistinctQuestions(() => getLog10SumSimplifyingQuestion({ isLog10: true }), nb),
|
|
105
105
|
qcmTimer: 60,
|
|
@@ -112,7 +112,7 @@ export const log10SumSimplifying = {
|
|
|
112
112
|
export const logSumSimplifying = {
|
|
113
113
|
id: "logSumSimplifying",
|
|
114
114
|
connector: "=",
|
|
115
|
-
label: "
|
|
115
|
+
label: "Simplifier une somme de logarithmes népériens",
|
|
116
116
|
isSingleStep: true,
|
|
117
117
|
generator: (nb) => getDistinctQuestions(() => getLog10SumSimplifyingQuestion({ isLog10: false }), nb),
|
|
118
118
|
qcmTimer: 60,
|
|
@@ -129,7 +129,7 @@ const options = [
|
|
|
129
129
|
];
|
|
130
130
|
export const powerEquation = {
|
|
131
131
|
id: "powerEquation",
|
|
132
|
-
label: "Résoudre une équation
|
|
132
|
+
label: "Résoudre une équation du type $a^x = b$",
|
|
133
133
|
isSingleStep: true,
|
|
134
134
|
generator: (nb, opts) => getDistinctQuestions(() => getPowerEquationQuestion(opts), nb),
|
|
135
135
|
qcmTimer: 60,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractVectorFromParametricLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/parametric/extractVectorFromParametricLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"extractVectorFromParametricLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/parametric/extractVectorFromParametricLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAgHF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAmBjE,CAAC"}
|
|
@@ -33,29 +33,33 @@ où $t\\in \\mathbb{R}$.
|
|
|
33
33
|
Donner les coordonnées d'un vecteur directeur de la droite $d$.
|
|
34
34
|
`;
|
|
35
35
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
36
|
+
const getHint = () => {
|
|
37
|
+
return `Dans un repère de l'espace, la droite $d$ passant par le point $A(x_0; y_0; z_0)$ et de vecteur directeur $\\overrightarrow{u}(a,b,c)$ a pour représentation paramétrique :
|
|
38
|
+
|
|
39
|
+
$$
|
|
40
|
+
\\left\\{\\begin{matrix}
|
|
41
|
+
x=x_0 + at \\\\
|
|
42
|
+
y=y_0 + bt \\\\
|
|
43
|
+
z=z_0 + ct
|
|
44
|
+
\\end{matrix}
|
|
45
|
+
\\right.
|
|
46
|
+
$$`;
|
|
47
|
+
};
|
|
48
|
+
const getCorrection = (identifiers) => {
|
|
49
|
+
const { startPoint, vector } = identifiers;
|
|
50
|
+
return `Dans un repère de l'espace, la droite $d$ passant par le point $A(x_0; y_0; z_0)$ et de vecteur directeur $\\overrightarrow{u}(a,b,c)$ a pour représentation paramétrique :
|
|
51
|
+
|
|
52
|
+
$$
|
|
53
|
+
\\left\\{\\begin{matrix}
|
|
54
|
+
x=x_0 + at \\\\
|
|
55
|
+
y=y_0 + bt \\\\
|
|
56
|
+
z=z_0 + ct
|
|
57
|
+
\\end{matrix}
|
|
58
|
+
\\right.
|
|
59
|
+
$$
|
|
60
|
+
|
|
61
|
+
Ici, la droite $d$ passe donc par le point $A(${startPoint[0]}; ${startPoint[1]}; ${startPoint[2]})$ et a pour vecteur directeur $\\overrightarrow{u}(${vector[0]}; ${vector[1]}; ${vector[2]})$.`;
|
|
62
|
+
};
|
|
59
63
|
const getKeys = () => {
|
|
60
64
|
return ["semicolon"];
|
|
61
65
|
};
|
|
@@ -87,8 +91,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
87
91
|
keys: getKeys(identifiers),
|
|
88
92
|
answerFormat: "tex",
|
|
89
93
|
identifiers,
|
|
90
|
-
|
|
91
|
-
|
|
94
|
+
hint: getHint(identifiers),
|
|
95
|
+
correction: getCorrection(identifiers),
|
|
92
96
|
};
|
|
93
97
|
return question;
|
|
94
98
|
};
|
|
@@ -107,5 +111,6 @@ export const extractVectorFromParametricLine = {
|
|
|
107
111
|
// getCorrection,
|
|
108
112
|
getAnswer,
|
|
109
113
|
getInstruction,
|
|
114
|
+
hasHintAndCorrection: true,
|
|
110
115
|
getQuestionFromIdentifiers,
|
|
111
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointFromParametricLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/parametric/pointFromParametricLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"pointFromParametricLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/parametric/pointFromParametricLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAerC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkJF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAoBzD,CAAC"}
|