math-exercises 3.0.191 → 3.0.192

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 (52) hide show
  1. package/lib/exercises/math/dataRepresentations/barChart/barChartInterpreting.d.ts +53 -0
  2. package/lib/exercises/math/dataRepresentations/barChart/barChartInterpreting.d.ts.map +1 -0
  3. package/lib/exercises/math/dataRepresentations/barChart/barChartInterpreting.js +543 -0
  4. package/lib/exercises/math/dataRepresentations/barChart/barChartReading.d.ts +94 -0
  5. package/lib/exercises/math/dataRepresentations/barChart/barChartReading.d.ts.map +1 -0
  6. package/lib/exercises/math/dataRepresentations/barChart/barChartReading.js +280 -0
  7. package/lib/exercises/math/dataRepresentations/barChart/index.d.ts +3 -0
  8. package/lib/exercises/math/dataRepresentations/barChart/index.d.ts.map +1 -0
  9. package/lib/exercises/math/dataRepresentations/barChart/index.js +2 -0
  10. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotInterpreting.d.ts +7 -0
  11. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotInterpreting.d.ts.map +1 -0
  12. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotInterpreting.js +223 -0
  13. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotReading.d.ts +9 -0
  14. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotReading.d.ts.map +1 -0
  15. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotReading.js +133 -0
  16. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotReadingPercentages.d.ts +11 -0
  17. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotReadingPercentages.d.ts.map +1 -0
  18. package/lib/exercises/math/dataRepresentations/boxPlot/boxPlotReadingPercentages.js +198 -0
  19. package/lib/exercises/math/dataRepresentations/boxPlot/compareBoxPlot.d.ts +13 -0
  20. package/lib/exercises/math/dataRepresentations/boxPlot/compareBoxPlot.d.ts.map +1 -0
  21. package/lib/exercises/math/dataRepresentations/boxPlot/compareBoxPlot.js +192 -0
  22. package/lib/exercises/math/dataRepresentations/boxPlot/index.d.ts +5 -0
  23. package/lib/exercises/math/dataRepresentations/boxPlot/index.d.ts.map +1 -0
  24. package/lib/exercises/math/dataRepresentations/boxPlot/index.js +4 -0
  25. package/lib/exercises/math/dataRepresentations/index.d.ts +4 -7
  26. package/lib/exercises/math/dataRepresentations/index.d.ts.map +1 -1
  27. package/lib/exercises/math/dataRepresentations/index.js +4 -11
  28. package/lib/exercises/math/dataRepresentations/tables/buildDoubleTableFromContext.d.ts +7 -0
  29. package/lib/exercises/math/dataRepresentations/tables/buildDoubleTableFromContext.d.ts.map +1 -0
  30. package/lib/exercises/math/dataRepresentations/tables/buildDoubleTableFromContext.js +222 -0
  31. package/lib/exercises/math/dataRepresentations/tables/fillDoubleTable.d.ts +7 -0
  32. package/lib/exercises/math/dataRepresentations/tables/fillDoubleTable.d.ts.map +1 -0
  33. package/lib/exercises/math/dataRepresentations/tables/fillDoubleTable.js +187 -0
  34. package/lib/exercises/math/dataRepresentations/tables/index.d.ts +4 -0
  35. package/lib/exercises/math/dataRepresentations/tables/index.d.ts.map +1 -0
  36. package/lib/exercises/math/dataRepresentations/tables/index.js +3 -0
  37. package/lib/exercises/math/dataRepresentations/tables/tableReading.d.ts +8 -0
  38. package/lib/exercises/math/dataRepresentations/tables/tableReading.d.ts.map +1 -0
  39. package/lib/exercises/math/dataRepresentations/tables/tableReading.js +109 -0
  40. package/lib/exercises/math/derivation/applications/findYearForDecreasingPopulation.d.ts +8 -0
  41. package/lib/exercises/math/derivation/applications/findYearForDecreasingPopulation.d.ts.map +1 -0
  42. package/lib/exercises/math/derivation/applications/findYearForDecreasingPopulation.js +145 -0
  43. package/lib/exercises/math/derivation/applications/index.d.ts +1 -0
  44. package/lib/exercises/math/derivation/applications/index.d.ts.map +1 -1
  45. package/lib/exercises/math/derivation/applications/index.js +1 -0
  46. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.d.ts.map +1 -1
  47. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.js +7 -2
  48. package/lib/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.d.ts.map +1 -1
  49. package/lib/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.js +131 -61
  50. package/lib/index.d.ts +32 -25
  51. package/lib/index.d.ts.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,145 @@
