math-exercises 3.0.191 → 3.0.193

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 (94) 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/dataToGraphGraphToData.d.ts.map +1 -1
  26. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.js +1 -1
  27. package/lib/exercises/math/dataRepresentations/index.d.ts +4 -7
  28. package/lib/exercises/math/dataRepresentations/index.d.ts.map +1 -1
  29. package/lib/exercises/math/dataRepresentations/index.js +4 -11
  30. package/lib/exercises/math/dataRepresentations/tables/buildDoubleTableFromContext.d.ts +7 -0
  31. package/lib/exercises/math/dataRepresentations/tables/buildDoubleTableFromContext.d.ts.map +1 -0
  32. package/lib/exercises/math/dataRepresentations/tables/buildDoubleTableFromContext.js +222 -0
  33. package/lib/exercises/math/dataRepresentations/tables/fillDoubleTable.d.ts +7 -0
  34. package/lib/exercises/math/dataRepresentations/tables/fillDoubleTable.d.ts.map +1 -0
  35. package/lib/exercises/math/dataRepresentations/tables/fillDoubleTable.js +187 -0
  36. package/lib/exercises/math/dataRepresentations/tables/index.d.ts +4 -0
  37. package/lib/exercises/math/dataRepresentations/tables/index.d.ts.map +1 -0
  38. package/lib/exercises/math/dataRepresentations/tables/index.js +3 -0
  39. package/lib/exercises/math/dataRepresentations/tables/tableReading.d.ts +8 -0
  40. package/lib/exercises/math/dataRepresentations/tables/tableReading.d.ts.map +1 -0
  41. package/lib/exercises/math/dataRepresentations/tables/tableReading.js +109 -0
  42. package/lib/exercises/math/derivation/applications/findYearForDecreasingPopulation.d.ts +8 -0
  43. package/lib/exercises/math/derivation/applications/findYearForDecreasingPopulation.d.ts.map +1 -0
  44. package/lib/exercises/math/derivation/applications/findYearForDecreasingPopulation.js +145 -0
  45. package/lib/exercises/math/derivation/applications/index.d.ts +1 -0
  46. package/lib/exercises/math/derivation/applications/index.d.ts.map +1 -1
  47. package/lib/exercises/math/derivation/applications/index.js +1 -0
  48. package/lib/exercises/math/functions/exponentials/computeImageByExponentialFunctionInSituation.d.ts +10 -0
  49. package/lib/exercises/math/functions/exponentials/computeImageByExponentialFunctionInSituation.d.ts.map +1 -0
  50. package/lib/exercises/math/functions/exponentials/computeImageByExponentialFunctionInSituation.js +96 -0
  51. package/lib/exercises/math/functions/exponentials/computeImageByExponentialFunctionWithUnitChange.d.ts +11 -0
  52. package/lib/exercises/math/functions/exponentials/computeImageByExponentialFunctionWithUnitChange.d.ts.map +1 -0
  53. package/lib/exercises/math/functions/exponentials/computeImageByExponentialFunctionWithUnitChange.js +116 -0
  54. package/lib/exercises/math/functions/exponentials/index.d.ts +3 -0
  55. package/lib/exercises/math/functions/exponentials/index.d.ts.map +1 -1
  56. package/lib/exercises/math/functions/exponentials/index.js +3 -0
  57. package/lib/exercises/math/functions/exponentials/modelizeSituationByExponentialFunction.d.ts +9 -0
  58. package/lib/exercises/math/functions/exponentials/modelizeSituationByExponentialFunction.d.ts.map +1 -0
  59. package/lib/exercises/math/functions/exponentials/modelizeSituationByExponentialFunction.js +105 -0
  60. package/lib/exercises/math/functions/exponentials/plausibleExponentialFunctionExpressionFromGraph.js +2 -2
  61. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.d.ts.map +1 -1
  62. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.js +7 -2
  63. package/lib/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.d.ts.map +1 -1
  64. package/lib/exercises/math/probaStat/stats1var/marginalAndConditionalFrequency.js +131 -61
  65. package/lib/exercises/math/probaStat/stats2var/buildDataTableFromScatterplot.d.ts +8 -0
  66. package/lib/exercises/math/probaStat/stats2var/buildDataTableFromScatterplot.d.ts.map +1 -0
  67. package/lib/exercises/math/probaStat/stats2var/buildDataTableFromScatterplot.js +114 -0
  68. package/lib/exercises/math/probaStat/stats2var/buildScatterPlotFromDataTable.d.ts +8 -0
  69. package/lib/exercises/math/probaStat/stats2var/buildScatterPlotFromDataTable.d.ts.map +1 -0
  70. package/lib/exercises/math/probaStat/stats2var/buildScatterPlotFromDataTable.js +110 -0
  71. package/lib/exercises/math/probaStat/stats2var/index.d.ts +2 -0
  72. package/lib/exercises/math/probaStat/stats2var/index.d.ts.map +1 -1
  73. package/lib/exercises/math/probaStat/stats2var/index.js +2 -0
  74. package/lib/exercises/math/sequences/geometric/graph/compareGeometricReasonWithOneFromGraph.d.ts +8 -0
  75. package/lib/exercises/math/sequences/geometric/graph/compareGeometricReasonWithOneFromGraph.d.ts.map +1 -0
  76. package/lib/exercises/math/sequences/geometric/graph/compareGeometricReasonWithOneFromGraph.js +87 -0
  77. package/lib/exercises/math/sequences/geometric/graph/index.d.ts +4 -1
  78. package/lib/exercises/math/sequences/geometric/graph/index.d.ts.map +1 -1
  79. package/lib/exercises/math/sequences/geometric/graph/index.js +4 -1
  80. package/lib/exercises/math/sequences/geometric/graph/plausibleGeometricSequenceExpressionFromGraph.d.ts +12 -0
  81. package/lib/exercises/math/sequences/geometric/graph/plausibleGeometricSequenceExpressionFromGraph.d.ts.map +1 -0
  82. package/lib/exercises/math/sequences/geometric/graph/plausibleGeometricSequenceExpressionFromGraph.js +133 -0
  83. package/lib/exercises/math/sequences/geometric/graph/readGeometricExpressionFromGraph.d.ts +8 -0
  84. package/lib/exercises/math/sequences/geometric/graph/readGeometricExpressionFromGraph.d.ts.map +1 -0
  85. package/lib/exercises/math/sequences/geometric/graph/readGeometricExpressionFromGraph.js +132 -0
  86. package/lib/exercises/math/sequences/geometric/graph/recognizeGeometricFromGraph.d.ts +11 -0
  87. package/lib/exercises/math/sequences/geometric/graph/recognizeGeometricFromGraph.d.ts.map +1 -0
  88. package/lib/exercises/math/sequences/geometric/graph/recognizeGeometricFromGraph.js +137 -0
  89. package/lib/exercises/math/sequences/geometric/index.d.ts +1 -0
  90. package/lib/exercises/math/sequences/geometric/index.d.ts.map +1 -1
  91. package/lib/exercises/math/sequences/geometric/index.js +1 -0
  92. package/lib/index.d.ts +71 -25
  93. package/lib/index.d.ts.map +1 -1
  94. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/geometric/graph/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/geometric/graph/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,oDAAoD,CAAC;AACnE,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC"}
