math-exercises 3.0.115 → 3.0.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/lib/exercises/exercise.d.ts +12 -4
  2. package/lib/exercises/exercise.d.ts.map +1 -1
  3. package/lib/exercises/math/dataRepresentations/compareBoxPlot.d.ts +13 -0
  4. package/lib/exercises/math/dataRepresentations/compareBoxPlot.d.ts.map +1 -0
  5. package/lib/exercises/math/dataRepresentations/compareBoxPlot.js +192 -0
  6. package/lib/exercises/math/dataRepresentations/index.d.ts +1 -0
  7. package/lib/exercises/math/dataRepresentations/index.d.ts.map +1 -1
  8. package/lib/exercises/math/dataRepresentations/index.js +1 -0
  9. package/lib/exercises/math/derivation/tangent/derivativeNumberReading.d.ts.map +1 -1
  10. package/lib/exercises/math/derivation/tangent/derivativeNumberReading.js +0 -1
  11. package/lib/exercises/math/functions/affines/index.d.ts +1 -0
  12. package/lib/exercises/math/functions/affines/index.d.ts.map +1 -1
  13. package/lib/exercises/math/functions/affines/index.js +1 -0
  14. package/lib/exercises/math/functions/affines/recognizeAffineGraph.d.ts +18 -0
  15. package/lib/exercises/math/functions/affines/recognizeAffineGraph.d.ts.map +1 -0
  16. package/lib/exercises/math/functions/affines/recognizeAffineGraph.js +144 -0
  17. package/lib/index.d.ts +777 -760
  18. package/lib/index.d.ts.map +1 -1
  19. package/lib/latexTester.d.ts.map +1 -1
  20. package/lib/latexTester.js +3 -1
  21. package/lib/math/polynomials/trinom.d.ts +1 -0
  22. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  23. package/lib/math/polynomials/trinom.js +5 -0
  24. package/lib/utils/strings/capitalize.d.ts +2 -0
  25. package/lib/utils/strings/capitalize.d.ts.map +1 -0
  26. package/lib/utils/strings/capitalize.js +3 -0
  27. package/package.json +1 -1
@@ -21,14 +21,22 @@ export declare enum GeneratorOptionType {
21
21
  select = "select",
22
22
  multiselect = "multiselect"
23
23
  }