1
+ import { addValidProp, shuffleProps, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
4
+ import { Affine } from "../../../../math/polynomials/affine.js";
5
+ import { TrinomConstructor } from "../../../../math/polynomials/trinom.js";
6
+ import { randfloat } from "../../../../math/utils/random/randfloat.js";
7
+ import { randint } from "../../../../math/utils/random/randint.js";
8
+ import { round } from "../../../../math/utils/round.js";
9
+ import { firstDegreeInequationResolutionTex } from "../../../../tree/nodes/inequations/inequationNode.js";
10
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
11
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
12
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
13
+ const getPropositions = (n, { answer, coeffs, isAskingX }) => {
14
+ const propositions = [];
15
+ addValidProp(propositions, answer);
16
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
17
+ propWhile(propositions, n, () => {
18
+ if (isAskingX)
19
+ tryToAddWrongProp(propositions, (2013 + randint(1, 20)).frenchify());
20
+ else
21
+ tryToAddWrongProp(propositions, trinom
22
+ .toTree()
23
+ .toDetailedEvaluation({
24
+ x: randint(1, 20).toTree(),
25
+ })
26
+ .simplify()
27
+ .toTex());
28
+ });
29
+ return shuffleProps(propositions, n);
30
+ };
31
+ const getAnswer = (identifiers) => {
32
+ const { coeffs, isAskingX } = identifiers;
33
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
34
+ const a = round(2 * coeffs[2], 4);
35
+ const b = coeffs[1];
36
+ const root = frac(-b, a).simplify();
37
+ if (isAskingX) {
38
+ return round(2013 + root.evaluate(), 4).frenchify();
39
+ }
40
+ return trinom
41
+ .toTree()
42
+ .toDetailedEvaluation({
43
+ x: root,
44
+ })
45
+ .simplify()
46
+ .toTex();
47
+ };
48
+ const getInstruction = (identifiers) => {
49
+ const { coeffs, isAskingX } = identifiers;
50
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
51
+ return `On estime que la population d'une ville, exprimée en milliers d'habitants, peut être modélisée par la fonction $f$ définie sur $[0; +\\infty[$ par :
52
+
53
+ $$
54
+ f(x) = ${trinom.toTree().toTex()}
55
+ $$
56
+
57
+ où $x$ est la durée, en année, écoulée depuis $2013$.
58
+
59
+ ${isAskingX
60
+ ? `En quelle année la population de la ville est-elle maximale ?`
61
+ : `Quelle est la population maximale de la ville ?`}`;
62
+ };
63
+ const getHint = () => {
64
+ return `Calcule la dérivée $f'$ de $f$, puis étudie son signe. Le maximum de $f$ est atteint pour la valeur de $x$ telle que $f'(x) = 0$ et telle que $f'$ change de signe en $x$.`;
65
+ };
66
+ const getCorrection = (identifiers) => {
67
+ const { coeffs } = identifiers;
68
+ const trinom = TrinomConstructor.fromCoeffs(coeffs);
69
+ const a = round(2 * coeffs[2], 4);
70
+ const b = coeffs[1];
71
+ const affine = new Affine(a, b);
72
+ const root = frac(-b, a).simplify();
73
+ const froot = trinom.toTree().toDetailedEvaluation({ x: root }).simplify();
74
+ return `On calcule $f'(x)$ :
75
+
76
+ $$
77
+ f'(x) = ${trinom.derivate().toTree().toTex()}
78
+ $$
79
+
80
+ On étudie ensuite le signe de $f'(x)$ :
81
+
82
+ $$
83
+ ${firstDegreeInequationResolutionTex(affine, "\\ge", (0).toTree())}
84
+ $$
85
+
86
+ On en déduit donc que $f$ atteint son maximum pour $x = ${root.toTex()}$, et on a alors :
87
+
88
+ $$
89
+ f(${root.toTex()}) = ${froot.toTex()}
90
+ $$
91
+
92
+ La population de la ville est donc maximale à l'année $${round(2013 + root.evaluate(), 4)}$, et elle est alors de $${froot.toTex()}$ milliers d'habitants.`;
93
+ };
94
+ const getKeys = () => {
95
+ return [];
96
+ };
97
+ const isAnswerValid = (ans, { answer }) => {
98
+ try {
99
+ return numberVEA(ans, answer);
100
+ }
101
+ catch (err) {
102
+ return handleVEAError(err);
103
+ }
104
+ };
105
+ const getFindYearForDecreasingPopulationQuestion = () => {
106
+ const alpha = randint(1, 20);
107
+ const beta = randfloat(10, 100, 2);
108
+ const a = randfloat(-0.9, -0.1, 2);
109
+ const b = round(-2 * a * alpha, 4);
110
+ const c = round((beta + a * alpha) ^ 2, 4);
111
+ const identifiers = {
112
+ isAskingX: coinFlip(),
113
+ coeffs: [c, b, a],
114
+ };
115
+ return getQuestionFromIdentifiers(identifiers);
116
+ };
117
+ const getQuestionFromIdentifiers = (identifiers) => {
118
+ return {
119
+ answer: getAnswer(identifiers),
120
+ instruction: getInstruction(identifiers),
121
+ keys: getKeys(identifiers),
122
+ answerFormat: "tex",
123
+ identifiers,
124
+ hint: getHint(identifiers),
125
+ correction: getCorrection(identifiers),
126
+ };
127
+ };
128
+ export const findYearForDecreasingPopulation = {
129
+ id: "findYearForDecreasingPopulation",
130
+ connector: "=",
131
+ label: "Déterminer le maximum d'une population (dérivation)",
132
+ isSingleStep: true,
133
+ generator: (nb, opts) => getDistinctQuestions(() => getFindYearForDecreasingPopulationQuestion(opts), nb),
134
+ qcmTimer: 60,
135
+ freeTimer: 60,
136
+ getPropositions,
137
+ isAnswerValid,
138
+ subject: "Mathématiques",
139
+ getInstruction,
140
+ getHint,
141
+ getCorrection,
142
+ getAnswer,
143
+ getQuestionFromIdentifiers,
144
+ hasHintAndCorrection: true,
145
+ };
@@ -1,3 +1,4 @@
1
1
  export * from "./maxBenefice.js";
2
2
  export * from "./minimalCost.js";
3
+ export * from "./findYearForDecreasingPopulation.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sCAAsC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from "./maxBenefice.js";
2
2
  export * from "./minimalCost.js";
3
+ export * from "./findYearForDecreasingPopulation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"fillTableConditionalProbabilitySituation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,6BAA6B,CAAC;AAUrC,OAAO,EAGL,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,wBAAwB,CAAC;CAClC,CAAC;AAsOF,eAAO,MAAM,wCAAwC,EAAE,QAAQ,CAAC,WAAW,CAqB1E,CAAC"}
1
+ {"version":3,"file":"fillTableConditionalProbabilitySituation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,6BAA6B,CAAC;AAUrC,OAAO,EAGL,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,wBAAwB,CAAC;CAClC,CAAC;AA2OF,eAAO,MAAM,wCAAwC,EAAE,QAAQ,CAAC,WAAW,CAqB1E,CAAC"}
@@ -37,7 +37,12 @@ const getAnswerTable = (identifiers) => {
37
37
  .toTex()}`,
38
38
  `${substract(1, mainEventProbaDec).simplify().toTex()}`,
39
39
  ],
40
- ["Total", `${pb.toTex()}`, `${substract(1, pb).simplify().toTex()}`, "1"],
40
+ [
41
+ "\\text{Total}",
42
+ `${pb.toTex()}`,
43
+ `${substract(1, pb).simplify().toTex()}`,
44
+ "1",
45
+ ],
41
46
  ];
42
47
  };
43
48
  const getInstruction = (identifiers) => {
@@ -199,7 +204,7 @@ const getQuestionFromIdentifiers = (identifiers) => {
199
204
  ],
200
205
  [`$${situation.mainEvent}$`, "", "", ""],
201
206
  [`$\\overline{${situation.mainEvent}}$`, "", "", ""],
202
- ["Total", "", "", "1"],
207
+ ["\\text{Total}", "", "", "1"],
203
208
  ],
204
209
  };
205
210
  };
@@ -1 +1 @@
1
- {"version":3,"file":"marginalAndConditionalFrequency.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,QAAQ,EAYT,MAAM,sBAAsB,CAAC;AAG9B,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAmMF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAajE,CAAC"}
1
+ {"version":3,"file":"marginalAndConditionalFrequency.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,QAAQ,EAcT,MAAM,sBAAsB,CAAC;AAG9B,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAyPF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAcjE,CAAC"}
@@ -1,131 +1,194 @@
1
- import { Rational } from "../../../../math/numbers/rationals/rational.js";
1
+ import { rationalVEA } from "../../../../exercises/vea/rationalVEA.js";
2
2
  import { randint } from "../../../../math/utils/random/randint.js";
3
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
3
4
  import { random } from "../../../../utils/alea/random.js";
4
5
  import { shuffle } from "../../../../utils/alea/shuffle.js";
5
6
  import { dollarize } from "../../../../utils/latex/dollarize.js";
6
7
  import { mdTable } from "../../../../utils/markdown/mdTable.js";
7
8
  import { addValidProp, propWhile, tryToAddWrongProp, } from "../../../exercise.js";
8
9
  import { getDistinctQuestions } from "../../../utils/getDistinctQuestions.js";
9
- const getFreqStrings = (rand) => {
10
+ const getFreqStrings = (identifiers) => {
11
+ const { rand, x1, x2, x3, x4 } = identifiers;
12
+ const total = x1 + x2 + x3 + x4;
10
13
  let freqString = "";
11
14
  let frequence = "";
15
+ let mainEvent = "";
16
+ let subEvent = "";
17
+ let num = 0;
18
+ let denum = 0;
12
19
  switch (rand) {
13
20
  case 0:
14
21
  freqString = "marginale de $A$";
15
22
  frequence = "f(A)";
23
+ mainEvent = "A";
24
+ num = x1 + x3;
25
+ denum = total;
16
26
  break;
17
27
  case 1:
18
28
  freqString = "marginale de $B$";
19
29
  frequence = "f(B)";
30
+ mainEvent = "B";
31
+ num = x2 + x4;
32
+ denum = total;
20
33
  break;
21
34
  case 2:
22
35
  freqString = "marginale de $C$";
23
36
  frequence = "f(C)";
37
+ mainEvent = "C";
38
+ num = x1 + x2;
39
+ denum = total;
24
40
  break;
25
41
  case 3:
26
42
  freqString = "marginale de $D$";
27
43
  frequence = "f(D)";
44
+ mainEvent = "D";
45
+ num = x3 + x4;
46
+ denum = total;
28
47
  break;
29
48
  case 4:
30
49
  freqString = "conditionnelle de $A$ parmi $C$";
31
50
  frequence = "f_C(A)";
51
+ mainEvent = "A";
52
+ subEvent = "C";
53
+ num = x1;
54
+ denum = x1 + x2;
32
55
  break;
33
56
  case 5:
34
57
  freqString = "conditionnelle de $A$ parmi $D$";
35
58
  frequence = "f_D(A)";
59
+ mainEvent = "A";
60
+ subEvent = "D";
61
+ num = x3;
62
+ denum = x3 + x4;
36
63
  break;
37
64
  case 6:
38
65
  freqString = "conditionnelle de $B$ parmi $C$";
39
66
  frequence = "f_C(B)";
67
+ mainEvent = "B";
68
+ subEvent = "C";
69
+ num = x2;
70
+ denum = x1 + x2;
40
71
  break;
41
72
  case 7:
42
73
  freqString = "conditionnelle de $B$ parmi $D$";
43
74
  frequence = "f_D(B)";
75
+ mainEvent = "B";
76
+ subEvent = "D";
77
+ num = x4;
78
+ denum = x3 + x4;
44
79
  break;
45
80
  case 8:
46
81
  freqString = "conditionnelle de $C$ parmi $A$";
47
82
  frequence = "f_A(C)";
83
+ mainEvent = "C";
84
+ subEvent = "A";
85
+ num = x1;
86
+ denum = x1 + x3;
48
87
  break;
49
88
  case 9:
50
89
  freqString = "conditionnelle de $C$ parmi $B$";
51
90
  frequence = "f_B(C)";
91
+ mainEvent = "C";
92
+ subEvent = "B";
93
+ num = x2;
94
+ denum = x2 + x4;
52
95
  break;
53
96
  case 10:
54
97
  freqString = "conditionnelle de $D$ parmi $A$";
55
98
  frequence = "f_A(D)";
99
+ mainEvent = "D";
100
+ subEvent = "A";
101
+ num = x3;
102
+ denum = x1 + x3;
56
103
  break;
57
104
  case 11:
58
105
  freqString = "conditionnelle de $D$ parmi $B$";
59
106
  frequence = "f_B(D)";
107
+ mainEvent = "D";
108
+ subEvent = "B";
109
+ num = x4;
110
+ denum = x2 + x4;
60
111
  break;
61
112
  default:
62
113
  throw Error("error");
63
114
  }
64
- return { freqString, frequence };
115
+ return { freqString, frequence, mainEvent, subEvent, num, denum };
65
116
  };
66
- const getInstruction = ({ x1, x2, x3, x4, rand, }) => {
67
- const { freqString } = getFreqStrings(rand);
117
+ const getInstruction = (identifiers) => {
118
+ const { x1, x2, x3, x4 } = identifiers;
119
+ const { freqString } = getFreqStrings(identifiers);
68
120
  return `On considère le tableau d'effectifs suivant :
69
121
 
70
122
  ${mdTable([
71
- [" ", "$A$", "$B$"],
72
- ["$C$", dollarize(x1), dollarize(x2)],
73
- ["$D$", dollarize(x3), dollarize(x4)],
123
+ [" ", "$A$", "$B$", "Total"],
124
+ ["$C$", dollarize(x1), dollarize(x2), dollarize(x1 + x2)],
125
+ ["$D$", dollarize(x3), dollarize(x4), dollarize(x3 + x4)],
126
+ [
127
+ "Total",
128
+ dollarize(x1 + x3),
129
+ dollarize(x2 + x4),
130
+ dollarize(x1 + x2 + x3 + x4),
131
+ ],
74
132
  ])}
75
133
 
76
- Calculer la fréquence ${freqString}.`;
134
+ Calculer la fréquence ${freqString} (donner la valeur exacte ou une valeur arrondie au centième).`;
77
135
  };
