math-exercises 2.0.34 → 2.0.36
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/calculLitteral/simplifying/distributeAndSimplify.d.ts +14 -0
- package/lib/exercises/calculLitteral/simplifying/distributeAndSimplify.d.ts.map +1 -0
- package/lib/exercises/calculLitteral/simplifying/distributeAndSimplify.js +67 -0
- package/lib/exercises/calculLitteral/simplifying/index.d.ts +1 -0
- package/lib/exercises/calculLitteral/simplifying/index.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/simplifying/index.js +1 -0
- package/lib/exercises/equaDiff/equaDiffCheckSolutionFirstOrder.d.ts +10 -0
- package/lib/exercises/equaDiff/equaDiffCheckSolutionFirstOrder.d.ts.map +1 -0
- package/lib/exercises/equaDiff/equaDiffCheckSolutionFirstOrder.js +101 -0
- package/lib/exercises/equaDiff/index.d.ts +1 -0
- package/lib/exercises/equaDiff/index.d.ts.map +1 -1
- package/lib/exercises/equaDiff/index.js +1 -0
- package/lib/exercises/exercise.d.ts +1 -0
- package/lib/exercises/exercise.d.ts.map +1 -1
- package/lib/exercises/functions/trinoms/factorizedFormFromRoots.d.ts +8 -0
- package/lib/exercises/functions/trinoms/factorizedFormFromRoots.d.ts.map +1 -0
- package/lib/exercises/functions/trinoms/factorizedFormFromRoots.js +67 -0
- package/lib/exercises/functions/trinoms/index.d.ts +5 -0
- package/lib/exercises/functions/trinoms/index.d.ts.map +1 -1
- package/lib/exercises/functions/trinoms/index.js +5 -0
- package/lib/exercises/functions/trinoms/rootsReading.d.ts +9 -0
- package/lib/exercises/functions/trinoms/rootsReading.d.ts.map +1 -0
- package/lib/exercises/functions/trinoms/rootsReading.js +67 -0
- package/lib/exercises/functions/trinoms/summitAbscissFromDevForm.d.ts +9 -0
- package/lib/exercises/functions/trinoms/summitAbscissFromDevForm.d.ts.map +1 -0
- package/lib/exercises/functions/trinoms/summitAbscissFromDevForm.js +54 -0
- package/lib/exercises/functions/trinoms/summitAbscissFromRoots.d.ts +9 -0
- package/lib/exercises/functions/trinoms/summitAbscissFromRoots.d.ts.map +1 -0
- package/lib/exercises/functions/trinoms/summitAbscissFromRoots.js +59 -0
- package/lib/exercises/functions/trinoms/summitReading.d.ts +9 -0
- package/lib/exercises/functions/trinoms/summitReading.d.ts.map +1 -0
- package/lib/exercises/functions/trinoms/summitReading.js +59 -0
- package/lib/exercises/geometry/vectors/equalCaracteristicFromGraph.d.ts +9 -0
- package/lib/exercises/geometry/vectors/equalCaracteristicFromGraph.d.ts.map +1 -0
- package/lib/exercises/geometry/vectors/equalCaracteristicFromGraph.js +194 -0
- package/lib/exercises/geometry/vectors/index.d.ts +1 -0
- package/lib/exercises/geometry/vectors/index.d.ts.map +1 -1
- package/lib/exercises/geometry/vectors/index.js +1 -0
- package/lib/exercises/matrices/index.d.ts +1 -0
- package/lib/exercises/matrices/index.d.ts.map +1 -1
- package/lib/exercises/matrices/index.js +2 -0
- package/lib/exercises/matrices/matrixGeneralTerm.d.ts +10 -0
- package/lib/exercises/matrices/matrixGeneralTerm.d.ts.map +1 -0
- package/lib/exercises/matrices/matrixGeneralTerm.js +57 -0
- package/lib/exercises/matrices/productCell.d.ts +10 -0
- package/lib/exercises/matrices/productCell.d.ts.map +1 -0
- package/lib/exercises/matrices/productCell.js +57 -0
- package/lib/exercises/probaStat/index.d.ts +3 -0
- package/lib/exercises/probaStat/index.d.ts.map +1 -1
- package/lib/exercises/probaStat/index.js +3 -0
- package/lib/exercises/probaStat/issuesCountingForCards.d.ts +7 -0
- package/lib/exercises/probaStat/issuesCountingForCards.d.ts.map +1 -0
- package/lib/exercises/probaStat/issuesCountingForCards.js +78 -0
- package/lib/exercises/probaStat/probaFromTableNoContext.d.ts +13 -0
- package/lib/exercises/probaStat/probaFromTableNoContext.d.ts.map +1 -0
- package/lib/exercises/probaStat/probaFromTableNoContext.js +115 -0
- package/lib/exercises/probaStat/probaFromTableWithContext.d.ts +13 -0
- package/lib/exercises/probaStat/probaFromTableWithContext.d.ts.map +1 -0
- package/lib/exercises/probaStat/probaFromTableWithContext.js +121 -0
- package/lib/exercises/python/index.d.ts +1 -0
- package/lib/exercises/python/index.d.ts.map +1 -0
- package/lib/exercises/python/index.js +1 -0
- package/lib/exercises/sequences/arithmetic/index.d.ts +4 -0
- package/lib/exercises/sequences/arithmetic/index.d.ts.map +1 -1
- package/lib/exercises/sequences/arithmetic/index.js +4 -0
- package/lib/exercises/sequences/arithmetic/recognizeArithmeticFromFirstTerms.d.ts +8 -0
- package/lib/exercises/sequences/arithmetic/recognizeArithmeticFromFirstTerms.d.ts.map +1 -0
- package/lib/exercises/sequences/arithmetic/recognizeArithmeticFromFirstTerms.js +71 -0
- package/lib/exercises/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts +8 -0
- package/lib/exercises/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts.map +1 -0
- package/lib/exercises/sequences/arithmetic/recognizeArithmeticFromGraph.js +87 -0
- package/lib/exercises/sequences/arithmetic/recognizeReasonFromFirstTerms.d.ts +8 -0
- package/lib/exercises/sequences/arithmetic/recognizeReasonFromFirstTerms.d.ts.map +1 -0
- package/lib/exercises/sequences/arithmetic/recognizeReasonFromFirstTerms.js +44 -0
- package/lib/exercises/sequences/arithmetic/recognizeReasonFromGraph.d.ts +8 -0
- package/lib/exercises/sequences/arithmetic/recognizeReasonFromGraph.d.ts.map +1 -0
- package/lib/exercises/sequences/arithmetic/recognizeReasonFromGraph.js +58 -0
- package/lib/exercises/utils/getDistinctQuestions.d.ts.map +1 -1
- package/lib/exercises/utils/getDistinctQuestions.js +1 -0
- package/lib/geogebra/geogebraConstructor.d.ts +2 -0
- package/lib/geogebra/geogebraConstructor.d.ts.map +1 -1
- package/lib/geogebra/geogebraConstructor.js +2 -0
- package/lib/index.d.ts +72 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/math/geometry/point.d.ts +1 -0
- package/lib/math/geometry/point.d.ts.map +1 -1
- package/lib/math/geometry/point.js +3 -0
- package/lib/math/matrices/matrix.d.ts +3 -0
- package/lib/math/matrices/matrix.d.ts.map +1 -1
- package/lib/math/matrices/matrix.js +10 -2
- package/lib/math/polynomials/trinom.d.ts +2 -0
- package/lib/math/polynomials/trinom.d.ts.map +1 -1
- package/lib/math/polynomials/trinom.js +32 -0
- package/lib/math/utils/random/randTupleInt.d.ts +1 -1
- package/lib/math/utils/random/randTupleInt.js +1 -1
- package/lib/math/utils/random/randfloat.d.ts +5 -0
- package/lib/math/utils/random/randfloat.d.ts.map +1 -0
- package/lib/math/utils/random/randfloat.js +18 -0
- package/lib/math/utils/sum.d.ts +8 -0
- package/lib/math/utils/sum.d.ts.map +1 -0
- package/lib/math/utils/sum.js +17 -0
- package/lib/tree/nodes/algebraicNode.d.ts +1 -0
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/powerNode.js +3 -1
- package/lib/utils/doWhile.d.ts +2 -0
- package/lib/utils/doWhile.d.ts.map +1 -0
- package/lib/utils/doWhile.js +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MathExercise } from "../../../exercises/exercise";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
firstTermIsAffine: boolean;
|
|
4
|
+
a: number;
|
|
5
|
+
b: number;
|
|
6
|
+
c: number;
|
|
7
|
+
d: number;
|
|
8
|
+
e: number;
|
|
9
|
+
f: number;
|
|
10
|
+
g: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const distributeAndSimplify: MathExercise<Identifiers>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=distributeAndSimplify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distributeAndSimplify.d.ts","sourceRoot":"","sources":["../../../../src/exercises/calculLitteral/simplifying/distributeAndSimplify.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAQlC,KAAK,WAAW,GAAG;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA2DF,eAAO,MAAM,qBAAqB,EAAE,YAAY,CAAC,WAAW,CAa3D,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distributeAndSimplify = void 0;
|
|
4
|
+
const exercise_1 = require("../../../exercises/exercise");
|
|
5
|
+
const getDistinctQuestions_1 = require("../../../exercises/utils/getDistinctQuestions");
|
|
6
|
+
const affine_1 = require("../../../math/polynomials/affine");
|
|
7
|
+
const randint_1 = require("../../../math/utils/random/randint");
|
|
8
|
+
const addNode_1 = require("../../../tree/nodes/operators/addNode");
|
|
9
|
+
const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
|
|
10
|
+
const coinFlip_1 = require("../../../utils/coinFlip");
|
|
11
|
+
//[a]|[b*(cx+d)] +- e*(fx+g)]
|
|
12
|
+
// c & f > 0
|
|
13
|
+
const getDistributeAndSimplifyQuestion = () => {
|
|
14
|
+
const firstTermIsAffine = (0, coinFlip_1.coinFlip)();
|
|
15
|
+
const a = (0, randint_1.randint)(-5, 6, [0]);
|
|
16
|
+
const b = (0, randint_1.randint)(-5, 6, [0]);
|
|
17
|
+
const c = (0, randint_1.randint)(1, 6);
|
|
18
|
+
const d = (0, randint_1.randint)(-5, 6, [0]);
|
|
19
|
+
const e = (0, randint_1.randint)(-5, 6, [0, 1]);
|
|
20
|
+
let f = 0;
|
|
21
|
+
do {
|
|
22
|
+
f = (0, randint_1.randint)(1, 6);
|
|
23
|
+
} while (b * c + e * f === 0);
|
|
24
|
+
const g = (0, randint_1.randint)(-5, 6, [0]);
|
|
25
|
+
const statement = new addNode_1.AddNode(firstTermIsAffine
|
|
26
|
+
? new multiplyNode_1.MultiplyNode(b.toTree(), new affine_1.Affine(c, d).toTree())
|
|
27
|
+
: a.toTree(), new multiplyNode_1.MultiplyNode(e.toTree(), new affine_1.Affine(f, g).toTree())).simplify();
|
|
28
|
+
const answer = firstTermIsAffine
|
|
29
|
+
? new affine_1.Affine(b * c + e * f, b * d + e * g).toTree().toTex()
|
|
30
|
+
: new affine_1.Affine(e * f, a + e * g).toTree().toTex();
|
|
31
|
+
const question = {
|
|
32
|
+
answer,
|
|
33
|
+
instruction: `Développer et réduire : $${statement.toTex()}$`,
|
|
34
|
+
keys: ["x"],
|
|
35
|
+
answerFormat: "tex",
|
|
36
|
+
identifiers: { firstTermIsAffine, a, b, c, d, e, f, g },
|
|
37
|
+
};
|
|
38
|
+
return question;
|
|
39
|
+
};
|
|
40
|
+
const getPropositions = (n, { answer }) => {
|
|
41
|
+
const propositions = [];
|
|
42
|
+
(0, exercise_1.addValidProp)(propositions, answer);
|
|
43
|
+
while (propositions.length < n) {
|
|
44
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, affine_1.AffineConstructor.random().toTree().toTex());
|
|
45
|
+
}
|
|
46
|
+
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
47
|
+
};
|
|
48
|
+
const isAnswerValid = (ans, { answer, firstTermIsAffine, a, b, c, d, e, f, g }) => {
|
|
49
|
+
const answerNode = firstTermIsAffine
|
|
50
|
+
? new affine_1.Affine(b * c + e * f, b * d + e * g).toTree()
|
|
51
|
+
: new affine_1.Affine(e * f, a + e * g).toTree();
|
|
52
|
+
const texs = answerNode.toAllValidTexs();
|
|
53
|
+
return texs.includes(ans);
|
|
54
|
+
};
|
|
55
|
+
exports.distributeAndSimplify = {
|
|
56
|
+
id: "distributeAndSimplify",
|
|
57
|
+
connector: "=",
|
|
58
|
+
label: "Développer et réduire une expression",
|
|
59
|
+
levels: ["4ème", "3ème", "2nde"],
|
|
60
|
+
isSingleStep: true,
|
|
61
|
+
sections: ["Calcul littéral"],
|
|
62
|
+
generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getDistributeAndSimplifyQuestion, nb),
|
|
63
|
+
qcmTimer: 60,
|
|
64
|
+
freeTimer: 60,
|
|
65
|
+
getPropositions,
|
|
66
|
+
isAnswerValid,
|
|
67
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/calculLitteral/simplifying/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/calculLitteral/simplifying/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
|
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./evaluateExpression"), exports);
|
|
18
18
|
__exportStar(require("./reduceExpression"), exports);
|
|
19
|
+
__exportStar(require("./distributeAndSimplify"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MathExercise } from "../../exercises/exercise";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
type: string;
|
|
4
|
+
d: number;
|
|
5
|
+
e: number;
|
|
6
|
+
f: number | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare const equaDiffCheckSolutionFirstOrder: MathExercise<Identifiers>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=equaDiffCheckSolutionFirstOrder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equaDiffCheckSolutionFirstOrder.d.ts","sourceRoot":"","sources":["../../../src/exercises/equaDiff/equaDiffCheckSolutionFirstOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAgBlC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvB,CAAC;AAkHF,eAAO,MAAM,+BAA+B,EAAE,YAAY,CAAC,WAAW,CAcrE,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.equaDiffCheckSolutionFirstOrder = void 0;
|
|
4
|
+
const exercise_1 = require("../../exercises/exercise");
|
|
5
|
+
const getDistinctQuestions_1 = require("../../exercises/utils/getDistinctQuestions");
|
|
6
|
+
const affine_1 = require("../../math/polynomials/affine");
|
|
7
|
+
const trinom_1 = require("../../math/polynomials/trinom");
|
|
8
|
+
const randint_1 = require("../../math/utils/random/randint");
|
|
9
|
+
const equalNode_1 = require("../../tree/nodes/equations/equalNode");
|
|
10
|
+
const expNode_1 = require("../../tree/nodes/functions/expNode");
|
|
11
|
+
const addNode_1 = require("../../tree/nodes/operators/addNode");
|
|
12
|
+
const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
|
|
13
|
+
const variableNode_1 = require("../../tree/nodes/variables/variableNode");
|
|
14
|
+
const coinFlip_1 = require("../../utils/coinFlip");
|
|
15
|
+
const doWhile_1 = require("../../utils/doWhile");
|
|
16
|
+
const random_1 = require("../../utils/random");
|
|
17
|
+
const getEquaDiffCheckSolutionFirstOrderQuestion = () => {
|
|
18
|
+
//types : constante, affine, tirnom, exp
|
|
19
|
+
const type = (0, random_1.random)(["affine", "trinom", "exp"]);
|
|
20
|
+
const isSolution = (0, coinFlip_1.coinFlip)();
|
|
21
|
+
const answer = isSolution ? "Oui" : "Non";
|
|
22
|
+
let equaDiff;
|
|
23
|
+
let randomFunc;
|
|
24
|
+
let d;
|
|
25
|
+
let e;
|
|
26
|
+
let f;
|
|
27
|
+
switch (type) {
|
|
28
|
+
case "affine":
|
|
29
|
+
// y = y' + dx+e, alors y = ax+b
|
|
30
|
+
//ax+b = a + dx + e
|
|
31
|
+
//a = d et e = b-a
|
|
32
|
+
const affineSolution = affine_1.AffineConstructor.random();
|
|
33
|
+
d = affineSolution.a;
|
|
34
|
+
e = affineSolution.b - affineSolution.a;
|
|
35
|
+
const affine = new affine_1.Affine(d, e);
|
|
36
|
+
equaDiff = new equalNode_1.EqualNode(new variableNode_1.VariableNode("y"), new addNode_1.AddNode(new variableNode_1.VariableNode("y'"), affine.toTree()));
|
|
37
|
+
randomFunc = isSolution
|
|
38
|
+
? affineSolution.toTree()
|
|
39
|
+
: (0, doWhile_1.doWhile)(() => affine_1.AffineConstructor.random(), (P) => P.equals(affineSolution)).toTree();
|
|
40
|
+
break;
|
|
41
|
+
case "trinom":
|
|
42
|
+
/**y = y' + dx^2+ex+f, alors y = ax^2+bx+c */
|
|
43
|
+
const trinomSolution = trinom_1.TrinomConstructor.random();
|
|
44
|
+
d = trinomSolution.a;
|
|
45
|
+
e = trinomSolution.b - 2 * trinomSolution.a;
|
|
46
|
+
f = trinomSolution.c - trinomSolution.b;
|
|
47
|
+
const trinom = new trinom_1.Trinom(d, e, f);
|
|
48
|
+
equaDiff = new equalNode_1.EqualNode(new variableNode_1.VariableNode("y"), new addNode_1.AddNode(new variableNode_1.VariableNode("y'"), trinom.toTree()));
|
|
49
|
+
randomFunc = isSolution
|
|
50
|
+
? trinomSolution.toTree()
|
|
51
|
+
: (0, doWhile_1.doWhile)(() => trinom_1.TrinomConstructor.random(), (P) => P.equals(trinomSolution)).toTree();
|
|
52
|
+
break;
|
|
53
|
+
case "exp":
|
|
54
|
+
/**y = y' +d exp(e*x), alors y = a exp(e*x) */
|
|
55
|
+
//a exp(ex) = ae*exp(ex) + dexp(e*x)
|
|
56
|
+
//a = ae + d
|
|
57
|
+
//d/(1-e) == a
|
|
58
|
+
e = (0, randint_1.randint)(-4, 5, [0, 1]);
|
|
59
|
+
const a = (0, randint_1.randint)(-5, 5, [0]);
|
|
60
|
+
d = a - a * e;
|
|
61
|
+
const expSolution = new multiplyNode_1.MultiplyNode(a.toTree(), new expNode_1.ExpNode(new multiplyNode_1.MultiplyNode(e.toTree(), new variableNode_1.VariableNode("x"))));
|
|
62
|
+
const exp = new multiplyNode_1.MultiplyNode(d.toTree(), new expNode_1.ExpNode(new multiplyNode_1.MultiplyNode(e.toTree(), new variableNode_1.VariableNode("x"))));
|
|
63
|
+
equaDiff = new equalNode_1.EqualNode(new variableNode_1.VariableNode("y"), new addNode_1.AddNode(new variableNode_1.VariableNode("y'"), exp));
|
|
64
|
+
randomFunc = isSolution
|
|
65
|
+
? expSolution
|
|
66
|
+
: (0, doWhile_1.doWhile)(() => new multiplyNode_1.MultiplyNode((0, randint_1.randint)(-5, 5, [0]).toTree(), new expNode_1.ExpNode(new multiplyNode_1.MultiplyNode(e.toTree(), new variableNode_1.VariableNode("x")))), (P) => P.equals(expSolution));
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
const question = {
|
|
70
|
+
answer,
|
|
71
|
+
instruction: `Soit l'équation différentielle suivante : $${equaDiff.toTex()}$. La fonction $y = ${randomFunc.toTex()}$ est-elle solution de cette équation ?`,
|
|
72
|
+
keys: [],
|
|
73
|
+
answerFormat: "tex",
|
|
74
|
+
identifiers: { type, d, e, f },
|
|
75
|
+
};
|
|
76
|
+
return question;
|
|
77
|
+
};
|
|
78
|
+
const getPropositions = (n, { answer }) => {
|
|
79
|
+
const propositions = [];
|
|
80
|
+
(0, exercise_1.addValidProp)(propositions, answer, "raw");
|
|
81
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, "Oui", "raw");
|
|
82
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, "Non", "raw");
|
|
83
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, "On ne peut pas savoir", "raw");
|
|
84
|
+
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
85
|
+
};
|
|
86
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
87
|
+
return ans === answer;
|
|
88
|
+
};
|
|
89
|
+
exports.equaDiffCheckSolutionFirstOrder = {
|
|
90
|
+
id: "equaDiffCheckSolutionFirstOrder",
|
|
91
|
+
label: "Vérifier si une fonction est solution d'une équation différentielle du premier ordre",
|
|
92
|
+
levels: ["TermTech", "MathComp", "TermSpé"],
|
|
93
|
+
isSingleStep: true,
|
|
94
|
+
sections: ["Équations différentielles"],
|
|
95
|
+
generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getEquaDiffCheckSolutionFirstOrderQuestion, nb),
|
|
96
|
+
qcmTimer: 60,
|
|
97
|
+
freeTimer: 60,
|
|
98
|
+
getPropositions,
|
|
99
|
+
isAnswerValid,
|
|
100
|
+
answerType: "QCM",
|
|
101
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exercises/equaDiff/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exercises/equaDiff/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC"}
|
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./equaDiffGeneralForme"), exports);
|
|
18
18
|
__exportStar(require("./equaDiffGeneralFormeWithIC"), exports);
|
|
19
|
+
__exportStar(require("./equaDiffCheckSolutionFirstOrder"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAI3C,eAAO,MAAM,YAAY,UAChB,WAAW,EAAE,aACT,MAAM,WACT,KAAK,GAAG,KAAK,SAQtB,CAAC;AACF,eAAO,MAAM,YAAY,UAChB,WAAW,EAAE,aACT,MAAM,WACT,KAAK,GAAG,KAAK,SAQtB,CAAC;AACF,eAAO,MAAM,iBAAiB,UACrB,WAAW,EAAE,aACT,MAAM,WACT,KAAK,GAAG,KAAK,SAUtB,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,WAAW,EAAE,KAAK,MAAM,kBAE3D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAElC,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;CACvB,CAAC;AACF,MAAM,WAAW,QAAQ,CAAC,YAAY,GAAG,EAAE;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factorizedFormFromRoots.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/factorizedFormFromRoots.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAUlC,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA8EF,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,WAAW,CAa7D,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.factorizedFormFromRoots = void 0;
|
|
4
|
+
const exercise_1 = require("../../../exercises/exercise");
|
|
5
|
+
const getDistinctQuestions_1 = require("../../../exercises/utils/getDistinctQuestions");
|
|
6
|
+
const randint_1 = require("../../../math/utils/random/randint");
|
|
7
|
+
const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
|
|
8
|
+
const powerNode_1 = require("../../../tree/nodes/operators/powerNode");
|
|
9
|
+
const substractNode_1 = require("../../../tree/nodes/operators/substractNode");
|
|
10
|
+
const variableNode_1 = require("../../../tree/nodes/variables/variableNode");
|
|
11
|
+
const probaFlip_1 = require("../../../utils/probaFlip");
|
|
12
|
+
const getAnswer = (roots, a) => {
|
|
13
|
+
const isSingleRoot = roots.length === 1;
|
|
14
|
+
return isSingleRoot
|
|
15
|
+
? new multiplyNode_1.MultiplyNode(a.toTree(), new powerNode_1.SquareNode(new substractNode_1.SubstractNode(new variableNode_1.VariableNode("x"), roots[0].toTree()))).simplify({ keepPowers: true })
|
|
16
|
+
: new multiplyNode_1.MultiplyNode(new multiplyNode_1.MultiplyNode(a.toTree(), new substractNode_1.SubstractNode(new variableNode_1.VariableNode("x"), roots[0].toTree())), new substractNode_1.SubstractNode(new variableNode_1.VariableNode("x"), roots[1].toTree())).simplify();
|
|
17
|
+
};
|
|
18
|
+
const getFactorizedFormFromRootsQuestion = () => {
|
|
19
|
+
const a = (0, randint_1.randint)(-10, 10, [0]);
|
|
20
|
+
const firstRoot = (0, randint_1.randint)(-10, 10);
|
|
21
|
+
const secondRoot = (0, randint_1.randint)(-10, 10, [firstRoot]);
|
|
22
|
+
const isSingleRoot = (0, probaFlip_1.probaFlip)(0.3);
|
|
23
|
+
const roots = isSingleRoot
|
|
24
|
+
? [firstRoot]
|
|
25
|
+
: [firstRoot, secondRoot].sort((a, b) => a - b);
|
|
26
|
+
const answer = getAnswer(roots, a);
|
|
27
|
+
const answerTex = answer.toTex();
|
|
28
|
+
const question = {
|
|
29
|
+
answer: answerTex,
|
|
30
|
+
instruction: `Soit $f(x) = ax^2 + bx + c$ un polynôme du second degré avec $a = ${a}$ et qui a ${roots.length === 1
|
|
31
|
+
? `une racine : $${roots[0]}$`
|
|
32
|
+
: `deux racines : $${roots[0]}$ et $${roots[1]}$`}. Déterminer la forme factorisée de $f$.`,
|
|
33
|
+
keys: ["x"],
|
|
34
|
+
answerFormat: "tex",
|
|
35
|
+
identifiers: { a, roots },
|
|
36
|
+
};
|
|
37
|
+
return question;
|
|
38
|
+
};
|
|
39
|
+
const getPropositions = (n, { answer, a, roots }) => {
|
|
40
|
+
const propositions = [];
|
|
41
|
+
(0, exercise_1.addValidProp)(propositions, answer);
|
|
42
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, getAnswer(roots.map((r) => -r), a).toTex());
|
|
43
|
+
while (propositions.length < n) {
|
|
44
|
+
const x1 = (0, randint_1.randint)(-10, 10);
|
|
45
|
+
const x2 = (0, randint_1.randint)(-10, 10, [x1]);
|
|
46
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, getAnswer([x1, x2].sort((a, b) => a - b), (0, randint_1.randint)(-10, 10, [0])).toTex());
|
|
47
|
+
}
|
|
48
|
+
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
49
|
+
};
|
|
50
|
+
const isAnswerValid = (ans, { answer, a, roots }) => {
|
|
51
|
+
const answerNode = getAnswer(roots, a);
|
|
52
|
+
const texs = answerNode.toAllValidTexs();
|
|
53
|
+
return texs.includes(ans);
|
|
54
|
+
};
|
|
55
|
+
exports.factorizedFormFromRoots = {
|
|
56
|
+
id: "factorizedFormFromRoots",
|
|
57
|
+
connector: "=",
|
|
58
|
+
label: "Déterminer la forme factorisée en connaissant les racines",
|
|
59
|
+
levels: ["1rePro", "1reSpé"],
|
|
60
|
+
isSingleStep: true,
|
|
61
|
+
sections: ["Second degré"],
|
|
62
|
+
generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFactorizedFormFromRootsQuestion, nb),
|
|
63
|
+
qcmTimer: 60,
|
|
64
|
+
freeTimer: 60,
|
|
65
|
+
getPropositions,
|
|
66
|
+
isAnswerValid,
|
|
67
|
+
};
|
|
@@ -9,4 +9,9 @@ export * from "./rootsFromDevForm";
|
|
|
9
9
|
export * from "./rootsFromFactorizedForm";
|
|
10
10
|
export * from "./variationsFromAlgebricForm";
|
|
11
11
|
export * from "./secondDegreeInequation";
|
|
12
|
+
export * from "./rootsReading";
|
|
13
|
+
export * from "./factorizedFormFromRoots";
|
|
14
|
+
export * from "./summitReading";
|
|
15
|
+
export * from "./summitAbscissFromRoots";
|
|
16
|
+
export * from "./summitAbscissFromDevForm";
|
|
12
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}
|
|
@@ -25,3 +25,8 @@ __exportStar(require("./rootsFromDevForm"), exports);
|
|
|
25
25
|
__exportStar(require("./rootsFromFactorizedForm"), exports);
|
|
26
26
|
__exportStar(require("./variationsFromAlgebricForm"), exports);
|
|
27
27
|
__exportStar(require("./secondDegreeInequation"), exports);
|
|
28
|
+
__exportStar(require("./rootsReading"), exports);
|
|
29
|
+
__exportStar(require("./factorizedFormFromRoots"), exports);
|
|
30
|
+
__exportStar(require("./summitReading"), exports);
|
|
31
|
+
__exportStar(require("./summitAbscissFromRoots"), exports);
|
|
32
|
+
__exportStar(require("./summitAbscissFromDevForm"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rootsReading.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/rootsReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAOlC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAuDF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,WAAW,CAWlD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rootsReading = void 0;
|
|
4
|
+
const exercise_1 = require("../../../exercises/exercise");
|
|
5
|
+
const getDistinctQuestions_1 = require("../../../exercises/utils/getDistinctQuestions");
|
|
6
|
+
const colors_1 = require("../../../geogebra/colors");
|
|
7
|
+
const geogebraConstructor_1 = require("../../../geogebra/geogebraConstructor");
|
|
8
|
+
const trinom_1 = require("../../../math/polynomials/trinom");
|
|
9
|
+
const randint_1 = require("../../../math/utils/random/randint");
|
|
10
|
+
const getRootsReadingQuestion = () => {
|
|
11
|
+
const trinom = trinom_1.TrinomConstructor.randomNiceRoots((0, randint_1.randint)(1, 3));
|
|
12
|
+
const roots = trinom.getRoots();
|
|
13
|
+
const commands = [
|
|
14
|
+
`f(x) = ${trinom.toString()}`,
|
|
15
|
+
`SetColor(f, "${(0, colors_1.randomColor)()}")`,
|
|
16
|
+
];
|
|
17
|
+
const ggb = new geogebraConstructor_1.GeogebraConstructor(commands, {
|
|
18
|
+
isGridSimple: true,
|
|
19
|
+
isAxesRatioFixed: false,
|
|
20
|
+
gridDistance: false,
|
|
21
|
+
});
|
|
22
|
+
const answer = roots.length === 1 ? roots[0].toString() : roots.join("\\text{ et }");
|
|
23
|
+
const question = {
|
|
24
|
+
answer,
|
|
25
|
+
instruction: `Déterminer graphiquement le ou les racine(s) du polynôme du second degré représenté ci-dessous : `,
|
|
26
|
+
keys: ["et", "aucun"],
|
|
27
|
+
answerFormat: "tex",
|
|
28
|
+
commands: ggb.commands,
|
|
29
|
+
options: ggb.getOptions(),
|
|
30
|
+
coords: trinom.getCoords(),
|
|
31
|
+
identifiers: { a: trinom.a, b: trinom.b, c: trinom.c },
|
|
32
|
+
};
|
|
33
|
+
return question;
|
|
34
|
+
};
|
|
35
|
+
const getPropositions = (n, { answer }) => {
|
|
36
|
+
const propositions = [];
|
|
37
|
+
(0, exercise_1.addValidProp)(propositions, answer);
|
|
38
|
+
while (propositions.length < n) {
|
|
39
|
+
const x1 = (0, randint_1.randint)(-10, 10);
|
|
40
|
+
const x2 = (0, randint_1.randint)(-10, 10, [x1]);
|
|
41
|
+
const fakeRoots = x1 > x2 ? [x2, x1] : [x1, x2];
|
|
42
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, fakeRoots.join("\\text{ et }"));
|
|
43
|
+
}
|
|
44
|
+
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
45
|
+
};
|
|
46
|
+
const isAnswerValid = (ans, { answer, a, b, c }) => {
|
|
47
|
+
const roots = new trinom_1.Trinom(a, b, c).getRoots();
|
|
48
|
+
const studentNumbers = ans
|
|
49
|
+
.split("\\text{ et }")
|
|
50
|
+
.map((n) => Number(n.replace(",", ".")))
|
|
51
|
+
.filter((n) => !isNaN(n))
|
|
52
|
+
.sort((a, b) => a - b);
|
|
53
|
+
return (!!studentNumbers.length &&
|
|
54
|
+
studentNumbers.every((nb, index) => Math.abs(nb - roots[index]) < 0.2));
|
|
55
|
+
};
|
|
56
|
+
exports.rootsReading = {
|
|
57
|
+
id: "rootsReading",
|
|
58
|
+
label: "Lire graphiquement les racines d'un trinôme",
|
|
59
|
+
levels: ["1reSpé", "1rePro"],
|
|
60
|
+
isSingleStep: true,
|
|
61
|
+
sections: ["Second degré"],
|
|
62
|
+
generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getRootsReadingQuestion, nb),
|
|
63
|
+
qcmTimer: 60,
|
|
64
|
+
freeTimer: 60,
|
|
65
|
+
getPropositions,
|
|
66
|
+
isAnswerValid,
|
|
67
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MathExercise } from "../../../exercises/exercise";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
a: number;
|
|
4
|
+
b: number;
|
|
5
|
+
c: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const summitAbscissFromDevForm: MathExercise<Identifiers>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=summitAbscissFromDevForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summitAbscissFromDevForm.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/summitAbscissFromDevForm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAOlC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA8CF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,WAAW,CAc9D,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.summitAbscissFromDevForm = void 0;
|
|
4
|
+
const exercise_1 = require("../../../exercises/exercise");
|
|
5
|
+
const getDistinctQuestions_1 = require("../../../exercises/utils/getDistinctQuestions");
|
|
6
|
+
const rational_1 = require("../../../math/numbers/rationals/rational");
|
|
7
|
+
const trinom_1 = require("../../../math/polynomials/trinom");
|
|
8
|
+
const randint_1 = require("../../../math/utils/random/randint");
|
|
9
|
+
const getSummitAbscissFromDevFormQuestion = () => {
|
|
10
|
+
const trinom = trinom_1.TrinomConstructor.random();
|
|
11
|
+
const alpha = trinom.getAlphaNode();
|
|
12
|
+
const answer = alpha.toTex();
|
|
13
|
+
const question = {
|
|
14
|
+
answer,
|
|
15
|
+
instruction: `Soit $f(x) = ${trinom
|
|
16
|
+
.toTree()
|
|
17
|
+
.toTex()}$ une fonction polynôme du second degré. Quelle est l'abscisse du sommet de la parabole représentant $f$ ?`,
|
|
18
|
+
keys: [],
|
|
19
|
+
answerFormat: "tex",
|
|
20
|
+
identifiers: { a: trinom.a, b: trinom.b, c: trinom.c },
|
|
21
|
+
};
|
|
22
|
+
return question;
|
|
23
|
+
};
|
|
24
|
+
const getPropositions = (n, { answer, a, b, c }) => {
|
|
25
|
+
const propositions = [];
|
|
26
|
+
(0, exercise_1.addValidProp)(propositions, answer);
|
|
27
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, new rational_1.Rational(-b, a).simplify().toTree().toTex());
|
|
28
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, new rational_1.Rational(b, a).simplify().toTree().toTex());
|
|
29
|
+
while (propositions.length < n) {
|
|
30
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, (0, randint_1.randint)(-10, 10) + "");
|
|
31
|
+
}
|
|
32
|
+
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
33
|
+
};
|
|
34
|
+
const isAnswerValid = (ans, { a, b, c }) => {
|
|
35
|
+
const node = new rational_1.Rational(-b, 2 * a).simplify().toTree();
|
|
36
|
+
const texs = node.toAllValidTexs({
|
|
37
|
+
allowFractionToDecimal: true,
|
|
38
|
+
allowMinusAnywhereInFraction: true,
|
|
39
|
+
});
|
|
40
|
+
return texs.includes(ans);
|
|
41
|
+
};
|
|
42
|
+
exports.summitAbscissFromDevForm = {
|
|
43
|
+
id: "summitAbscissFromDevForm",
|
|
44
|
+
connector: "=",
|
|
45
|
+
label: "Déterminer l'abscisse du sommet d'une parabole en connaissant la forme développée",
|
|
46
|
+
levels: ["1rePro", "1reSpé", "1reTech"],
|
|
47
|
+
isSingleStep: true,
|
|
48
|
+
sections: ["Second degré"],
|
|
49
|
+
generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getSummitAbscissFromDevFormQuestion, nb),
|
|
50
|
+
qcmTimer: 60,
|
|
51
|
+
freeTimer: 60,
|
|
52
|
+
getPropositions,
|
|
53
|
+
isAnswerValid,
|
|
54
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MathExercise } from "../../../exercises/exercise";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
a: number;
|
|
4
|
+
b: number;
|
|
5
|
+
c: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const summitAbscissFromRoots: MathExercise<Identifiers>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=summitAbscissFromRoots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summitAbscissFromRoots.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/summitAbscissFromRoots.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAOlC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAgDF,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,WAAW,CAc5D,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.summitAbscissFromRoots = void 0;
|
|
4
|
+
const exercise_1 = require("../../../exercises/exercise");
|
|
5
|
+
const getDistinctQuestions_1 = require("../../../exercises/utils/getDistinctQuestions");
|
|
6
|
+
const rational_1 = require("../../../math/numbers/rationals/rational");
|
|
7
|
+
const trinom_1 = require("../../../math/polynomials/trinom");
|
|
8
|
+
const randint_1 = require("../../../math/utils/random/randint");
|
|
9
|
+
const getSummitAbscissFromRootsQuestion = () => {
|
|
10
|
+
const trinom = trinom_1.TrinomConstructor.randomNiceRoots(2);
|
|
11
|
+
const roots = trinom.getRoots();
|
|
12
|
+
console.log("roots", roots);
|
|
13
|
+
const answer = new rational_1.Rational(roots[0] + roots[1], 2)
|
|
14
|
+
.simplify()
|
|
15
|
+
.toTree()
|
|
16
|
+
.toTex();
|
|
17
|
+
const question = {
|
|
18
|
+
answer,
|
|
19
|
+
instruction: `Soit $f(x) = ax^2+bx+c$ une fonction polynôme du second degé, dont les racines sont $${roots[0]}$ et $${roots[1]}$. Quelle est l'abscisse du sommet de la parabole représentant $f$ ?`,
|
|
20
|
+
keys: [],
|
|
21
|
+
answerFormat: "tex",
|
|
22
|
+
identifiers: { a: trinom.a, b: trinom.b, c: trinom.c },
|
|
23
|
+
};
|
|
24
|
+
return question;
|
|
25
|
+
};
|
|
26
|
+
const getPropositions = (n, { answer, a, b, c }) => {
|
|
27
|
+
const propositions = [];
|
|
28
|
+
(0, exercise_1.addValidProp)(propositions, answer);
|
|
29
|
+
const roots = new trinom_1.Trinom(a, b, c).getRoots();
|
|
30
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, roots[0] + roots[1] + "");
|
|
31
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, new rational_1.Rational(roots[0] - roots[1], 2).simplify().toTree().toTex());
|
|
32
|
+
while (propositions.length < n) {
|
|
33
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, (0, randint_1.randint)(-10, 11) + "");
|
|
34
|
+
}
|
|
35
|
+
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
36
|
+
};
|
|
37
|
+
const isAnswerValid = (ans, { answer, a, b, c }) => {
|
|
38
|
+
const trinom = new trinom_1.Trinom(a, b, c);
|
|
39
|
+
console.log(ans, answer);
|
|
40
|
+
const node = trinom.getAlphaNode();
|
|
41
|
+
const texs = node.toAllValidTexs({
|
|
42
|
+
allowFractionToDecimal: true,
|
|
43
|
+
allowMinusAnywhereInFraction: true,
|
|
44
|
+
});
|
|
45
|
+
return texs.includes(ans);
|
|
46
|
+
};
|
|
47
|
+
exports.summitAbscissFromRoots = {
|
|
48
|
+
id: "summitAbscissFromRoots",
|
|
49
|
+
connector: "=",
|
|
50
|
+
label: "Déterminer l'abscisse du sommet d'une parabole en connaissant ses racines",
|
|
51
|
+
levels: ["1reSpé", "1rePro", "1reTech"],
|
|
52
|
+
isSingleStep: true,
|
|
53
|
+
sections: ["Second degré"],
|
|
54
|
+
generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getSummitAbscissFromRootsQuestion, nb),
|
|
55
|
+
qcmTimer: 60,
|
|
56
|
+
freeTimer: 60,
|
|
57
|
+
getPropositions,
|
|
58
|
+
isAnswerValid,
|
|
59
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summitReading.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/trinoms/summitReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAQlC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAsDF,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,WAAW,CAWnD,CAAC"}
|