24
- export type GeneratorOption<TValue = string | number | boolean | string[]> = {
24
+ export type GeneratorOption<TValue = string | number | boolean | string[] | number[] | boolean[]> = {
25
25
  id: string;
26
26
  label: string;
27
- type: GeneratorOptionType;
27
+ type: GeneratorOptionType.checkbox | GeneratorOptionType.select;
28
28
  target: GeneratorOptionTarget;
29
29
  tooltipText?: string;
30
- defaultValue?: TValue;
31
30
  values?: TValue[];
31
+ defaultValue?: TValue;
32
+ } | {
33
+ id: string;
34
+ label: string;
35
+ type: GeneratorOptionType.multiselect;
36
+ target: GeneratorOptionTarget;
37
+ tooltipText?: string;
38
+ values?: TValue;
39
+ defaultValue?: TValue;
32
40
  };
33
41
  export type Proposition = {
34
42
  id: string;
@@ -131,7 +139,7 @@ export type GetTests<TIdentifiers, TOptions = object> = () => TestData<TIdentifi
131
139
  type PDFOptions = {
132
140
  shouldSpreadPropositions?: boolean;
133
141
  };
134
- export interface Exercise<TIdentifiers, TOptions = object, TOptionValue = string | number | boolean | string[]> {
142
+ export interface Exercise<TIdentifiers, TOptions = object, TOptionValue = string | number | boolean | string[] | number[] | boolean[]> {
135
143
  id: string;
136
144
  isSingleStep: boolean;
137
145
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Exercise } from "../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ indexTopic: number;
4
+ isLess: boolean;
5
+ arrDistrib: Distrib[];
6
+ };
7
+ type Distrib = {
8
+ name: string;
9
+ indicators: number[];
10
+ };
11
+ export declare const compareBoxPlot: Exercise<Identifiers>;
12
+ export {};
13
+ //# sourceMappingURL=compareBoxPlot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareBoxPlot.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/compareBoxPlot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAQrC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,EAAE,CAAC;CACvB,CAAC;AAKF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AA+PF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAoBhD,CAAC"}
@@ -0,0 +1,192 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../exercises/utils/getDistinctQuestions.js";
3
+ import { blueDark, red } from "../../../geogebra/colors.js";
4
+ import { GeogebraConstructor } from "../../../geogebra/geogebraConstructor.js";
5
+ import { randint } from "../../../math/utils/random/randint.js";
6
+ import { coinFlip } from "../../../utils/alea/coinFlip.js";
7
+ import { randomMany } from "../../../utils/alea/random.js";
8
+ const distribNames = ["A", "B"];
9
+ const colors = [blueDark, red];
10
+ class Topic {
11
+ type;
12
+ questions1;
13
+ funcIndicator;
14
+ constructor(type, questions1, funcIndicator) {
15
+ this.type = type;
16
+ this.questions1 = questions1;
17
+ this.funcIndicator = funcIndicator;
18
+ }
19
+ getQuestion(isLess) {
20
+ return `Quelle série a ${this.getFrenchStringForTheMoreOrLessIndicator(isLess)} ?`;
21
+ }
22
+ getFrenchStringForTheMoreOrLessIndicator(isLess) {
23
+ return this.questions1[isLess ? 0 : 1];
24
+ }
25
+ compare(d1, d2) {
26
+ return this.funcIndicator(d1) - this.funcIndicator(d2);
27
+ }
28
+ isCompatibleWithArrDistrib(arrDistrib) {
29
+ const arrIndicator = arrDistrib.map((d) => this.funcIndicator(d));
30
+ return arrIndicator[1] !== arrIndicator[0];
31
+ }
32
+ }
33
+ const arrTopic = [
34
+ new Topic("l'étendue", ["la plus petite étendue", "la plus grande étendue"], (d) => d.indicators[4] - d.indicators[0]),
35
+ new Topic("l'écart interquartile", ["le plus petit écart interquartile", "le plus grand écart interquartile"], (d) => d.indicators[3] - d.indicators[1]),
36
+ new Topic("le minimum", ["le minimum le plus petit", "le minimum le plus grand"], (d) => d.indicators[0]),
37
+ new Topic("la médiane", ["la plus petite médiane", "la plus grande médiane"], (d) => d.indicators[2]),
38
+ new Topic("le maximum", ["le maximum le plus petit", "le maximum le plus grand"], (d) => d.indicators[4]),
39
+ ];
40
+ const createRandomDistrib = (name, min = 5, max = 20) => {
41
+ const indicators = randomMany([...Array(max - min + 1).keys()].map((i) => i + min), 5).toSorted((i1, i2) => i1 - i2);
42
+ const d = {
43
+ name,
44
+ indicators: indicators,
45
+ };
46
+ return d;
47
+ };
48
+ const getPropositions = (n, { answer, arrDistrib }) => {
49
+ const propositions = [];
50
+ addValidProp(propositions, answer);
51
+ arrDistrib.forEach((d) => {
52
+ tryToAddWrongProp(propositions, d.name);
53
+ });
54
+ return shuffleProps(propositions, n);
55
+ };
56
+ const getAnswer = (identifiers) => {
57
+ const { indexTopic, isLess: isLess, arrDistrib } = identifiers;
58
+ const topic = arrTopic[indexTopic];
59
+ const funcCompare = (d1, d2) => isLess ? topic.compare(d1, d2) : topic.compare(d2, d1);
60
+ const arrDistribSorted = arrDistrib.toSorted(funcCompare);
61
+ const distribAnswer = arrDistribSorted[0];
62
+ return distribAnswer.name;
63
+ };
64
+ const getInstruction = (identifiers) => {
65
+ const { indexTopic, isLess: isLess, arrDistrib } = identifiers;
66
+ return `Voici $${arrDistrib.length}$ boîtes à moustaches, chacune représentant une série statistique spécifique.
67
+
68
+ ${arrTopic[indexTopic].getQuestion(isLess)}`;
69
+ };
70
+ const getHint = () => {
71
+ return `Une boite à moustaches permet de lire les indicateurs statistiques d'une série :
72
+
73
+ ![](https://heureuxhasarddocsbucket.s3.eu-west-3.amazonaws.com/mathliveV2/activities/quizzes/generator/boxplot.png)
74
+ `;
75
+ };
76
+ const getCorrection = (identifiers) => {
77
+ const { indexTopic, isLess: isLess, arrDistrib } = identifiers;
78
+ const topic = arrTopic[indexTopic];
79
+ return `${arrDistrib.map((d) => `Pour la série $${d.name}$, ${topic.type} vaut $${topic
80
+ .funcIndicator(d)
81
+ .frenchify()}$.`).join(`
82
+
83
+ `)}
84
+
85
+
86
+ C'est donc la série $${getAnswer(identifiers)}$ qui a ${topic.getFrenchStringForTheMoreOrLessIndicator(isLess)}.`;
87
+ };
88
+ const getGGBOptions = (identifiers) => {
89
+ const { arrDistrib } = identifiers;
90
+ const yPaddingPure = 3;
91
+ const yAltitude0Pure = 5;
92
+ const yScale = 4;
93
+ const yPadding = yPaddingPure + yScale;
94
+ const yAltitude0 = yAltitude0Pure + yScale / 2;
95
+ const xMin = Math.min(...arrDistrib.map((d) => d.indicators[0]));
96
+ const xMax = Math.max(...arrDistrib.map((d) => d.indicators[4]));
97
+ const yMin = -yAltitude0;
98
+ const yMax = yAltitude0 + arrDistrib.length * yPadding;
99
+ const xLabel = xMin - 2;
100
+ function createBoxPlotCommands(d, color, yOffset, yScale, xLabel) {
101
+ const [q0, q1, q2, q3, q4] = d.indicators;
102
+ const commands = [
103
+ `B_${d.name} = BoxPlot(${yOffset}, ${yScale}, ${q0}, ${q1}, ${q2}, ${q3}, ${q4})`,
104
+ `SetColor(B_${d.name}, "${color}")`,
105
+ `ShowLabel(B_${d.name}, false)`,
106
+ `T_${d.name} = Text("\\footnotesize ${d.name}", (${xLabel},${yOffset + 4}), true, true)`,
107
+ `SetColor(T_${d.name}, "${color}")`,
108
+ ];
109
+ return commands;
110
+ }
111
+ const commands = arrDistrib.flatMap((d, i) => createBoxPlotCommands(d, colors[i], yAltitude0 + (yPadding + yScale) * i, yScale, xLabel));
112
+ const ggb = new GeogebraConstructor({
113
+ commands,
114
+ forbidShiftDragZoom: false,
115
+ lockedAxesRatio: false,
116
+ hideGrid: true,
117
+ xAxis: {
118
+ hideNumbers: false,
119
+ steps: 1,
120
+ },
121
+ yAxis: {
122
+ hidden: true,
123
+ },
124
+ maxHeight: 100,
125
+ fontSize: 20,
126
+ });
127
+ return ggb.getOptions({
128
+ coords: [xMin - 5, xMax + 5, yMin - 5, yMax + 5],
129
+ });
130
+ };
131
+ const isAnswerValid = (ans, { answer }) => {
132
+ const ansRefined = ans.split(";").toSorted().join(";");
133
+ return ansRefined === answer;
134
+ };
135
+ const getBoxPlotReadingQuestion = () => {
136
+ const nbDistri = 2;
137
+ const nbInAnswer = 1;
138
+ const genParams = {
139
+ min: 0,
140
+ max: 20,
141
+ nbUniqueValues: 7,
142
+ minCount: 1,
143
+ maxCount: 5,
144
+ };
145
+ const arrDistrib = [...Array(nbDistri).keys()].map((i) => {
146
+ const name = distribNames[i];
147
+ const d = createRandomDistrib(name, genParams.min, genParams.max);
148
+ return d;
149
+ });
150
+ const isLess = coinFlip();
151
+ let indexTopic;
152
+ let isQuestionOk = false;
153
+ do {
154
+ indexTopic = randint(0, arrTopic.length);
155
+ const topic = arrTopic[indexTopic];
156
+ isQuestionOk = topic.isCompatibleWithArrDistrib(arrDistrib);
157
+ } while (!isQuestionOk);
158
+ const identifiers = { nbInAnswer, indexTopic, isLess, arrDistrib };
159
+ return getQuestionFromIdentifiers(identifiers);
160
+ };
161
+ const getQuestionFromIdentifiers = (identifiers) => {
162
+ return {
163
+ answer: getAnswer(identifiers),
164
+ instruction: getInstruction(identifiers),
165
+ keys: [],
166
+ answerFormat: "tex",
167
+ identifiers,
168
+ hint: getHint(identifiers),
169
+ correction: getCorrection(identifiers),
170
+ ggbOptions: getGGBOptions(identifiers),
171
+ };
172
+ };
173
+ export const compareBoxPlot = {
174
+ id: "compareBoxPlot",
175
+ label: "Comparer des séries à l'aide de boîtes à moustaches",
176
+ isSingleStep: true,
177
+ generator: (nb) => getDistinctQuestions(() => getBoxPlotReadingQuestion(), nb),
178
+ qcmTimer: 60,
179
+ freeTimer: 60,
180
+ getPropositions,
181
+ isAnswerValid,
182
+ subject: "Mathématiques",
183
+ getHint,
184
+ getCorrection,
185
+ getInstruction,
186
+ getAnswer,
187
+ getGGBOptions,
188
+ hasGeogebra: true,
189
+ getQuestionFromIdentifiers,
190
+ hasHintAndCorrection: true,
191
+ answerType: "QCU",
192
+ };
@@ -4,4 +4,5 @@ export * from "./functionGraphReading.js";
4
4
  export * from "./pieChartReading.js";
5
5
  export * from "./boxPlotReadingPercentages.js";
6
6
  export * from "./boxPlotReading.js";
7
+ export * from "./compareBoxPlot.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -4,6 +4,7 @@ export * from "./functionGraphReading.js";
4
4
  export * from "./pieChartReading.js";
5
5
  export * from "./boxPlotReadingPercentages.js";
6
6
  export * from "./boxPlotReading.js";
7
+ export * from "./compareBoxPlot.js";
7
8
  // export * from "./testGen.js";
8
9
  // export * from "./testGenGGB.js";
9
10
  // export * from "./testGenStudentGGB.js";
@@ -1 +1 @@
1
- {"version":3,"file":"derivativeNumberReading.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/tangent/derivativeNumberReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAgIF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
1
+ {"version":3,"file":"derivativeNumberReading.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/tangent/derivativeNumberReading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AA+HF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
@@ -44,7 +44,6 @@ const getGGBOptions = (identifiers) => {
44
44
  const penteString = penteTree.toMathString();
45
45
  const originString = originTree.toMathString();
46
46
  const polynome = new Polynomial(identifiers.coeffs);
47
- console.log(polynome.toMathString());
48
47
  const commands = [
49
48
  `f(x) = ${polynome.toMathString()}`,
50
49
  `SetColor(f, "${blueMain}")`,
@@ -13,5 +13,6 @@ export * from "./affineMeanValue.js";
13
13
  export * from "./affineExpressionFromTwoImages.js";
14
14
  export * from "./affineFromExercise.js";
15
15
  export * from "./drawAffineFrom2Points.js";
16
+ export * from "./recognizeAffineGraph.js";
16
17
  export * from "./drawAffineFromLitExp.js";
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/affines/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/affines/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC"}
@@ -13,4 +13,5 @@ export * from "./affineMeanValue.js";
13
13
  export * from "./affineExpressionFromTwoImages.js";
14
14
  export * from "./affineFromExercise.js";
15
15
  export * from "./drawAffineFrom2Points.js";
16
+ export * from "./recognizeAffineGraph.js";
16
17
  export * from "./drawAffineFromLitExp.js";
@@ -0,0 +1,18 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type ColorProps = {
4
+ strFrench: string;
5
+ hashRgb: string;
6
+ };
7
+ type FunctionProps = {
8
+ fName: string;
9
+ colorProps: ColorProps;
10
+ };
11
+ type Identifiers = {
12
+ arrNodeIds: NodeIdentifiers[];
13
+ arrFProps: FunctionProps[];
14
+ isLinear: boolean;
15
+ };
16
+ export declare const recognizeAffineGraph: Exercise<Identifiers>;
17
+ export {};
18
+ //# sourceMappingURL=recognizeAffineGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recognizeAffineGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/affines/recognizeAffineGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAc7C,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAmBF,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AA+IF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAgBtD,CAAC"}
@@ -0,0 +1,144 @@
1
+ import { addValidProp, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { blueDark, orange, red } from "../../../../geogebra/colors.js";
4
+ import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
5
+ import { AffineConstructor } from "../../../../math/polynomials/affine.js";
6
+ import { TrinomConstructor } from "../../../../math/polynomials/trinom.js";
7
+ import { randint } from "../../../../math/utils/random/randint.js";
8
+ import { exp } from "../../../../tree/nodes/functions/expNode.js";
9
+ import { NodeConstructor, } from "../../../../tree/nodes/nodeConstructor.js";
10
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
11
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
12
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
13
+ import { randomMany } from "../../../../utils/alea/random.js";
14
+ import { shuffle } from "../../../../utils/alea/shuffle.js";
15
+ const DISPLAY_PROPS = {
16
+ xMin: -5,
17
+ xMax: +5,
18
+ yMin: -5,
19
+ yMax: +5,
20
+ };
21
+ const arrColorProps = [
22
+ {
23
+ strFrench: "rouge",
24
+ hashRgb: red,
25
+ },
26
+ {
27
+ strFrench: "bleu",
28
+ hashRgb: blueDark,
29
+ },
30
+ {
31
+ strFrench: "orange",
32
+ hashRgb: orange,
33
+ },
34
+ ];
35
+ const arrFName = ["f", "g", "h"];
36
+ const getInstruction = (identifiers) => {
37
+ const { isLinear, arrFProps } = identifiers;
38
+ const arrFPropsSorted = arrFProps.toSorted((fProps1, fProps2) => fProps1.fName.localeCompare(fProps2.fName));
39
+ return `Ci-dessous sont tracées les courbes représentatives d'une fonction $${arrFPropsSorted[0].fName}$ (en ${arrFPropsSorted[0].colorProps.strFrench}), d'une fonction $${arrFPropsSorted[1].fName}$ (en ${arrFPropsSorted[1].colorProps.strFrench}) et d'une fonction $${arrFPropsSorted[2].fName}$ (en ${arrFPropsSorted[2].colorProps.strFrench}).
40
+
41
+ Quelle fonction est ${isLinear ? "linéaire" : "affine"} ?`;
42
+ };
43
+ const getGGBOptions = (identifiers) => {
44
+ const { arrNodeIds, arrFProps } = identifiers;
45
+ function createFunctionCommands(nodeIds, fName, color) {
46
+ const nodeF = NodeConstructor.fromIdentifiers(nodeIds);
47
+ const expr = nodeF.toMathString();
48
+ return [
49
+ `${fName} = Function(${expr}, x, -20, 20)`,
50
+ // `ShowLabel(${fName}, true)`,
51
+ // `SetCaption(${fName}, "C_${fName}")`,
52
+ `SetColor(${fName}, "${color}")`,
53
+ ];
54
+ }
55
+ const commands = arrNodeIds.flatMap((_, i) => createFunctionCommands(arrNodeIds[i], arrFProps[i].fName, arrFProps[i].colorProps.hashRgb));
56
+ const ggb = new GeogebraConstructor({
57
+ commands,
58
+ });
59
+ const { xMin, xMax, yMin, yMax } = DISPLAY_PROPS;
60
+ return ggb.getOptions({
61
+ coords: ggb.getAdaptedCoords({ xMin, xMax, yMin, yMax }),
62
+ });
63
+ };
64
+ const getHint = () => {
65
+ return `Les fonctions affines et linéaires sont représentées par des droites.`;
66
+ };
67
+ const getCorrection = (identifiers) => {
68
+ const { isLinear, arrFProps } = identifiers;
69
+ const strFName = arrFProps[0].fName;
70
+ const strColor = arrFProps[0].colorProps.strFrench;
71
+ return `Une fonction ${isLinear ? "linéaire" : "affine"} est représentée par une droite ${isLinear ? "passant par l'origine" : ""}.
72
+ La seule droite ici est la courbe en ${strColor}.
73
+ La fonction ${isLinear ? "linéaire" : "affine"} est donc $${strFName}$.`;
74
+ };
75
+ const getAnswer = (identifiers) => {
76
+ const { arrFProps } = identifiers;
77
+ return arrFProps[0].fName;
78
+ };
79
+ const getRecognizeAffineGraphQuestion = () => {
80
+ const isLinear = coinFlip();
81
+ const { xMin, xMax, yMin, yMax } = DISPLAY_PROPS;
82
+ const arrNodeIds = [
83
+ AffineConstructor.random({ min: -10, max: 10 }, { min: isLinear ? 0 : -10, max: isLinear ? 0 : 10 }, "x").toTree(),
84
+ add(multiply(randint(-0.5, 0.5, [0]), exp("x")), randint(-5, 5)),
85
+ (() => {
86
+ const rootsPool = [...Array(xMax - xMin).keys()].map((i) => i + xMin);
87
+ const roots = randomMany(rootsPool, 2).toSorted((i1, i2) => i1 - i2);
88
+ const ySummit = randint(yMin, yMax, [0]);
89
+ return TrinomConstructor.fromRootsAndSummitY(roots, ySummit).toTree();
90
+ })(),
91
+ ].map((node) => node.toIdentifiers());
92
+ const arrFNameShuffled = shuffle(arrFName);
93
+ const arrColorPropsShuffled = shuffle(arrColorProps);
94
+ const arrFProps = arrFNameShuffled.map((_, i) => {
95
+ return { fName: arrFName[i], colorProps: arrColorPropsShuffled[i] };
96
+ });
97
+ const identifiers = { arrNodeIds, arrFProps, isLinear };
98
+ return getQuestionFromIdentifiers(identifiers);
99
+ };
100
+ const getQuestionFromIdentifiers = (identifiers) => {
101
+ const question = {
102
+ answer: getAnswer(identifiers),
103
+ instruction: getInstruction(identifiers),
104
+ keys: [],
105
+ ggbOptions: getGGBOptions(identifiers),
106
+ answerFormat: "tex",
107
+ identifiers,
108
+ hint: getHint(identifiers),
109
+ correction: getCorrection(identifiers),
110
+ };
111
+ return question;
112
+ };
113
+ const getPropositions = (_, { answer, ...idenfitiers }) => {
114
+ const { arrFProps } = idenfitiers;
115
+ const propositions = [];
116
+ //keep same order on each question
117
+ arrFProps.forEach((fProps) => {
118
+ if (fProps.fName === answer) {
119
+ addValidProp(propositions, answer);
120
+ }
121
+ else {
122
+ tryToAddWrongProp(propositions, fProps.fName);
123
+ }
124
+ });
125
+ return propositions;
126
+ };
127
+ const isAnswerValid = (ans, { answer }) => {
128
+ return ans === answer;
129
+ };
130
+ export const recognizeAffineGraph = {
131
+ id: "recognizeAffineGraph",
132
+ label: "Reconnaître la représentation graphique d'une fonction linéaire ou d'une fonction affine",
133
+ isSingleStep: true,
134
+ generator: (nb) => getDistinctQuestions(getRecognizeAffineGraphQuestion, nb),
135
+ qcmTimer: 60,
136
+ freeTimer: 60,
137
+ getPropositions,
138
+ isAnswerValid,
139
+ hasGeogebra: true,
140
+ subject: "Mathématiques",
141
+ getQuestionFromIdentifiers,
142
+ hasHintAndCorrection: true,
143
+ answerType: "QCU",
144
+ };