78
- const getAnswerNode = (rand, x1, x2, x3, x4) => {
79
- const x = x1 + x2 + x3 + x4;
80
- let answer;
81
- switch (rand) {
82
- case 0:
83
- answer = new Rational(x1 + x3, x).simplify().toTree();
84
- break;
85
- case 1:
86
- answer = new Rational(x2 + x4, x).simplify().toTree();
87
- break;
88
- case 2:
89
- answer = new Rational(x1 + x2, x).simplify().toTree();
90
- break;
91
- case 3:
92
- answer = new Rational(x3 + x4, x).simplify().toTree();
93
- break;
94
- case 4:
95
- answer = new Rational(x1, x1 + x2).simplify().toTree();
96
- break;
97
- case 5:
98
- answer = new Rational(x3, x3 + x4).simplify().toTree();
99
- break;
100
- case 6:
101
- answer = new Rational(x2, x1 + x2).simplify().toTree();
102
- break;
103
- case 7:
104
- answer = new Rational(x4, x3 + x4).simplify().toTree();
105
- break;
106
- case 8:
107
- answer = new Rational(x1, x1 + x3).simplify().toTree();
108
- break;
109
- case 9:
110
- answer = new Rational(x2, x2 + x4).simplify().toTree();
111
- break;
112
- case 10:
113
- answer = new Rational(x3, x1 + x3).simplify().toTree();
114
- break;
115
- case 11:
116
- answer = new Rational(x4, x2 + x4).simplify().toTree();
117
- break;
118
- default:
119
- throw Error("error");
120
- }
121
- return answer;
136
+ const getAnswerNode = (identifiers) => {
137
+ const { num, denum } = getFreqStrings(identifiers);
138
+ return frac(num, denum).simplify();
122
139
  };
123
140
  const getAnswer = (identifiers) => {
124
- const { rand, x1, x2, x3, x4 } = identifiers;
125
- const answerNode = getAnswerNode(rand, x1, x2, x3, x4);
141
+ const answerNode = getAnswerNode(identifiers);
126
142
  const answer = answerNode.toTex();
127
143
  return answer;
128
144
  };
145
+ const getHint = (identifiers) => {
146
+ const { rand } = identifiers;
147
+ if (rand < 4) {
148
+ return `La fréquence marginale de $M$ s'obtient par le calcul :
149
+
150
+ $$
151
+ f(M) = \\frac{\\text{effectif total de } M}{\\text{effectif total}}
152
+ $$`;
153
+ }
154
+ return `La fréquence conditionnelle de $M$ parmi $N$ s'obtient par le calcul :
155
+
156
+ $$
157
+ f_N(M) = \\frac{\\text{effectif vérifiant à la fois } M \\text{ et } N}{\\text{effectif marginal de } N}
158
+ $$`;
159
+ };
160
+ const getCorrection = (identifiers) => {
161
+ const { rand } = identifiers;
162
+ const { freqString, frequence, mainEvent, subEvent, num, denum } = getFreqStrings(identifiers);
163
+ if (rand < 4) {
164
+ return `La fréquence ${freqString} s'obtient par le calcul :
165
+
166
+ $$
167
+ ${frequence} = \\frac{\\text{effectif total de } ${mainEvent}}{\\text{effectif total}}
168
+ $$
169
+
170
+ Ici, l'effectif total est $${denum.frenchify()}$, et l'effectif total de $${mainEvent}$ est $${num}$.
171
+
172
+ On a donc :
173
+
174
+ $$
175
+ ${frequence} = ${frac(num, denum).toSimplificationTex()}
176
+ $$`;
177
+ }
178
+ return `La fréquence ${freqString} s'obtient par le calcul :
179
+
180
+ $$
181
+ ${frequence} = \\frac{\\text{effectif vérifiant à la fois } ${mainEvent} \\text{ et } ${subEvent}}{\\text{effectif marginal de } ${subEvent}}
182
+ $$
183
+
184
+ Ici, l'effectif vérifiant à la fois $${mainEvent}$ et $${subEvent}$ est $${num}$, et l'effectif marginal de $${subEvent}$ est $${denum}$.
185
+
186
+ On a donc :
187
+
188
+ $$
189
+ ${frequence} = ${frac(num, denum).toSimplificationTex()}
190
+ $$`;
191
+ };
129
192
  const getMarginalAndConditionalFrequency = () => {
130
193
  const [x1, x2, x3, x4] = [1, 2, 3, 4].map((_el) => randint(1, 100));
131
194
  const rand = randint(0, 12);
@@ -135,7 +198,7 @@ const getMarginalAndConditionalFrequency = () => {
135
198
  const getQuestionFromIdentifiers = (identifiers) => {
136
199
  const question = {
137
200
  instruction: getInstruction(identifiers),
138
- startStatement: `${getFreqStrings(identifiers.rand).frequence}`,
201
+ startStatement: `${getFreqStrings(identifiers).frequence}`,
139
202
  answer: getAnswer(identifiers),
140
203
  keys: ["f", "cap", "underscore"],
141
204
  answerFormat: "tex",
@@ -147,6 +210,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
147
210
  firstRowIsHeader: true,
148
211
  },
149
212
  },
213
+ hint: getHint(identifiers),
214
+ correction: getCorrection(identifiers),
150
215
  };
151
216
  return question;
152
217
  };
@@ -155,15 +220,19 @@ const getPropositions = (n, { answer, x1, x2, x3, x4 }) => {
155
220
  addValidProp(propositions, answer);
156
221
  propWhile(propositions, n, () => {
157
222
  const fakeRand = randint(0, 12);
158
- const answerTree = getAnswerNode(fakeRand, x1 + random([0, 1]), x2 + random([0, 1]), x3 + random([0, 1]), x4 + random([0, 1]));
223
+ const answerTree = getAnswerNode({
224
+ rand: fakeRand,
225
+ x1: x1 + random([0, 1]),
226
+ x2: x2 + random([0, 1]),
227
+ x3: x3 + random([0, 1]),
228
+ x4: x4 + random([0, 1]),
229
+ });
159
230
  tryToAddWrongProp(propositions, answerTree.toTex());
160
231
  });
161
232
  return shuffle(propositions);
162
233
  };
163
- const isAnswerValid = (ans, { rand, x1, x2, x3, x4 }) => {
164
- const answerTree = getAnswerNode(rand, x1, x2, x3, x4);
165
- const texs = answerTree.toAllValidTexs({ allowFractionToDecimal: true });
166
- return texs.includes(ans);
234
+ const isAnswerValid = (ans, { answer }) => {
235
+ return rationalVEA(ans, answer);
167
236
  };
168
237
  export const marginalAndConditionalFrequency = {
169
238
  id: "marginalAndConditionalFrequency",
@@ -177,4 +246,5 @@ export const marginalAndConditionalFrequency = {
177
246
  isAnswerValid,
178
247
  subject: "Mathématiques",
179
248
  getQuestionFromIdentifiers,
249
+ hasHintAndCorrection: true,
180
250
  };
package/lib/index.d.ts CHANGED
@@ -1257,6 +1257,9 @@ declare const mathExercises: (Exercise<{
1257
1257
  }, {
1258
1258
  method: string;
1259
1259
  }> | Exercise<{
1260
+ coeffs: number[];
1261
+ isAskingX: boolean;
1262
+ }, Record<string, string | boolean | string[]>> | Exercise<{
1260
1263
  a: number;
1261
1264
  }, Record<string, string | boolean | string[]>> | Exercise<{
1262
1265
  a: number;
@@ -4385,32 +4388,9 @@ declare const mathExercises: (Exercise<{
4385
4388
  values: number[][];
4386
4389
  caseAsked: number;
4387
4390
  }, Record<string, string | boolean | string[]>> | Exercise<{
4388
- labels: string[];
4389
- data: number[];
4390
- itemAsked: number;
4391
- }, Record<string, string | boolean | string[]>> | Exercise<{
4392
- isAskingX: boolean;
4393
- xValue?: number;
4394
- yValue?: number;
4395
- a: number;
4396
- b: number;
4397
- }, Record<string, string | boolean | string[]>> | Exercise<{
4398
- points: number[][];
4399
- labels: string[];
4400
- }, Record<string, string | boolean | string[]>> | Exercise<{
4401
- quartiles: number[];
4402
- arrQuartileIndex: (0 | 1 | 2 | 3 | 4)[];
4403
- typeQ: "below" | "between" | "above";
4404
- }, Record<string, string | boolean | string[]>> | Exercise<{
4405
- quartileIndex: 0 | 1 | 2 | 3 | 4;
4406
- quartiles: number[];
4391
+ coeffs: (number | undefined)[][];
4407
4392
  }, Record<string, string | boolean | string[]>> | Exercise<{
4408
- indexTopic: number;
4409
- isLess: boolean;
4410
- arrDistrib: {
4411
- name: string;
4412
- indicators: number[];
4413
- }[];
4393
+ coeffs: (number | undefined)[][];
4414
4394
  }, Record<string, string | boolean | string[]>> | Exercise<{
4415
4395
  barChart: {
4416
4396
  description: string;
@@ -4450,6 +4430,19 @@ declare const mathExercises: (Exercise<{
4450
4430
  }, {
4451
4431
  displayType: string;
4452
4432
  }> | Exercise<{
4433
+ labels: string[];
4434
+ data: number[];
4435
+ itemAsked: number;
4436
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4437
+ isAskingX: boolean;
4438
+ xValue?: number;
4439
+ yValue?: number;
4440
+ a: number;
4441
+ b: number;
4442
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4443
+ points: number[][];
4444
+ labels: string[];
4445
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4453
4446
  indexSituation: number;
4454
4447
  bigNumber: number;
4455
4448
  }, Record<string, string | boolean | string[]>> | Exercise<{
@@ -4462,6 +4455,20 @@ declare const mathExercises: (Exercise<{
4462
4455
  evolutionType: string;
4463
4456
  }, Record<string, string | boolean | string[]>> | Exercise<{
4464
4457
  quartiles: number[];
4458
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4459
+ quartileIndex: 0 | 1 | 2 | 3 | 4;
4460
+ quartiles: number[];
4461
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4462
+ quartiles: number[];
4463
+ arrQuartileIndex: (0 | 1 | 2 | 3 | 4)[];
4464
+ typeQ: "below" | "between" | "above";
4465
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4466
+ indexTopic: number;
4467
+ isLess: boolean;
4468
+ arrDistrib: {
4469
+ name: string;
4470
+ indicators: number[];
4471
+ }[];
4465
4472
  }, Record<string, string | boolean | string[]>> | Exercise<{
4466
4473
  indexSituation: number;
4467
4474
  maxOrScam: number;
@@ -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;AAC7D,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAE3D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAA+B,CAAC;AACnD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAA6B,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAE3D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAA+B,CAAC;AACnD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAA6B,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "math-exercises",
3
3
  "type": "module",
4
- "version": "3.0.191",
4
+ "version": "3.0.192",
5
5
  "description": "Math exercises generator for middle school and high school",
6
6
  "main": "lib/index.js",
7
7
  "files": [