math-exercises 3.0.24 → 3.0.26
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/exercise.d.ts +1 -0
- package/lib/exercises/exercise.d.ts.map +1 -1
- package/lib/exercises/math/calcul/decimals/multiplyDecimalByTens.d.ts.map +1 -1
- package/lib/exercises/math/calcul/decimals/multiplyDecimalByTens.js +40 -15
- package/lib/exercises/math/calcul/fractions/fractionAndIntegerDivision.js +1 -1
- package/lib/exercises/math/calcul/fractions/fractionAndIntegerProduct.js +1 -1
- package/lib/exercises/math/calculLitteral/equation/equationType1Exercise.js +1 -1
- package/lib/exercises/math/calculLitteral/equation/equationType2Exercise.js +1 -1
- package/lib/exercises/math/calculLitteral/equation/equationType3Exercise.js +1 -1
- package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.js +1 -1
- package/lib/exercises/math/calculLitteral/factorisation/factoType2.d.ts.map +1 -1
- package/lib/exercises/math/conversion/aeraConversion.js +1 -1
- package/lib/exercises/math/dataRepresentations/functionGraphReading.d.ts +3 -1
- package/lib/exercises/math/dataRepresentations/functionGraphReading.d.ts.map +1 -1
- package/lib/exercises/math/dataRepresentations/functionGraphReading.js +64 -19
- package/lib/exercises/math/dataRepresentations/index.d.ts +2 -0
- package/lib/exercises/math/dataRepresentations/index.d.ts.map +1 -1
- package/lib/exercises/math/dataRepresentations/index.js +2 -1
- package/lib/exercises/math/dataRepresentations/testGen.d.ts +8 -0
- package/lib/exercises/math/dataRepresentations/testGen.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/testGen.js +75 -0
- package/lib/exercises/math/geometry/areas/circleArea.d.ts.map +1 -1
- package/lib/exercises/math/geometry/areas/circleArea.js +19 -8
- package/lib/exercises/math/geometry/cartesian/placeAbscissOnLine.js +2 -2
- package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.js +2 -2
- package/lib/exercises/math/geometry/cartesian/pointCoordinatesNoAxisNumbers.d.ts.map +1 -1
- package/lib/exercises/math/geometry/cartesian/pointCoordinatesNoAxisNumbers.js +48 -25
- package/lib/exercises/math/geometry/cartesian/readAbscissOnLine.js +3 -3
- package/lib/exercises/math/geometry/cartesian/readAbscissOnSemiLine.js +3 -3
- package/lib/exercises/math/geometry/volumes/sphereVolume.d.ts.map +1 -1
- package/lib/exercises/math/geometry/volumes/sphereVolume.js +31 -16
- package/lib/exercises/math/percent/findProportion.js +1 -1
- package/lib/exercises/math/percent/findTVA.js +1 -1
- package/lib/exercises/math/percent/valuePercent.js +1 -1
- package/lib/exercises/math/probaStat/stats1var/averageList.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/averageList.js +32 -18
- package/lib/exercises/math/sequences/sequenceEvaluation.d.ts.map +1 -1
- package/lib/geogebra/geogebraConstructor.d.ts +1 -0
- package/lib/geogebra/geogebraConstructor.d.ts.map +1 -1
- package/lib/geogebra/geogebraConstructor.js +3 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/math/utils/random/randTupleInt.d.ts +4 -4
- package/lib/math/utils/random/randTupleInt.d.ts.map +1 -1
- package/lib/math/utils/random/randTupleInt.js +12 -8
- package/lib/tests/questionTest.d.ts.map +1 -1
- package/lib/tests/questionTest.js +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD,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,oBAAY,qBAAqB;IAC/B,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AACD,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,WAAW,gBAAgB;CAC5B;AACD,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,GAAG,IAAI;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,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;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiplyDecimalByTens.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/decimals/multiplyDecimalByTens.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"multiplyDecimalByTens.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/decimals/multiplyDecimalByTens.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAmGF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAmBvD,CAAC"}
|
|
@@ -6,29 +6,50 @@ import { DivideNode } from "../../../../tree/nodes/operators/divideNode.js";
|
|
|
6
6
|
import { MultiplyNode } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
7
7
|
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
8
8
|
import { pluralize } from "../../../../utils/strings/pluralize.js";
|
|
9
|
-
const
|
|
10
|
-
const dec
|
|
11
|
-
const pow = randint(1, 4);
|
|
9
|
+
const getInstruction = (identifiers) => {
|
|
10
|
+
const { dec, pow, isDivide } = identifiers;
|
|
12
11
|
const factor = Math.pow(10, pow);
|
|
13
|
-
const
|
|
14
|
-
|
|
12
|
+
const statement = new (isDivide ? DivideNode : MultiplyNode)(dec.toTree(), factor.toTree());
|
|
13
|
+
return `Calculer : $${statement.toTex()}$`;
|
|
14
|
+
};
|
|
15
|
+
const getHint = (identifiers) => {
|
|
16
|
+
const { dec, pow, isDivide } = identifiers;
|
|
17
|
+
const factor = Math.pow(10, pow);
|
|
18
|
+
return `${isDivide ? "Diviser" : "Multiplier"} par $${factor.frenchify()}$ revient à déplacer la virgule de $${pow}$ ${pluralize("position", pow)} vers la ${isDivide ? "gauche" : "droite"}.`;
|
|
19
|
+
};
|
|
20
|
+
const getAnswer = (identifiers) => {
|
|
21
|
+
const { dec, pow, isDivide } = identifiers;
|
|
22
|
+
const answer = new Decimal(dec)
|
|
15
23
|
.multiplyByPowerOfTen(isDivide ? -pow : pow)
|
|
16
24
|
.toTree()
|
|
17
25
|
.toTex();
|
|
26
|
+
return answer;
|
|
27
|
+
};
|
|
28
|
+
const getCorrection = (identifiers) => {
|
|
29
|
+
const { dec, pow, isDivide } = identifiers;
|
|
30
|
+
const factor = Math.pow(10, pow);
|
|
18
31
|
const statement = new (isDivide ? DivideNode : MultiplyNode)(dec.toTree(), factor.toTree());
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
instruction: `Calculer : $${statement.toTex()}$`,
|
|
22
|
-
keys: [],
|
|
23
|
-
answerFormat: "tex",
|
|
24
|
-
identifiers: { dec: dec.value, pow, isDivide },
|
|
25
|
-
hint: `${isDivide ? "Diviser" : "Multiplier"} par $${factor.frenchify()}$ revient à déplacer la virgule de $${pow}$ ${pluralize("position", pow)} vers la ${isDivide ? "gauche" : "droite"}.`,
|
|
26
|
-
correction: `On déplace la virgule de $${pow}$ ${pluralize("position", pow)} vers la ${isDivide ? "gauche" : "droite"} :
|
|
32
|
+
const answer = getAnswer(identifiers);
|
|
33
|
+
return `On déplace la virgule de $${pow}$ ${pluralize("position", pow)} vers la ${isDivide ? "gauche" : "droite"} :
|
|
27
34
|
|
|
28
35
|
$$
|
|
29
36
|
${statement.toTex()} = ${answer}
|
|
30
37
|
$$
|
|
31
|
-
|
|
38
|
+
`;
|
|
39
|
+
};
|
|
40
|
+
const getMultiplyDecimalByTensQuestion = () => {
|
|
41
|
+
const dec = DecimalConstructor.random(1, 200, randint(1, 5));
|
|
42
|
+
const pow = randint(1, 4);
|
|
43
|
+
const isDivide = coinFlip();
|
|
44
|
+
const identifiers = { dec: dec.value, pow, isDivide };
|
|
45
|
+
const question = {
|
|
46
|
+
answer: getAnswer(identifiers),
|
|
47
|
+
instruction: getInstruction(identifiers),
|
|
48
|
+
keys: [],
|
|
49
|
+
answerFormat: "tex",
|
|
50
|
+
identifiers,
|
|
51
|
+
hint: getHint(identifiers),
|
|
52
|
+
correction: getCorrection(identifiers),
|
|
32
53
|
};
|
|
33
54
|
return question;
|
|
34
55
|
};
|
|
@@ -55,7 +76,7 @@ const isAnswerValid = (ans, { answer }) => {
|
|
|
55
76
|
export const multiplyDecimalByTens = {
|
|
56
77
|
id: "multiplyDecimalByTens",
|
|
57
78
|
connector: "=",
|
|
58
|
-
label: "Multiplier/diviser un décimal par
|
|
79
|
+
label: "Multiplier/diviser un décimal par $10$, $100$, ou $1000$",
|
|
59
80
|
levels: [],
|
|
60
81
|
isSingleStep: true,
|
|
61
82
|
sections: [],
|
|
@@ -66,4 +87,8 @@ export const multiplyDecimalByTens = {
|
|
|
66
87
|
isAnswerValid,
|
|
67
88
|
subject: "Mathématiques",
|
|
68
89
|
hasHintAndCorrection: true,
|
|
90
|
+
getInstruction,
|
|
91
|
+
getCorrection,
|
|
92
|
+
getHint,
|
|
93
|
+
getAnswer,
|
|
69
94
|
};
|
|
@@ -132,7 +132,7 @@ const isAnswerValid = (ans, { integer, integerFirst, rational }) => {
|
|
|
132
132
|
export const fractionAndIntegerDivision = {
|
|
133
133
|
id: "fractionAndIntegerDivision",
|
|
134
134
|
connector: "=",
|
|
135
|
-
label: "Division d'un entier
|
|
135
|
+
label: "Division d'un entier par une fraction et vice-versa",
|
|
136
136
|
levels: ["4ème", "3ème", "2nde", "2ndPro", "1rePro", "CAP"],
|
|
137
137
|
isSingleStep: false,
|
|
138
138
|
sections: ["Fractions"],
|
|
@@ -114,7 +114,7 @@ const isAnswerValid = (ans, { integer, rational, integerFirst, answer }, opts) =
|
|
|
114
114
|
export const fractionAndIntegerProduct = {
|
|
115
115
|
id: "fractionAndIntegerProduct",
|
|
116
116
|
connector: "=",
|
|
117
|
-
label: "Produit d'un entier
|
|
117
|
+
label: "Produit d'un entier par une fraction",
|
|
118
118
|
levels: ["4ème", "3ème", "2nde", "CAP", "2ndPro", "1rePro"],
|
|
119
119
|
isSingleStep: false,
|
|
120
120
|
sections: ["Fractions"],
|
|
@@ -91,7 +91,7 @@ const isAnswerValid = (ans, { a, b }) => {
|
|
|
91
91
|
export const equationType1Exercise = {
|
|
92
92
|
id: "equa1",
|
|
93
93
|
connector: "\\iff",
|
|
94
|
-
label: "
|
|
94
|
+
label: "Résoudre une équation du type $x+a = b$",
|
|
95
95
|
levels: ["4ème", "3ème", "2nde", "CAP", "2ndPro", "1rePro", "1reTech"],
|
|
96
96
|
sections: ["Équations"],
|
|
97
97
|
isSingleStep: true,
|
|
@@ -142,7 +142,7 @@ const options = [
|
|
|
142
142
|
export const equationType2Exercise = {
|
|
143
143
|
id: "equa2",
|
|
144
144
|
connector: "\\iff",
|
|
145
|
-
label: "
|
|
145
|
+
label: "Résoudre une équation du type $ax=b$",
|
|
146
146
|
levels: ["4ème", "3ème", "2nde", "CAP", "2ndPro", "1rePro", "1reTech"],
|
|
147
147
|
sections: ["Équations"],
|
|
148
148
|
isSingleStep: true,
|
|
@@ -93,7 +93,7 @@ const isAnswerValid = (ans, { answer, a, b, c }) => {
|
|
|
93
93
|
export const equationType3Exercise = {
|
|
94
94
|
id: "equa3",
|
|
95
95
|
connector: "\\iff",
|
|
96
|
-
label: "
|
|
96
|
+
label: "Résoudre une équation du type $ax+b=c$",
|
|
97
97
|
levels: ["4ème", "3ème", "2nde", "CAP", "2ndPro", "1rePro", "1reTech"],
|
|
98
98
|
sections: ["Équations"],
|
|
99
99
|
isSingleStep: false,
|
|
@@ -87,7 +87,7 @@ const isAnswerValid = (ans, { a, b, c, d }) => {
|
|
|
87
87
|
export const equationType4Exercise = {
|
|
88
88
|
id: "equa4",
|
|
89
89
|
connector: "\\iff",
|
|
90
|
-
label: "
|
|
90
|
+
label: "Résoudre une équation du type $ax+b=cx+d$",
|
|
91
91
|
levels: ["4ème", "3ème", "2nde", "CAP", "2ndPro", "1rePro", "1reTech"],
|
|
92
92
|
sections: ["Équations"],
|
|
93
93
|
isSingleStep: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factoType2.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/factorisation/factoType2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"factoType2.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/factorisation/factoType2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAkIF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,WAAW,CAiB5C,CAAC"}
|
|
@@ -104,7 +104,7 @@ export const aeraConversion = {
|
|
|
104
104
|
connector: "=",
|
|
105
105
|
getPropositions,
|
|
106
106
|
isAnswerValid,
|
|
107
|
-
label: "Conversion
|
|
107
|
+
label: "Conversion d'aires",
|
|
108
108
|
isSingleStep: true,
|
|
109
109
|
generator: (nb) => getDistinctQuestions(getAeraConversion, nb),
|
|
110
110
|
qcmTimer: 60,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionGraphReading.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/functionGraphReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"functionGraphReading.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/functionGraphReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAerC,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA4HF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAiBtD,CAAC;;AAEF,UAAU;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsGE"}
|
|
@@ -1,38 +1,60 @@
|
|
|
1
|
-
import { addValidProp, shuffleProps, } from "../../../exercises/exercise.js";
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../exercises/exercise.js";
|
|
2
2
|
import { getDistinctQuestions } from "../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { randomColor } from "../../../geogebra/colors.js";
|
|
3
4
|
import { GeogebraConstructor } from "../../../geogebra/geogebraConstructor.js";
|
|
5
|
+
import { approxEqual } from "../../../geogebra/parsers/approxEqual.js";
|
|
4
6
|
import { Affine } from "../../../math/polynomials/affine.js";
|
|
5
7
|
import { randint } from "../../../math/utils/random/randint.js";
|
|
6
8
|
import { round } from "../../../math/utils/round.js";
|
|
7
|
-
|
|
9
|
+
import { valueParser } from "../../../tree/parsers/valueParser.js";
|
|
10
|
+
import { coinFlip } from "../../../utils/alea/coinFlip.js";
|
|
11
|
+
import { handleVEAError } from "../../../utils/errors/handleVEAError.js";
|
|
12
|
+
const getPropositions = (n, { answer, a, b, yValue, isAskingX }) => {
|
|
8
13
|
const propositions = [];
|
|
9
14
|
addValidProp(propositions, answer);
|
|
10
15
|
while (propositions.length < n) {
|
|
11
|
-
|
|
16
|
+
if (isAskingX)
|
|
17
|
+
tryToAddWrongProp(propositions, randint(4, 60) + "");
|
|
18
|
+
else
|
|
19
|
+
tryToAddWrongProp(propositions, 100 * randint(20, 60) + "");
|
|
12
20
|
}
|
|
13
21
|
return shuffleProps(propositions, n);
|
|
14
22
|
};
|
|
15
23
|
const getAnswer = (identifiers) => {
|
|
16
|
-
const { a, b, yValue } = identifiers;
|
|
17
|
-
|
|
24
|
+
const { a, b, yValue, xValue, isAskingX } = identifiers;
|
|
25
|
+
if (isAskingX) {
|
|
26
|
+
return round((yValue - b) / a, 0).frenchify();
|
|
27
|
+
}
|
|
28
|
+
else
|
|
29
|
+
return round(a * xValue + b, 0).frenchify();
|
|
18
30
|
};
|
|
19
31
|
const getInstruction = (identifiers) => {
|
|
20
|
-
const { yValue, a, b } = identifiers;
|
|
32
|
+
const { yValue, a, b, isAskingX, xValue } = identifiers;
|
|
21
33
|
return `La droite $(d_1)$ modélise l'évolution du coût total d'un voyage scolaire en fonction du nombre de participants.
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
${isAskingX
|
|
36
|
+
? `Si le coût total du voyage est de $${yValue}€$, quel est le nombre de participants ?`
|
|
37
|
+
: `Si le nombre de participants est $${xValue}$, quel est le coût total du voyage ?`}`;
|
|
24
38
|
};
|
|
25
39
|
// const getHint: GetHint<Identifiers> = (identifiers) => {};
|
|
26
40
|
// const getCorrection: GetCorrection<Identifiers> = (identifiers) => {};
|
|
27
41
|
const getGGBOptions = (identifiers) => {
|
|
28
|
-
const { a, b, yValue } = identifiers;
|
|
42
|
+
const { a, b, yValue, isAskingX, xValue } = identifiers;
|
|
29
43
|
const affine = new Affine(a, b);
|
|
30
|
-
const
|
|
44
|
+
const x = xValue ?? (yValue - b) / a;
|
|
45
|
+
const y = yValue ?? a * xValue + b;
|
|
46
|
+
const xText = 4;
|
|
47
|
+
const yText = a * xText + b;
|
|
48
|
+
const color = randomColor();
|
|
31
49
|
const ggb = new GeogebraConstructor({
|
|
32
50
|
commands: [
|
|
33
|
-
`Function(${a}*x+${b}, 0,
|
|
34
|
-
`
|
|
35
|
-
`Text("
|
|
51
|
+
`f = Function(${a}*x+${b}, 0, 1000)`,
|
|
52
|
+
`SetColor(f, "${color}")`,
|
|
53
|
+
`T = Text("$(d_1)$", (${xText},${yText}), true, true)`,
|
|
54
|
+
`SetColor(T, "${color}")`,
|
|
55
|
+
`Text("Nombre \\ de \\ participants", (x(Corner(2)),50), true, true, -1)`,
|
|
56
|
+
`Text("Coût \\ en \\ €", (1, y(Corner(4))), true, true)`,
|
|
57
|
+
// `(${xValue},${yValue})`,
|
|
36
58
|
],
|
|
37
59
|
forbidShiftDragZoom: false,
|
|
38
60
|
gridDistance: [2, 500],
|
|
@@ -47,23 +69,46 @@ const getGGBOptions = (identifiers) => {
|
|
|
47
69
|
steps: 500,
|
|
48
70
|
showPositive: true,
|
|
49
71
|
},
|
|
72
|
+
fontSize: 14,
|
|
50
73
|
});
|
|
74
|
+
const xMin = -2;
|
|
75
|
+
const xMax = x + 6;
|
|
76
|
+
const xDelta = xMax - xMin;
|
|
77
|
+
const yMin = -100;
|
|
78
|
+
const yMax = Math.max(y + 500, xDelta);
|
|
51
79
|
return ggb.getOptions({
|
|
52
|
-
coords: [-
|
|
80
|
+
coords: [-1, x + 6, -100, y + 500],
|
|
53
81
|
});
|
|
54
82
|
};
|
|
55
83
|
const getKeys = (identifiers) => {
|
|
56
84
|
return [];
|
|
57
85
|
};
|
|
58
|
-
const isAnswerValid = (ans, { answer }) => {
|
|
59
|
-
|
|
86
|
+
const isAnswerValid = (ans, { answer, isAskingX }) => {
|
|
87
|
+
try {
|
|
88
|
+
const nbAnswer = answer.unfrenchify();
|
|
89
|
+
const parsed = valueParser(ans);
|
|
90
|
+
if (parsed === false)
|
|
91
|
+
return false;
|
|
92
|
+
return approxEqual(parsed, nbAnswer, isAskingX ? 1 : 200);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
return handleVEAError(err);
|
|
96
|
+
}
|
|
60
97
|
};
|
|
61
98
|
const getFunctionGraphReadingQuestion = (opts) => {
|
|
62
99
|
const b = randint(0, 2000);
|
|
63
100
|
const randPoint = [2 * randint(5, 20), 3000 + 500 * randint(1, 7)];
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
101
|
+
const isAskingX = coinFlip();
|
|
102
|
+
let yValue;
|
|
103
|
+
let xValue;
|
|
104
|
+
const a = (randPoint[1] - b) / randPoint[0];
|
|
105
|
+
if (isAskingX) {
|
|
106
|
+
yValue = randPoint[1];
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
xValue = randPoint[0];
|
|
110
|
+
}
|
|
111
|
+
const identifiers = { a, b, yValue, isAskingX, xValue };
|
|
67
112
|
const question = {
|
|
68
113
|
answer: getAnswer(identifiers),
|
|
69
114
|
instruction: getInstruction(identifiers),
|
|
@@ -78,7 +123,7 @@ const getFunctionGraphReadingQuestion = (opts) => {
|
|
|
78
123
|
};
|
|
79
124
|
export const functionGraphReading = {
|
|
80
125
|
id: "functionGraphReading",
|
|
81
|
-
label: "",
|
|
126
|
+
label: "Lire le graphique d'une fonction",
|
|
82
127
|
isSingleStep: true,
|
|
83
128
|
generator: (nb, opts) => getDistinctQuestions(() => getFunctionGraphReadingQuestion(opts), nb),
|
|
84
129
|
qcmTimer: 60,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAElC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testGen.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/testGen.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAKrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AA8DF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,WAAW,CAkBzC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { coinFlip } from "../../../utils/alea/coinFlip.js";
|
|
4
|
+
import { handleVEAError } from "../../../utils/errors/handleVEAError.js";
|
|
5
|
+
const getPropositions = (n, { answer, hasTwoAnswers, rand }) => {
|
|
6
|
+
const propositions = [];
|
|
7
|
+
// addValidProp(propositions, answer);
|
|
8
|
+
addValidProp(propositions, "vrai", "raw");
|
|
9
|
+
tryToAddWrongProp(propositions, "faux un", "raw");
|
|
10
|
+
tryToAddWrongProp(propositions, "faux deux", "raw");
|
|
11
|
+
if (hasTwoAnswers) {
|
|
12
|
+
addValidProp(propositions, "vrai deux", "raw");
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
tryToAddWrongProp(propositions, "faux trois", "raw");
|
|
16
|
+
}
|
|
17
|
+
return shuffleProps(propositions, n);
|
|
18
|
+
};
|
|
19
|
+
const getAnswer = (identifiers) => {
|
|
20
|
+
return "bizarre d'avoir answer dans QCM";
|
|
21
|
+
};
|
|
22
|
+
const getInstruction = (identifiers) => {
|
|
23
|
+
return "Test qcm";
|
|
24
|
+
};
|
|
25
|
+
const getKeys = (identifiers) => {
|
|
26
|
+
return [];
|
|
27
|
+
};
|
|
28
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
29
|
+
try {
|
|
30
|
+
throw Error("VEA not implemented");
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
return handleVEAError(err);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const getHint = (identifiers) => {
|
|
37
|
+
return "voici l'indice";
|
|
38
|
+
};
|
|
39
|
+
const getCorrection = (identifiers) => {
|
|
40
|
+
return "voici la correction";
|
|
41
|
+
};
|
|
42
|
+
const getTestGenQuestion = (ops) => {
|
|
43
|
+
const identifiers = {
|
|
44
|
+
rand: Math.random(),
|
|
45
|
+
hasTwoAnswers: coinFlip(),
|
|
46
|
+
};
|
|
47
|
+
const question = {
|
|
48
|
+
answer: getAnswer(identifiers),
|
|
49
|
+
instruction: getInstruction(identifiers),
|
|
50
|
+
keys: getKeys(identifiers),
|
|
51
|
+
answerFormat: "tex",
|
|
52
|
+
hint: getHint(identifiers),
|
|
53
|
+
correction: getCorrection(identifiers),
|
|
54
|
+
identifiers,
|
|
55
|
+
};
|
|
56
|
+
return question;
|
|
57
|
+
};
|
|
58
|
+
export const testGen = {
|
|
59
|
+
id: "testGen",
|
|
60
|
+
label: "test qcm",
|
|
61
|
+
isSingleStep: true,
|
|
62
|
+
generator: (nb, opts) => getDistinctQuestions(() => getTestGenQuestion(opts), nb),
|
|
63
|
+
qcmTimer: 60,
|
|
64
|
+
freeTimer: 60,
|
|
65
|
+
getPropositions,
|
|
66
|
+
isAnswerValid,
|
|
67
|
+
subject: "Mathématiques",
|
|
68
|
+
getInstruction,
|
|
69
|
+
getAnswer,
|
|
70
|
+
isQCM: true,
|
|
71
|
+
answerType: "QCM",
|
|
72
|
+
hasHintAndCorrection: true,
|
|
73
|
+
getHint,
|
|
74
|
+
getCorrection,
|
|
75
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circleArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/circleArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"circleArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/circleArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,6BAA6B,CAAC;AAOrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAmDF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,WAAW,CAe5C,CAAC"}
|
|
@@ -4,21 +4,30 @@ import { randint } from "../../../../math/utils/random/randint.js";
|
|
|
4
4
|
import { round } from "../../../../math/utils/round.js";
|
|
5
5
|
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
6
6
|
import { shuffle } from "../../../../utils/alea/shuffle.js";
|
|
7
|
-
const
|
|
8
|
-
const radius =
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const getInstruction = (identifiers) => {
|
|
8
|
+
const { coin, radius, diametre } = identifiers;
|
|
9
|
+
return `Calculer l'aire d'un disque de ${coin ? "rayon " + `$${radius}$` : "diamètre " + `$${diametre}$`} cm (arrondir au centième).`;
|
|
10
|
+
};
|
|
11
|
+
const getAnswer = (identifiers) => {
|
|
12
|
+
const { coin, radius, diametre } = identifiers;
|
|
11
13
|
const answerNb = coin
|
|
12
14
|
? round(Math.PI * radius ** 2, 2)
|
|
13
15
|
: round(Math.PI * (diametre / 2) ** 2, 2);
|
|
14
16
|
const answer = (answerNb + "").replace(".", ",");
|
|
15
17
|
const answerTex = answer + "\\text{cm}^2";
|
|
18
|
+
return answerTex;
|
|
19
|
+
};
|
|
20
|
+
const getCircleArea = () => {
|
|
21
|
+
const radius = randint(1, 13);
|
|
22
|
+
const diametre = randint(1, 21);
|
|
23
|
+
const coin = coinFlip();
|
|
24
|
+
const identifiers = { coin, diametre, radius };
|
|
16
25
|
const question = {
|
|
17
|
-
instruction:
|
|
18
|
-
answer:
|
|
26
|
+
instruction: getInstruction(identifiers),
|
|
27
|
+
answer: getAnswer(identifiers),
|
|
19
28
|
answerFormat: "tex",
|
|
20
29
|
keys: ["cm", "cm2"],
|
|
21
|
-
identifiers
|
|
30
|
+
identifiers,
|
|
22
31
|
};
|
|
23
32
|
return question;
|
|
24
33
|
};
|
|
@@ -37,7 +46,7 @@ const isAnswerValid = (ans, { answer }) => {
|
|
|
37
46
|
export const circleArea = {
|
|
38
47
|
id: "circleArea",
|
|
39
48
|
connector: "=",
|
|
40
|
-
label: "Calculer l'aire d'un
|
|
49
|
+
label: "Calculer l'aire d'un disque",
|
|
41
50
|
levels: ["4ème", "3ème", "2nde"],
|
|
42
51
|
isSingleStep: false,
|
|
43
52
|
sections: ["Aires", "Géométrie euclidienne"],
|
|
@@ -47,4 +56,6 @@ export const circleArea = {
|
|
|
47
56
|
getPropositions,
|
|
48
57
|
isAnswerValid,
|
|
49
58
|
subject: "Mathématiques",
|
|
59
|
+
getInstruction,
|
|
60
|
+
getAnswer,
|
|
50
61
|
};
|
|
@@ -25,9 +25,9 @@ const getStudentGGBOptions = ({ coeff, oneUnitTex, abscissType, }) => {
|
|
|
25
25
|
const A = new Point("A", coeff.toTree(), (0).toTree());
|
|
26
26
|
const commands = [
|
|
27
27
|
...O.toGGBCommand(),
|
|
28
|
-
`Text("\\
|
|
28
|
+
`Text("\\footnotesize 0", (0, -0.5), false, true, 0, 0)`,
|
|
29
29
|
...I.toGGBCommand(),
|
|
30
|
-
`Text("\\
|
|
30
|
+
`Text("\\footnotesize ${oneUnitTex}", (1, ${abscissType === NumberType.Rational ? -1 : -0.5}), false, true, 0, 0)`,
|
|
31
31
|
];
|
|
32
32
|
const ggb = new GeogebraConstructor({
|
|
33
33
|
commands,
|
|
@@ -24,9 +24,9 @@ const getStudentGGBOptions = ({ coeff, oneUnitTex, abscissType, }) => {
|
|
|
24
24
|
const I = new Point("I", (1).toTree(), (0).toTree());
|
|
25
25
|
const commands = [
|
|
26
26
|
...O.toGGBCommand(),
|
|
27
|
-
`Text("\\
|
|
27
|
+
`Text("\\footnotesize 0", (0, -0.5), false, true, 0, 0)`,
|
|
28
28
|
...I.toGGBCommand(),
|
|
29
|
-
`Text("\\
|
|
29
|
+
`Text("\\footnotesize ${oneUnitTex}", (1, ${abscissType === NumberType.Rational ? -1 : -0.5}), false, true, 0, 0)`,
|
|
30
30
|
];
|
|
31
31
|
const ggb = new GeogebraConstructor({
|
|
32
32
|
commands,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointCoordinatesNoAxisNumbers.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/pointCoordinatesNoAxisNumbers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"pointCoordinatesNoAxisNumbers.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/pointCoordinatesNoAxisNumbers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAQrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA6HF,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,WAAW,CAc/D,CAAC"}
|
|
@@ -3,18 +3,17 @@ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQue
|
|
|
3
3
|
import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
|
|
4
4
|
import { Point } from "../../../../math/geometry/point.js";
|
|
5
5
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const instruction = `Lire les coordonnées du point $A$ représenté dans le repère ci-dessous : `;
|
|
6
|
+
import { randTupleInt } from "../../../../math/utils/random/randTupleInt.js";
|
|
7
|
+
const getInstruction = (identifiers) => {
|
|
8
|
+
return `Lire les coordonnées du point $A$ représenté dans le repère ci-dessous : `;
|
|
9
|
+
};
|
|
10
|
+
const getAnswer = (identifiers) => {
|
|
11
|
+
const { x, y } = identifiers;
|
|
12
|
+
const A = new Point("A", x.toTree(), y.toTree());
|
|
13
|
+
return A.toCoords();
|
|
14
|
+
};
|
|
15
|
+
const getGGBOptions = (identifiers) => {
|
|
16
|
+
const { x, y } = identifiers;
|
|
18
17
|
const commands = [
|
|
19
18
|
`A = (${x}, ${y})`,
|
|
20
19
|
`ShowLabel(A, true)`,
|
|
@@ -23,15 +22,18 @@ const getPointCoordinatesNoAxisNumbersQuestion = () => {
|
|
|
23
22
|
`SetFixed(A, true)`,
|
|
24
23
|
"O = (0,0)",
|
|
25
24
|
`SetFixed(O, true)`,
|
|
25
|
+
`SetCaption(O, "0")`,
|
|
26
26
|
`ShowLabel(O, true)`,
|
|
27
27
|
`SetPointSize(O, 4)`,
|
|
28
28
|
"I = (1,0)",
|
|
29
29
|
`SetFixed(I, true)`,
|
|
30
|
+
`SetCaption(I, "1")`,
|
|
30
31
|
`ShowLabel(I, true)`,
|
|
31
32
|
`SetPointSize(I, 4)`,
|
|
32
33
|
"J = (0,1)",
|
|
33
34
|
`SetFixed(J, true)`,
|
|
34
35
|
`ShowLabel(J, true)`,
|
|
36
|
+
`SetCaption(J, "1")`,
|
|
35
37
|
`SetPointSize(J, 4)`,
|
|
36
38
|
];
|
|
37
39
|
const ggb = new GeogebraConstructor({
|
|
@@ -43,22 +45,43 @@ const getPointCoordinatesNoAxisNumbersQuestion = () => {
|
|
|
43
45
|
hideNumbers: true,
|
|
44
46
|
},
|
|
45
47
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
48
|
+
let xMin = x - 2;
|
|
49
|
+
let xMax = x + 2;
|
|
50
|
+
let yMin = y - 2;
|
|
51
|
+
let yMax = y + 2;
|
|
52
|
+
yMax = yMax < 2 ? 2 : yMax;
|
|
53
|
+
yMin = yMin > -2 ? -2 : yMin;
|
|
54
|
+
xMin = xMin > -2 ? -2 : xMin;
|
|
55
|
+
xMax = xMax < 2 ? 2 : xMax;
|
|
56
|
+
return ggb.getOptions({
|
|
57
|
+
coords: ggb.getAdaptedCoords({
|
|
58
|
+
xMin,
|
|
59
|
+
xMax,
|
|
60
|
+
yMin,
|
|
61
|
+
yMax,
|
|
62
|
+
forceShowAxes: true,
|
|
58
63
|
}),
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
const getPointCoordinatesNoAxisNumbersQuestion = () => {
|
|
67
|
+
const [x, y] = randTupleInt(2, {
|
|
68
|
+
from: -10,
|
|
69
|
+
to: 10,
|
|
70
|
+
allDifferent: true,
|
|
71
|
+
excludes: [
|
|
72
|
+
[0, 0],
|
|
73
|
+
[1, 0],
|
|
74
|
+
[0, 1],
|
|
75
|
+
],
|
|
76
|
+
});
|
|
77
|
+
const identifiers = { x, y };
|
|
78
|
+
const question = {
|
|
79
|
+
answer: getAnswer(identifiers),
|
|
80
|
+
instruction: getInstruction(identifiers),
|
|
81
|
+
ggbOptions: getGGBOptions(identifiers),
|
|
59
82
|
keys: ["x", "y", "semicolon"],
|
|
60
83
|
answerFormat: "tex",
|
|
61
|
-
identifiers
|
|
84
|
+
identifiers,
|
|
62
85
|
};
|
|
63
86
|
return question;
|
|
64
87
|
};
|
|
@@ -33,9 +33,9 @@ const getGGBOptions = ({ absciss, abscissType, axisUnit, oneUnitTex, coeff, }) =
|
|
|
33
33
|
const A = new Point("A", coeff.toTree(), (0).toTree());
|
|
34
34
|
const commands = [
|
|
35
35
|
...O.toGGBCommand(),
|
|
36
|
-
`Text("\\
|
|
36
|
+
`Text("\\footnotesize 0", (0, -0.5), false, true, 0, 0)`,
|
|
37
37
|
...I.toGGBCommand(),
|
|
38
|
-
`Text("\\
|
|
38
|
+
`Text("\\footnotesize ${oneUnitTex}", (1, ${abscissType === NumberType.Rational ? -1 : -0.55}), false, true, 0, 0)`,
|
|
39
39
|
...A.toGGBCommand(),
|
|
40
40
|
];
|
|
41
41
|
const ggb = new GeogebraConstructor({
|
|
@@ -131,7 +131,7 @@ const getReadAbscissOnLineQuestion = () => {
|
|
|
131
131
|
export const readAbscissOnLine = {
|
|
132
132
|
id: "readAbscissOnLine",
|
|
133
133
|
connector: "=",
|
|
134
|
-
label: "Lire
|
|
134
|
+
label: "Lire l'abscisse d'un point sur une droite graduée",
|
|
135
135
|
isSingleStep: true,
|
|
136
136
|
generator: (nb) => getDistinctQuestions(getReadAbscissOnLineQuestion, nb),
|
|
137
137
|
qcmTimer: 60,
|
|
@@ -33,9 +33,9 @@ const getGGBOptions = ({ absciss, abscissType, axisUnit, oneUnitTex, coeff, }) =
|
|
|
33
33
|
const A = new Point("A", coeff.toTree(), (0).toTree());
|
|
34
34
|
const commands = [
|
|
35
35
|
...O.toGGBCommand(),
|
|
36
|
-
`Text("\\
|
|
36
|
+
`Text("\\footnotesize 0", (0, -0.5), false, true, 0, 0)`,
|
|
37
37
|
...I.toGGBCommand(),
|
|
38
|
-
`Text("\\
|
|
38
|
+
`Text("\\footnotesize ${oneUnitTex}", (1, ${abscissType === NumberType.Rational ? -1 : -0.5}), false, true, 0, 0)`,
|
|
39
39
|
...A.toGGBCommand(),
|
|
40
40
|
];
|
|
41
41
|
const ggb = new GeogebraConstructor({
|
|
@@ -132,7 +132,7 @@ const getReadAbscissOnSemiLineQuestion = () => {
|
|
|
132
132
|
export const readAbscissOnSemiLine = {
|
|
133
133
|
id: "readAbscissOnSemiLine",
|
|
134
134
|
connector: "=",
|
|
135
|
-
label: "Lire
|
|
135
|
+
label: "Lire l'abscisse d'un point sur une demi-droite graduée",
|
|
136
136
|
isSingleStep: true,
|
|
137
137
|
generator: (nb) => getDistinctQuestions(getReadAbscissOnSemiLineQuestion, nb),
|
|
138
138
|
qcmTimer: 60,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sphereVolume.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/sphereVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"sphereVolume.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/sphereVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAMrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAkGF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,WAAW,CAgB9C,CAAC"}
|
|
@@ -3,17 +3,25 @@ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQue
|
|
|
3
3
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
4
4
|
import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
|
|
5
5
|
import { round } from "../../../../math/utils/round.js";
|
|
6
|
-
const
|
|
7
|
-
const radius =
|
|
6
|
+
const getInstruction = (identifiers) => {
|
|
7
|
+
const { radius } = identifiers;
|
|
8
|
+
return `La boule ci-dessous a un rayon de $${radius.frenchify()}$. Calculer son volume (arrondir au centième).`;
|
|
9
|
+
};
|
|
10
|
+
const getAnswer = (identifiers) => {
|
|
11
|
+
const { radius } = identifiers;
|
|
8
12
|
const volume = round((4 / 3) * Math.PI * Math.pow(radius, 3), 2)
|
|
9
13
|
.toTree()
|
|
10
14
|
.toTex();
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
15
|
+
return volume;
|
|
16
|
+
};
|
|
17
|
+
const getGGBOptions = (identifiers) => {
|
|
18
|
+
const { radius } = identifiers;
|
|
19
|
+
const xMin = -radius - 2;
|
|
20
|
+
const xMax = radius + 2;
|
|
21
|
+
const yMin = -radius - 2;
|
|
22
|
+
const yMax = radius + 2;
|
|
23
|
+
const zMax = radius + 2;
|
|
24
|
+
const zMin = -radius - 2;
|
|
17
25
|
const commands = [
|
|
18
26
|
`A = (0, 0, 0)`,
|
|
19
27
|
`Sphere(A, ${radius})`,
|
|
@@ -22,20 +30,24 @@ const getSphereVolumeQuestion = () => {
|
|
|
22
30
|
];
|
|
23
31
|
const ggb = new GeogebraConstructor({
|
|
24
32
|
commands,
|
|
25
|
-
lockedAxesRatio: false,
|
|
26
33
|
is3D: true,
|
|
27
34
|
hideAxes: true,
|
|
28
35
|
hideGrid: true,
|
|
29
36
|
});
|
|
37
|
+
return ggb.getOptions({
|
|
38
|
+
coords: [xMin, xMax, yMin, yMax, zMin, zMax],
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
const getSphereVolumeQuestion = () => {
|
|
42
|
+
const radius = randint(10, 110) / 10;
|
|
43
|
+
const identifiers = { radius };
|
|
30
44
|
const question = {
|
|
31
|
-
answer:
|
|
32
|
-
instruction:
|
|
33
|
-
ggbOptions:
|
|
34
|
-
coords: [xMin, xMax, yMin, yMax, zMin, zMax],
|
|
35
|
-
}),
|
|
45
|
+
answer: getAnswer(identifiers),
|
|
46
|
+
instruction: getInstruction(identifiers),
|
|
47
|
+
ggbOptions: getGGBOptions(identifiers),
|
|
36
48
|
keys: [],
|
|
37
49
|
answerFormat: "tex",
|
|
38
|
-
identifiers
|
|
50
|
+
identifiers,
|
|
39
51
|
};
|
|
40
52
|
return question;
|
|
41
53
|
};
|
|
@@ -70,7 +82,7 @@ const isAnswerValid = (ans, { answer, radius }) => {
|
|
|
70
82
|
};
|
|
71
83
|
export const sphereVolume = {
|
|
72
84
|
id: "sphereVolume",
|
|
73
|
-
label: "Calculer le volume d'une
|
|
85
|
+
label: "Calculer le volume d'une boule",
|
|
74
86
|
levels: ["2nde"],
|
|
75
87
|
isSingleStep: true,
|
|
76
88
|
sections: ["Géométrie euclidienne"],
|
|
@@ -81,4 +93,7 @@ export const sphereVolume = {
|
|
|
81
93
|
isAnswerValid,
|
|
82
94
|
hasGeogebra: true,
|
|
83
95
|
subject: "Mathématiques",
|
|
96
|
+
getInstruction,
|
|
97
|
+
getAnswer,
|
|
98
|
+
getGGBOptions,
|
|
84
99
|
};
|
|
@@ -60,7 +60,7 @@ const isAnswerValid = (ans, { answer }) => {
|
|
|
60
60
|
export const findProportion = {
|
|
61
61
|
id: "findProportion",
|
|
62
62
|
connector: "=",
|
|
63
|
-
label: "Calculer une proportion",
|
|
63
|
+
label: "Calculer une proportion en pourcentage",
|
|
64
64
|
levels: ["4ème", "3ème", "2nde"],
|
|
65
65
|
isSingleStep: true,
|
|
66
66
|
sections: ["Pourcentages"],
|
|
@@ -20,7 +20,7 @@ const getAnswer = ({ ht, ttc, tva }) => {
|
|
|
20
20
|
return tva.frenchify() + "\\%";
|
|
21
21
|
};
|
|
22
22
|
const getInstruction = ({ ht, ttc }) => {
|
|
23
|
-
return `Le prix HT d'un objet est $${ht.frenchify()}€$ et son prix TTC est $${ttc.frenchify()}€$. Quel est le taux de TVA ? (arrondir au
|
|
23
|
+
return `Le prix HT d'un objet est $${ht.frenchify()}€$ et son prix TTC est $${ttc.frenchify()}€$. Quel est le taux de TVA ? (arrondir au dixième de pourcentage)`;
|
|
24
24
|
};
|
|
25
25
|
const getHint = (identifiers) => {
|
|
26
26
|
return `Le taux de TVA est donnée par :
|
|
@@ -36,7 +36,7 @@ const isAnswerValid = (ans, { answer, percent, nb }) => {
|
|
|
36
36
|
export const valuePercent = {
|
|
37
37
|
id: "valuePercent",
|
|
38
38
|
connector: "=",
|
|
39
|
-
label: "
|
|
39
|
+
label: "Appliquer un pourcentage",
|
|
40
40
|
levels: ["3ème", "2ndPro", "2nde", "1reESM", "1rePro"],
|
|
41
41
|
isSingleStep: true,
|
|
42
42
|
sections: ["Pourcentages"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"averageList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/averageList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"averageList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/averageList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAqFF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,CAkB7C,CAAC"}
|
|
@@ -15,25 +15,17 @@ $$
|
|
|
15
15
|
|
|
16
16
|
Calculer la moyenne de cette liste de valeurs (arrondir au centième).`;
|
|
17
17
|
};
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const length = randint(6, 10);
|
|
21
|
-
for (let i = 0; i < length; i++)
|
|
22
|
-
randomValues.push(randint(1, 20));
|
|
23
|
-
const sortedValues = randomValues.sort((a, b) => a - b);
|
|
24
|
-
const avg = average(sortedValues);
|
|
18
|
+
const getAnswer = (identifiers) => {
|
|
19
|
+
const { sortedValues } = identifiers;
|
|
25
20
|
const answer = round(average(sortedValues), 2).frenchify();
|
|
21
|
+
return answer;
|
|
22
|
+
};
|
|
23
|
+
const getCorrection = (identifiers) => {
|
|
24
|
+
const { sortedValues } = identifiers;
|
|
25
|
+
const answer = getAnswer(identifiers);
|
|
26
|
+
const avg = average(sortedValues);
|
|
26
27
|
const hasRounded = avg.frenchify() !== answer;
|
|
27
|
-
|
|
28
|
-
const question = {
|
|
29
|
-
answer,
|
|
30
|
-
instruction: getInstruction(identifiers),
|
|
31
|
-
keys: [],
|
|
32
|
-
answerFormat: "tex",
|
|
33
|
-
identifiers,
|
|
34
|
-
hint: "La moyenne d'une liste de valeurs est la somme des valeurs divisée par le nombre de valeurs.",
|
|
35
|
-
correction: `
|
|
36
|
-
On additionne toutes les valeurs :
|
|
28
|
+
return `On additionne toutes les valeurs :
|
|
37
29
|
|
|
38
30
|
$$
|
|
39
31
|
${operatorComposition(AddNode, sortedValues.map((e) => e.toTree())).toTex()} = ${sortedValues.reduce((acc, curr) => acc + curr)}
|
|
@@ -46,7 +38,26 @@ ${sortedValues.reduce((acc, curr) => acc + curr)}\\div ${sortedValues.length} ${
|
|
|
46
38
|
$$
|
|
47
39
|
|
|
48
40
|
La moyenne ${hasRounded ? "arrondie au centième" : ""} est donc $${answer}$.
|
|
49
|
-
|
|
41
|
+
`;
|
|
42
|
+
};
|
|
43
|
+
const getHint = (identifiers) => {
|
|
44
|
+
return "La moyenne d'une liste de valeurs est la somme des valeurs divisée par le nombre de valeurs.";
|
|
45
|
+
};
|
|
46
|
+
const getAverageListQuestion = () => {
|
|
47
|
+
let randomValues = [];
|
|
48
|
+
const length = randint(6, 10);
|
|
49
|
+
for (let i = 0; i < length; i++)
|
|
50
|
+
randomValues.push(randint(1, 20));
|
|
51
|
+
const sortedValues = randomValues.sort((a, b) => a - b);
|
|
52
|
+
const identifiers = { sortedValues };
|
|
53
|
+
const question = {
|
|
54
|
+
answer: getAnswer(identifiers),
|
|
55
|
+
instruction: getInstruction(identifiers),
|
|
56
|
+
keys: [],
|
|
57
|
+
answerFormat: "tex",
|
|
58
|
+
identifiers,
|
|
59
|
+
hint: getHint(identifiers),
|
|
60
|
+
correction: getCorrection(identifiers),
|
|
50
61
|
};
|
|
51
62
|
return question;
|
|
52
63
|
};
|
|
@@ -77,4 +88,7 @@ export const averageList = {
|
|
|
77
88
|
subject: "Mathématiques",
|
|
78
89
|
hasHintAndCorrection: true,
|
|
79
90
|
getInstruction,
|
|
91
|
+
getAnswer,
|
|
92
|
+
getHint,
|
|
93
|
+
getCorrection,
|
|
80
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceEvaluation.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/sequenceEvaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"sequenceEvaluation.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/sequenceEvaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAoLF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAapD,CAAC"}
|
|
@@ -27,6 +27,7 @@ export declare class GeogebraConstructor {
|
|
|
27
27
|
yAxis?: GeogebraAxisOptions;
|
|
28
28
|
zAxis?: GeogebraAxisOptions;
|
|
29
29
|
viewDirectionVector?: number[];
|
|
30
|
+
fontSize?: number;
|
|
30
31
|
constructor(options: Omit<GeogebraOptions, "coords">);
|
|
31
32
|
getCoordsForPoints(points: Point[]): number[];
|
|
32
33
|
getAdaptedCoords({ xMin, xMax, yMin, yMax, zMin, zMax, forceShowAxes, }: GetAdaptedCoords): number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geogebraConstructor.d.ts","sourceRoot":"","sources":["../../src/geogebra/geogebraConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AACF,qBAAa,mBAAmB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"geogebraConstructor.d.ts","sourceRoot":"","sources":["../../src/geogebra/geogebraConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AACF,qBAAa,mBAAmB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAiBpD,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;IAOlC,gBAAgB,CAAC,EACf,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,aAAa,GACd,EAAE,gBAAgB;IAiDnB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,eAAe;CAoBzD"}
|
|
@@ -14,6 +14,7 @@ export class GeogebraConstructor {
|
|
|
14
14
|
yAxis;
|
|
15
15
|
zAxis;
|
|
16
16
|
viewDirectionVector;
|
|
17
|
+
fontSize;
|
|
17
18
|
constructor(options) {
|
|
18
19
|
this.customToolBar = options?.customToolBar ?? toolBarConstructor({});
|
|
19
20
|
this.forbidShiftDragZoom = options?.forbidShiftDragZoom ?? false;
|
|
@@ -29,6 +30,7 @@ export class GeogebraConstructor {
|
|
|
29
30
|
this.yAxis = options?.yAxis;
|
|
30
31
|
this.zAxis = options?.zAxis;
|
|
31
32
|
this.viewDirectionVector = options?.viewDirectionVector;
|
|
33
|
+
this.fontSize = options?.fontSize;
|
|
32
34
|
}
|
|
33
35
|
getCoordsForPoints(points) {
|
|
34
36
|
const xMin = Math.min(...points.map((p) => p.x.evaluate()));
|
|
@@ -103,6 +105,7 @@ export class GeogebraConstructor {
|
|
|
103
105
|
yAxis: this.yAxis,
|
|
104
106
|
zAxis: this.zAxis,
|
|
105
107
|
viewDirectionVector: this.viewDirectionVector,
|
|
108
|
+
fontSize: this.fontSize,
|
|
106
109
|
};
|
|
107
110
|
}
|
|
108
111
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -1885,9 +1885,18 @@ declare const mathExercises: (Exercise<{
|
|
|
1885
1885
|
}, {}> | Exercise<{
|
|
1886
1886
|
values: number[][];
|
|
1887
1887
|
caseAsked: number;
|
|
1888
|
+
}, {}> | Exercise<{
|
|
1889
|
+
isAskingX: boolean;
|
|
1890
|
+
xValue?: number;
|
|
1891
|
+
yValue?: number;
|
|
1892
|
+
a: number;
|
|
1893
|
+
b: number;
|
|
1888
1894
|
}, {}> | Exercise<{
|
|
1889
1895
|
points: number[][];
|
|
1890
1896
|
labels: string[];
|
|
1897
|
+
}, {}> | Exercise<{
|
|
1898
|
+
rand: number;
|
|
1899
|
+
hasTwoAnswers: boolean;
|
|
1891
1900
|
}, {}>)[];
|
|
1892
1901
|
declare const pcExercises: (Exercise<{
|
|
1893
1902
|
numbers: number[];
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
interface
|
|
1
|
+
interface RandTupleIntOptions {
|
|
2
2
|
from: number;
|
|
3
3
|
to?: number;
|
|
4
|
-
excludes?: number[];
|
|
4
|
+
excludes?: number[][];
|
|
5
5
|
allDifferent?: boolean;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
@@ -9,7 +9,7 @@ interface randTupleIntOptions {
|
|
|
9
9
|
* @param options
|
|
10
10
|
* @returns array of size "size" with elements = randint(from, to, exxcludes)
|
|
11
11
|
*/
|
|
12
|
-
export declare const randTupleInt: (size: number, options:
|
|
13
|
-
export declare const distinctRandTupleInt: (nb: number, size: number, options:
|
|
12
|
+
export declare const randTupleInt: (size: number, options: RandTupleIntOptions) => number[];
|
|
13
|
+
export declare const distinctRandTupleInt: (nb: number, size: number, options: RandTupleIntOptions) => number[][];
|
|
14
14
|
export {};
|
|
15
15
|
//# sourceMappingURL=randTupleInt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"randTupleInt.d.ts","sourceRoot":"","sources":["../../../../src/math/utils/random/randTupleInt.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"randTupleInt.d.ts","sourceRoot":"","sources":["../../../../src/math/utils/random/randTupleInt.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,SACjB,MAAM,WACH,mBAAmB,KAC3B,MAAM,EAiBR,CAAC;AAEF,eAAO,MAAM,oBAAoB,OAC3B,MAAM,QACJ,MAAM,WACH,mBAAmB,KAC3B,MAAM,EAAE,EAUV,CAAC"}
|
|
@@ -6,14 +6,18 @@ import { randint } from "./randint.js";
|
|
|
6
6
|
* @returns array of size "size" with elements = randint(from, to, exxcludes)
|
|
7
7
|
*/
|
|
8
8
|
export const randTupleInt = (size, options) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
x
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
let res = [];
|
|
10
|
+
do {
|
|
11
|
+
res = [];
|
|
12
|
+
for (let i = 0; i < size; i++) {
|
|
13
|
+
let x;
|
|
14
|
+
do {
|
|
15
|
+
x = randint(options.from, options.to);
|
|
16
|
+
} while (options.allDifferent && res.includes(x));
|
|
17
|
+
res.push(x);
|
|
18
|
+
}
|
|
19
|
+
} while (options?.excludes &&
|
|
20
|
+
options.excludes.some((el) => arrayEqual(el, res)));
|
|
17
21
|
return res;
|
|
18
22
|
};
|
|
19
23
|
export const distinctRandTupleInt = (nb, size, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questionTest.d.ts","sourceRoot":"","sources":["../../src/tests/questionTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAIjE,eAAO,MAAM,YAAY,QAAS,QAAQ,YAAY,QAAQ;;;
|
|
1
|
+
{"version":3,"file":"questionTest.d.ts","sourceRoot":"","sources":["../../src/tests/questionTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAIjE,eAAO,MAAM,YAAY,QAAS,QAAQ,YAAY,QAAQ;;;CA8K7D,CAAC"}
|
|
@@ -123,8 +123,8 @@ export const questionTest = (exo, question) => {
|
|
|
123
123
|
throw new Error(`exo ${exo.id} has too many props`);
|
|
124
124
|
const rightAnswers = props.filter((prop) => prop.isRightAnswer).length;
|
|
125
125
|
if (exo.isQCM) {
|
|
126
|
-
if (rightAnswers <
|
|
127
|
-
throw new Error(`exo ${exo.id} has invalid props`);
|
|
126
|
+
if (rightAnswers < 1)
|
|
127
|
+
throw new Error(`exo ${exo.id} has invalid props, ${props.map((p) => p.statement)}`);
|
|
128
128
|
}
|
|
129
129
|
else {
|
|
130
130
|
if (rightAnswers !== 1)
|