@@ -1 +1,4 @@
1
- export * from "./geometricPlaceFirstPoints.js";
1
+ export * from "./recognizeGeometricFromGraph.js";
2
+ export * from "./plausibleGeometricSequenceExpressionFromGraph.js";
3
+ export * from "./readGeometricExpressionFromGraph.js";
4
+ export * from "./compareGeometricReasonWithOneFromGraph.js";
@@ -0,0 +1,12 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ q: number;
4
+ start: number;
5
+ fakeParams: {
6
+ start: number;
7
+ q: number;
8
+ }[];
9
+ };
10
+ export declare const plausibleGeometricSequenceExpressionFromGraph: Exercise<Identifiers>;
11
+ export {};
12
+ //# sourceMappingURL=plausibleGeometricSequenceExpressionFromGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plausibleGeometricSequenceExpressionFromGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/geometric/graph/plausibleGeometricSequenceExpressionFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5C,CAAC;AAyIF,eAAO,MAAM,6CAA6C,EAAE,QAAQ,CAAC,WAAW,CAwB7E,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { GeogebraConstructor } from "../../../../../geogebra/geogebraConstructor.js";
4
+ import { randfloat } from "../../../../../math/utils/random/randfloat.js";
5
+ import { round } from "../../../../../math/utils/round.js";
6
+ import { multiply } from "../../../../../tree/nodes/operators/multiplyNode.js";
7
+ import { power } from "../../../../../tree/nodes/operators/powerNode.js";
8
+ import { coinFlip } from "../../../../../utils/alea/coinFlip.js";
9
+ const getPropositions = (n, { answer, fakeParams }) => {
10
+ const propositions = [];
11
+ addValidProp(propositions, answer);
12
+ for (let i = 0; i < fakeParams.length; i++) {
13
+ tryToAddWrongProp(propositions, multiply(fakeParams[i].start, power(fakeParams[i].q, "n")).toTex());
14
+ }
15
+ return shuffleProps(propositions, n);
16
+ };
17
+ const getAnswer = (identifiers) => {
18
+ const { start, q } = identifiers;
19
+ return multiply(start, power(q, "n")).toTex();
20
+ };
21
+ const getInstruction = () => {
22
+ return `On donne ci-dessous les premiers points d'un nuage de points représentant une suite géométrique $u$..
23
+
24
+ Parmi les formes explicites suivantes, laquelle peut être celle de $u$ ?`;
25
+ };
26
+ const getHint = () => {
27
+ return `Le sens de variation de la suite peut t'aider. Si on note $q$ sa raison, alors :
28
+
29
+ - si $q>1$, la suite est strictement croissante;
30
+ - si $0<q<1$, la suite est strictement décroissante.
31
+
32
+ D'autre part, tu peux lire la valeur du premier terme de la suite.`;
33
+ };
34
+ const getCorrection = (identifiers) => {
35
+ const { q, start } = identifiers;
36
+ const sens = q < 1 ? "décroissante" : "croissante";
37
+ return `On sait que la forme explicite de la suite $u$ est de la forme :
38
+
39
+ $$
40
+ u_n = u_0\\times q^n
41
+ $$
42
+
43
+ D'après le graphique, la suite $u$ est ${sens}. On en déduit donc que $q ${q < 1 ? "<1" : ">1"}$. Cela permet donc d'exclure deux des propositions.
44
+
45
+ Ensuite, on lit le premier terme de la suite : on trouve $u_0 \\approx ${round(start, 1).frenchify()}$.
46
+
47
+ On en conclut donc que la seule forme explicite possible pour $u$ est :
48
+
49
+ $$
50
+ u_n = ${getAnswer(identifiers)}
51
+ $$`;
52
+ };
53
+ const getGGBOptions = (identifiers) => {
54
+ const { q, start } = identifiers;
55
+ const ggb = new GeogebraConstructor({
56
+ commands: [`Sequence((n, ${start}*${q}^n), n, 0, 50)`],
57
+ lockedAxesRatio: false,
58
+ });
59
+ const f2 = multiply(start, power(q, 2)).evaluate();
60
+ return ggb.getOptions({
61
+ coords: [-1, 5, -1, Math.max(start, f2) + 1],
62
+ });
63
+ };
64
+ const getPlausibleExponentialFunctionExpressionFromGraphQuestion = () => {
65
+ const start = randfloat(0.5, 4, 2);
66
+ const q = coinFlip() ? randfloat(0.1, 1, 2, [1]) : randfloat(1.1, 5, 2);
67
+ let fakeParams = [];
68
+ if (q > 1) {
69
+ const firstDescQ = randfloat(0.1, 1, 2, [1]);
70
+ const secondDescQ = randfloat(0.1, 1, 2, [firstDescQ]);
71
+ const thirdQ = randfloat(1.1, 5, 2, [q]);
72
+ const firstStart = start;
73
+ const secondStart = randfloat(0.1, 4, 2);
74
+ const delta = randfloat(1, 3, 2);
75
+ const thirdStart = round(start - delta > 0 ? start - delta : start + delta, 2);
76
+ fakeParams = [
77
+ { q: firstDescQ, start: firstStart },
78
+ { q: secondDescQ, start: secondStart },
79
+ { q: thirdQ, start: thirdStart },
80
+ ];
81
+ }
82
+ else {
83
+ const firstAscQ = randfloat(1.1, 5, 2);
84
+ const secondAscQ = randfloat(1.1, 5, 2, [firstAscQ]);
85
+ const thirdQ = randfloat(0.1, 1, 2, [1, q]);
86
+ const firstStart = start;
87
+ const secondStart = randfloat(0.1, 4, 2);
88
+ const delta = randfloat(1, 3, 2);
89
+ const thirdStart = round(start - delta > 0 ? start - delta : start + delta, 2);
90
+ fakeParams = [
91
+ { q: firstAscQ, start: firstStart },
92
+ { q: secondAscQ, start: secondStart },
93
+ { q: thirdQ, start: thirdStart },
94
+ ];
95
+ }
96
+ const identifiers = {
97
+ start,
98
+ q,
99
+ fakeParams,
100
+ };
101
+ return getQuestionFromIdentifiers(identifiers);
102
+ };
103
+ const getQuestionFromIdentifiers = (identifiers) => {
104
+ return {
105
+ answer: getAnswer(identifiers),
106
+ instruction: getInstruction(identifiers),
107
+ keys: [],
108
+ answerFormat: "tex",
109
+ identifiers,
110
+ hint: getHint(identifiers),
111
+ correction: getCorrection(identifiers),
112
+ ggbOptions: getGGBOptions(identifiers),
113
+ };
114
+ };
115
+ export const plausibleGeometricSequenceExpressionFromGraph = {
116
+ id: "plausibleGeometricSequenceExpressionFromGraph",
117
+ label: "Donner la forme explicite possible d'une suite géométrique à partir de son nuage de points",
118
+ isSingleStep: true,
119
+ generator: (nb, opts) => getDistinctQuestions(() => getPlausibleExponentialFunctionExpressionFromGraphQuestion(opts), nb),
120
+ qcmTimer: 60,
121
+ freeTimer: 60,
122
+ getPropositions,
123
+ answerType: "QCU",
124
+ subject: "Mathématiques",
125
+ getHint,
126
+ getCorrection,
127
+ getInstruction,
128
+ getAnswer,
129
+ getGGBOptions,
130
+ hasGeogebra: true,
131
+ getQuestionFromIdentifiers,
132
+ hasHintAndCorrection: true,
133
+ };
@@ -0,0 +1,8 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ start: number;
4
+ q: number;
5
+ };
6
+ export declare const readGeometricExpressionFromGraph: Exercise<Identifiers>;
7
+ export {};
8
+ //# sourceMappingURL=readGeometricExpressionFromGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readGeometricExpressionFromGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/geometric/graph/readGeometricExpressionFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAWrC,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAqHF,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,WAAW,CA0BlE,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, } from "../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { GeogebraConstructor } from "../../../../../geogebra/geogebraConstructor.js";
4
+ import { randint } from "../../../../../math/utils/random/randint.js";
5
+ import { round } from "../../../../../math/utils/round.js";
6
+ import { multiply } from "../../../../../tree/nodes/operators/multiplyNode.js";
7
+ import { power } from "../../../../../tree/nodes/operators/powerNode.js";
8
+ import { parseAlgebraic } from "../../../../../tree/parsers/latexParser.js";
9
+ import { random } from "../../../../../utils/alea/random.js";
10
+ import { handleVEAError } from "../../../../../utils/errors/handleVEAError.js";
11
+ const getPropositions = (n, { answer }) => {
12
+ const propositions = [];
13
+ addValidProp(propositions, answer);
14
+ propWhile(propositions, n, () => {
15
+ const fakeStart = randint(2, 10);
16
+ const fakeQ = random([0.2, 0.5, 2, 3, 4, 5]);
17
+ tryToAddWrongProp(propositions, multiply(fakeStart, power(fakeQ, "n")).toTex());
18
+ });
19
+ return shuffleProps(propositions, n);
20
+ };
21
+ const getAnswer = (identifiers) => {
22
+ const { q, start } = identifiers;
23
+ return multiply(start, power(q, "n")).simplify().toTex();
24
+ };
25
+ const getInstruction = () => {
26
+ return `On donne ci-dessous le nuage de points d'une suite géométrique $u$.
27
+
28
+ Déterminer la forme explicite de $u$.`;
29
+ };
30
+ const getHint = () => {
31
+ return `La forme explicite d'une suite géométrique $u$ de premier terme $u_0$ et de raison $q$ est :
32
+
33
+ $$
34
+ u_n = u_0\\times q^n
35
+ $$
36
+
37
+ Commence par lire le premier terme de la suite $u_0$.
38
+
39
+ Puis, détermine la raison de la suite en observant comment on passe d'un terme au suivant. `;
40
+ };
41
+ const getCorrection = (identifiers) => {
42
+ const { q, start } = identifiers;
43
+ return `On lit le premier terme de la suite :
44
+
45
+ $$
46
+ u_0 = ${start.frenchify()}
47
+ $$
48
+
49
+ Puis, on détermine la raison de la suite. Pour cela, on remarque que :
50
+
51
+ $$
52
+ u_1 = ${round(start * q, 2).frenchify()}
53
+ $$
54
+
55
+ Pour passer de $u_0$ à $u_1$, on a donc multiplié par $${q.frenchify()}$ : c'est la raison de la suite.
56
+
57
+ La forme explicite de $u$ est donc :
58
+
59
+ $$
60
+ u_n = ${getAnswer(identifiers)}
61
+ $$
62
+ `;
63
+ };
64
+ const getGGBOptions = (identifiers) => {
65
+ const { q, start } = identifiers;
66
+ const ggb = new GeogebraConstructor({
67
+ commands: [`Sequence((n, ${start}*${q}^n), n, 0, 50)`],
68
+ lockedAxesRatio: false,
69
+ });
70
+ return ggb.getOptions({
71
+ coords: [-1, 5, -1, 1.2 * Math.max(start, q * start, q * q * start)],
72
+ });
73
+ };
74
+ const getKeys = () => {
75
+ return ["n"];
76
+ };
77
+ const isAnswerValid = (ans, { answer }) => {
78
+ try {
79
+ const parsed = parseAlgebraic(ans);
80
+ if (!parsed)
81
+ return false;
82
+ return parsed.simplify().toTex() === answer;
83
+ }
84
+ catch (err) {
85
+ return handleVEAError(err);
86
+ }
87
+ };
88
+ const getReadExponentialFunctionParamsOnGraphQuestion = () => {
89
+ const [start, q] = random([
90
+ [random([2, 4, 6, 8]), 0.5],
91
+ [random([0.2, 1, 2, 3, 4, 5]), 2],
92
+ [random([0.5, 2]), 3],
93
+ ]);
94
+ const identifiers = {
95
+ start,
96
+ q,
97
+ };
98
+ return getQuestionFromIdentifiers(identifiers);
99
+ };
100
+ const getQuestionFromIdentifiers = (identifiers) => {
101
+ return {
102
+ answer: getAnswer(identifiers),
103
+ instruction: getInstruction(identifiers),
104
+ keys: getKeys(identifiers),
105
+ answerFormat: "tex",
106
+ identifiers,
107
+ hint: getHint(identifiers),
108
+ correction: getCorrection(identifiers),
109
+ ggbOptions: getGGBOptions(identifiers),
110
+ };
111
+ };
112
+ export const readGeometricExpressionFromGraph = {
113
+ id: "readGeometricExpressionFromGraph",
114
+ connector: "=",
115
+ label: "Déterminer la forme explicite d'une suite géométrique à partir de son nuage de points",
116
+ isSingleStep: true,
117
+ generator: (nb, opts) => getDistinctQuestions(() => getReadExponentialFunctionParamsOnGraphQuestion(opts), nb, 10),
118
+ qcmTimer: 60,
119
+ freeTimer: 60,
120
+ getPropositions,
121
+ isAnswerValid,
122
+ subject: "Mathématiques",
123
+ getHint,
124
+ getCorrection,
125
+ getInstruction,
126
+ getAnswer,
127
+ getGGBOptions,
128
+ hasGeogebra: true,
129
+ getQuestionFromIdentifiers,
130
+ hasHintAndCorrection: true,
131
+ maxAllowedQuestions: 10,
132
+ };
@@ -0,0 +1,11 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ isGeo: boolean;
4
+ sequence: number[];
5
+ };
6
+ type Options = {
7
+ firstTermRankOne?: boolean;
8
+ };
9
+ export declare const recognizeGeometricFromGraph: Exercise<Identifiers, Options>;
10
+ export {};
11
+ //# sourceMappingURL=recognizeGeometricFromGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recognizeGeometricFromGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/sequences/geometric/graph/recognizeGeometricFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AA8IF,KAAK,OAAO,GAAG;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AASF,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAkBtE,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { GeneratorOptionTarget, GeneratorOptionType, addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { GeogebraConstructor } from "../../../../../geogebra/geogebraConstructor.js";
4
+ import { Point } from "../../../../../math/geometry/point.js";
5
+ import { randint } from "../../../../../math/utils/random/randint.js";
6
+ import { round } from "../../../../../math/utils/round.js";
7
+ import { coinFlip } from "../../../../../utils/alea/coinFlip.js";
8
+ import { random } from "../../../../../utils/alea/random.js";
9
+ const getInstruction = () => {
10
+ return `La suite $u$ représentée ci-dessous semble-t-elle géométrique ?`;
11
+ };
12
+ const getAnswer = (identifiers) => {
13
+ const { isGeo } = identifiers;
14
+ return isGeo ? "Oui" : "Non";
15
+ };
16
+ const getGGBOptions = (identifiers, opts) => {
17
+ const { sequence } = identifiers;
18
+ const rankOne = opts?.firstTermRankOne ? 1 : 0;
19
+ const commands = sequence.flatMap((nb, index) => new Point(`A_{${index + rankOne}}`, (index + rankOne).toTree(), nb.toTree()).toGGBCommand({
20
+ showLabel: false,
21
+ }));
22
+ const ggb = new GeogebraConstructor({
23
+ commands,
24
+ lockedAxesRatio: false,
25
+ xAxis: { natural: true },
26
+ });
27
+ const yMin = Math.min(...sequence.slice(0, 5));
28
+ const yMax = Math.max(...sequence.slice(0, 5));
29
+ return ggb.getOptions({
30
+ coords: [-1, 7, Math.min(-1, yMin - 2), Math.max(1, yMax + 2)],
31
+ });
32
+ };
33
+ const getHint = () => {
34
+ return `Une suite est géométrique si, pour passer d'un terme au suivant, on multiplie toujours par le même nombre (appelé la raison de la suite).
35
+
36
+ Sur le graphique, retrouve-t-on ce comportement ?`;
37
+ };
38
+ const getCorrection = (identifiers, opts) => {
39
+ const rankOne = opts?.firstTermRankOne ? 1 : 0;
40
+ const { isGeo, sequence } = identifiers;
41
+ const reason = round(sequence[1] / sequence[0], 2);
42
+ return `On peut lire graphiquement les premiers termes de la suite :
43
+
44
+ ${sequence
45
+ .slice(0, 5)
46
+ .map((e, i) => `$$
47
+ u_{${i + rankOne}} = ${e.frenchify()}
48
+ $$`)
49
+ .join("\n \n")}
50
+
51
+ ${isGeo
52
+ ? `Sur ces premiers termes, on multiple donc par $${reason.frenchify()}$ pour passer d'un terme à l'autre. La suite semble donc bien géométrique.`
53
+ : "Puisqu'on ne multiplie pas toujours par le même nombre pour passer d'un terme à l'autre, la suite n'est donc pas géométrique."}`;
54
+ };
55
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
56
+ return {
57
+ answer: getAnswer(identifiers),
58
+ instruction: getInstruction(identifiers),
59
+ keys: [],
60
+ ggbOptions: getGGBOptions(identifiers, opts),
61
+ answerFormat: "raw",
62
+ identifiers,
63
+ hint: getHint(identifiers),
64
+ correction: getCorrection(identifiers, opts),
65
+ };
66
+ };
67
+ const getRandomFirstNonGeoTerms = () => {
68
+ const type = randint(0, 3);
69
+ switch (type) {
70
+ case 0: {
71
+ const firstAriTerm = randint(-5, 10);
72
+ const ariReason = randint(-4, 6, [0]);
73
+ return new Array(10)
74
+ .fill(0)
75
+ .map((_el, index) => firstAriTerm + ariReason * index);
76
+ }
77
+ case 1: {
78
+ const firstBernoulliTerm = randint(1, 10);
79
+ const secondBernoulliTerm = randint(1, 10, [firstBernoulliTerm]);
80
+ return new Array(10)
81
+ .fill(0)
82
+ .map((_el, index) => index % 2 ? firstBernoulliTerm : secondBernoulliTerm);
83
+ }
84
+ case 2:
85
+ default: {
86
+ const firstFakeAriTerm = randint(1, 20);
87
+ const res = new Array(10)
88
+ .fill(0)
89
+ .map(() => firstFakeAriTerm + randint(1, 4));
90
+ const disruptionIndex = randint(0, 5);
91
+ res[disruptionIndex] = res[disruptionIndex] + random([-1, 1]);
92
+ return res;
93
+ }
94
+ }
95
+ };
96
+ const getRecognizeArithmeticFromGraphQuestion = (opts) => {
97
+ const isGeo = coinFlip();
98
+ const firstGeoTerm = randint(1, 4);
99
+ const geoReason = random([0.5, 2, 3]);
100
+ const sequence = isGeo
101
+ ? new Array(10)
102
+ .fill(0)
103
+ .map((_el, index) => firstGeoTerm * geoReason ** index)
104
+ : getRandomFirstNonGeoTerms();
105
+ const identifiers = { sequence, isGeo };
106
+ return getQuestionFromIdentifiers(identifiers, opts);
107
+ };
108
+ const getPropositions = (n, { answer }) => {
109
+ const propositions = [];
110
+ addValidProp(propositions, answer, "raw");
111
+ tryToAddWrongProp(propositions, "Oui", "raw");
112
+ tryToAddWrongProp(propositions, "Non", "raw");
113
+ return shuffleProps(propositions, n);
114
+ };
115
+ const options = [
116
+ {
117
+ id: "firstTermRankOne",
118
+ label: "Utiliser $u_1$ comme premier terme",
119
+ target: GeneratorOptionTarget.generation,
120
+ type: GeneratorOptionType.checkbox,
121
+ },
122
+ ];
123
+ export const recognizeGeometricFromGraph = {
124
+ id: "recognizeGeometricFromGraph",
125
+ label: "Reconnaître graphiquement si une suite est géométrique",
126
+ isSingleStep: true,
127
+ generator: (nb, opts) => getDistinctQuestions(() => getRecognizeArithmeticFromGraphQuestion(opts), nb),
128
+ qcmTimer: 60,
129
+ freeTimer: 60,
130
+ getPropositions,
131
+ answerType: "QCU",
132
+ hasGeogebra: true,
133
+ subject: "Mathématiques",
134
+ getQuestionFromIdentifiers,
135
+ hasHintAndCorrection: true,
136
+ options,
137
+ };
@@ -15,4 +15,5 @@ export * from "./situations/index.js";
15
15
  export * from "./geometricFindExplicitFormulaFromTwoTerms.js";
16
16
  export * from "./geometricFindExplicitFormulaFromTwoConsecutiveTerms.js";
17
17
  export * from "./geometricFindRandomTermFromTwoConsecutiveTerms.js";
18
+ export * from "./graph/index.js";
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kDAAkD,CAAC;AACjE,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AAEnD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AAEzC,cAAc,0CAA0C,CAAC;AAEzD,cAAc,gBAAgB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AAEtC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0DAA0D,CAAC;AACzE,cAAc,qDAAqD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kDAAkD,CAAC;AACjE,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AAEnD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AAEzC,cAAc,0CAA0C,CAAC;AAEzD,cAAc,gBAAgB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AAEtC,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0DAA0D,CAAC;AACzE,cAAc,qDAAqD,CAAC;AACpE,cAAc,kBAAkB,CAAC"}
@@ -15,3 +15,4 @@ export * from "./situations/index.js";
15
15
  export * from "./geometricFindExplicitFormulaFromTwoTerms.js";
16
16
  export * from "./geometricFindExplicitFormulaFromTwoConsecutiveTerms.js";
17
17
  export * from "./geometricFindRandomTermFromTwoConsecutiveTerms.js";
18
+ export * from "./graph/index.js";
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;
@@ -1968,6 +1971,21 @@ declare const mathExercises: (Exercise<{
1968
1971
  yIds: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1969
1972
  zIds: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1970
1973
  tIds: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1974
+ }, Record<string, string | boolean | string[]>> | Exercise<{
1975
+ situation: number;
1976
+ start: number;
1977
+ reason: number;
1978
+ x: number;
1979
+ }, Record<string, string | boolean | string[]>> | Exercise<{
1980
+ situation: number;
1981
+ start: number;
1982
+ rate: number;
1983
+ }, Record<string, string | boolean | string[]>> | Exercise<{
1984
+ situation: number;
1985
+ start: number;
1986
+ rate: number;
1987
+ x: number;
1988
+ displayedX: string;
1971
1989
  }, Record<string, string | boolean | string[]>> | Exercise<{
1972
1990
  affine1Ids: import("./math/polynomials/generalAffine.js").GeneralAffineIdentifiers;
1973
1991
  affine2Ids: import("./math/polynomials/generalAffine.js").GeneralAffineIdentifiers;
@@ -3228,6 +3246,12 @@ declare const mathExercises: (Exercise<{
3228
3246
  }, Record<string, string | boolean | string[]>> | Exercise<{
3229
3247
  isJustified: boolean;
3230
3248
  cloudPointsIdentifiers: import("./math/geometry/CloudPoints.js").CloudPointsIdentifiers;
3249
+ }, Record<string, string | boolean | string[]>> | Exercise<{
3250
+ xs: number[];
3251
+ ys: number[];
3252
+ }, Record<string, string | boolean | string[]>> | Exercise<{
3253
+ xs: number[];
3254
+ ys: number[];
3231
3255
  }, Record<string, string | boolean | string[]>> | Exercise<{
3232
3256
  pA: number;
3233
3257
  pB: number;
@@ -3769,6 +3793,24 @@ declare const mathExercises: (Exercise<{
3769
3793
  precisionReason: number;
3770
3794
  rankAsked: number;
3771
3795
  }, import("./exercises/options/optionFirstTermRankOne.js").OptionFirstTermRankOne> | Exercise<{
3796
+ isGeo: boolean;
3797
+ sequence: number[];
3798
+ }, {
3799
+ firstTermRankOne?: boolean;
3800
+ }> | Exercise<{
3801
+ q: number;
3802
+ start: number;
3803
+ fakeParams: {
3804
+ start: number;
3805
+ q: number;
3806
+ }[];
3807
+ }, Record<string, string | boolean | string[]>> | Exercise<{
3808
+ start: number;
3809
+ q: number;
3810
+ }, Record<string, string | boolean | string[]>> | Exercise<{
3811
+ q: number;
3812
+ start: number;
3813
+ }, Record<string, string | boolean | string[]>> | Exercise<{
3772
3814
  rank: number;
3773
3815
  coeffs: number[];
3774
3816
  }, {
@@ -4385,32 +4427,9 @@ declare const mathExercises: (Exercise<{
4385
4427
  values: number[][];
4386
4428
  caseAsked: number;
4387
4429
  }, 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;
4430
+ coeffs: (number | undefined)[][];
4397
4431
  }, 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[];
4407
- }, Record<string, string | boolean | string[]>> | Exercise<{
4408
- indexTopic: number;
4409
- isLess: boolean;
4410
- arrDistrib: {
4411
- name: string;
4412
- indicators: number[];
4413
- }[];
4432
+ coeffs: (number | undefined)[][];
4414
4433
  }, Record<string, string | boolean | string[]>> | Exercise<{
4415
4434
  barChart: {
4416
4435
  description: string;
@@ -4450,6 +4469,19 @@ declare const mathExercises: (Exercise<{
4450
4469
  }, {
4451
4470
  displayType: string;
4452
4471
  }> | Exercise<{
4472
+ labels: string[];
4473
+ data: number[];
4474
+ itemAsked: number;
4475
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4476
+ isAskingX: boolean;
4477
+ xValue?: number;
4478
+ yValue?: number;
4479
+ a: number;
4480
+ b: number;
4481
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4482
+ points: number[][];
4483
+ labels: string[];
4484
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4453
4485
  indexSituation: number;
4454
4486
  bigNumber: number;
4455
4487
  }, Record<string, string | boolean | string[]>> | Exercise<{
@@ -4462,6 +4494,20 @@ declare const mathExercises: (Exercise<{
4462
4494
  evolutionType: string;
4463
4495
  }, Record<string, string | boolean | string[]>> | Exercise<{
4464
4496
  quartiles: number[];
4497
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4498
+ quartileIndex: 0 | 1 | 2 | 3 | 4;
4499
+ quartiles: number[];
4500
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4501
+ quartiles: number[];
4502
+ arrQuartileIndex: (0 | 1 | 2 | 3 | 4)[];
4503
+ typeQ: "below" | "between" | "above";
4504
+ }, Record<string, string | boolean | string[]>> | Exercise<{
4505
+ indexTopic: number;
4506
+ isLess: boolean;
4507
+ arrDistrib: {
4508
+ name: string;
4509
+ indicators: number[];
4510
+ }[];
4465
4511
  }, Record<string, string | boolean | string[]>> | Exercise<{
4466
4512
  indexSituation: number;
4467
4513
  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.193",
5
5
  "description": "Math exercises generator for middle school and high school",
6
6
  "main": "lib/index.js",
7
7
  "files": [