math-exercises 3.0.137 → 3.0.138

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.
@@ -15,4 +15,5 @@ export * from "./equationWithDistributivity.js";
15
15
  export * from "./choseOperationToSolveEquation.js";
16
16
  export * from "./factorizeEquation.js";
17
17
  export * from "./equationFromProblem.js";
18
+ export * from "./isEqualityTrue.js";
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
@@ -15,3 +15,4 @@ export * from "./equationWithDistributivity.js";
15
15
  export * from "./choseOperationToSolveEquation.js";
16
16
  export * from "./factorizeEquation.js";
17
17
  export * from "./equationFromProblem.js";
18
+ export * from "./isEqualityTrue.js";
@@ -0,0 +1,14 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ evaluationDict: Record<string, NodeIdentifiers>;
5
+ equalNodeIds: NodeIdentifiers;
6
+ isEqual: boolean;
7
+ };
8
+ type Options = {
9
+ typeCoeff: "Entier" | "Fraction" | "Décimal";
10
+ typeTestValue: "Entier" | "Fraction" | "Décimal";
11
+ };
12
+ export declare const isEqualityTrue1: Exercise<Identifiers, Options>;
13
+ export {};
14
+ //# sourceMappingURL=isEqualityTrue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isEqualityTrue.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/isEqualityTrue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAkB7C,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAChD,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAkUF,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAClD,CAAC;AA6BF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAkB1D,CAAC"}
@@ -0,0 +1,314 @@
1
+ import { addValidProp, tryToAddWrongProp, GeneratorOptionTarget, GeneratorOptionType, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { nodeBySubstitutingVar } from "../../../../math/utils/functions/functionComposition.js";
4
+ import { randfloat } from "../../../../math/utils/random/randfloat.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { EqualNode } from "../../../../tree/nodes/equations/equalNode.js";
7
+ import { NodeConstructor, } from "../../../../tree/nodes/nodeConstructor.js";
8
+ import { isNumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
9
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
10
+ import { frac, isFractionNode, } from "../../../../tree/nodes/operators/fractionNode.js";
11
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
12
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
13
+ import { VariableNode } from "../../../../tree/nodes/variables/variableNode.js";
14
+ import { parseLatex } from "../../../../tree/parsers/latexParser.js";
15
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
16
+ import { random } from "../../../../utils/alea/random.js";
17
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
18
+ import { joinanded } from "../../../../utils/strings/joinanded.js";
19
+ const varNames = ["x", "y", "z", "t", "u", "v"];
20
+ const getPropositions = (_, { answer }) => {
21
+ const propositions = [];
22
+ ["Oui", "Non"].forEach((strYN) => {
23
+ if (strYN === answer) {
24
+ addValidProp(propositions, strYN);
25
+ }
26
+ else {
27
+ tryToAddWrongProp(propositions, strYN);
28
+ }
29
+ });
30
+ return propositions;
31
+ };
32
+ const getAnswer = (identifiers) => {
33
+ const { isEqual } = identifiers;
34
+ return isEqual ? "Oui" : "Non";
35
+ };
36
+ const getInstruction = (identifiers) => {
37
+ const { evaluationDict, equalNodeIds } = identifiers;
38
+ const equalNode = NodeConstructor.fromIdentifiers(equalNodeIds);
39
+ const strEvaluation = `${joinanded(Object.entries(evaluationDict).map(([varName, nodeIds]) => {
40
+ const node = NodeConstructor.fromIdentifiers(nodeIds);
41
+ return `$${varName} = ${node.toTex()}$`;
42
+ }), ", ", " et ")}`;
43
+ return `En considérant l'équation ci-dessous, l'égalité est-elle vérifiée pour ${strEvaluation} ?
44
+
45
+ $$
46
+ ${equalNode.toTex()}
47
+ $$
48
+
49
+ `;
50
+ };
51
+ const getHint = () => {
52
+ return `L'expression $3x$ vaut $3,3$ pour $x = 1,1$.`;
53
+ };
54
+ const getCorrection = (identifiers) => {
55
+ const { evaluationDict, equalNodeIds, isEqual } = identifiers;
56
+ const evaluationEntries = Object.entries(evaluationDict).map(([varName, nodeIds]) => [
57
+ varName,
58
+ NodeConstructor.fromIdentifiers(nodeIds),
59
+ ]);
60
+ const equalNode = NodeConstructor.fromIdentifiers(equalNodeIds);
61
+ const [lhsNode, rhsNode] = [equalNode.leftChild, equalNode.rightChild];
62
+ const [evaluatedLhsNode, evaluatedRhsNode] = [lhsNode, rhsNode].map((nodeCarrier) => evaluationEntries.reduce((acc, [varName, nodeInjected]) => nodeBySubstitutingVar(acc, nodeInjected, new VariableNode(varName)), nodeCarrier));
63
+ return `Pour tester si l'égalité est vérifiée, on évalue chaque membre de l'équation.
64
+
65
+ On évalue le membre de gauche :
66
+
67
+ ${alignTex([
68
+ ["", lhsNode.toTex()],
69
+ ["=", evaluatedLhsNode.toTex()],
70
+ [
71
+ "=",
72
+ (() => {
73
+ const evLhsAsAddNode = evaluatedLhsNode;
74
+ return add(evLhsAsAddNode.leftChild.simplify(), evLhsAsAddNode.rightChild);
75
+ })().toTex(),
76
+ ],
77
+ ["=", evaluatedLhsNode.simplify().toTex()],
78
+ ])}
79
+
80
+ On évalue le membre de droite :
81
+
82
+ ${alignTex([
83
+ ["", rhsNode.toTex()],
84
+ ["=", evaluatedRhsNode.toTex()],
85
+ [
86
+ "=",
87
+ (() => {
88
+ const evRhsAsAddNode = evaluatedRhsNode;
89
+ return add(evRhsAsAddNode.leftChild.simplify(), evRhsAsAddNode.rightChild);
90
+ })().toTex(),
91
+ ],
92
+ ["=", evaluatedRhsNode.simplify().toTex()],
93
+ ])}
94
+
95
+ ${isEqual
96
+ ? `Les deux valeurs sont égales donc l'égalité est vérifiée.`
97
+ : `Les deux valeurs sont différentes. L'égalité n'est pas vérifiée.`}
98
+
99
+ `;
100
+ };
101
+ const getKeys = () => {
102
+ return [];
103
+ };
104
+ const getIsEqualityTrue1Question = (optsIn) => {
105
+ const arrayedOptions = optsIn ?? optsDefault;
106
+ const opts = {
107
+ typeCoeff: random(arrayedOptions.typeCoeff),
108
+ typeTestValue: random(arrayedOptions.typeTestValue),
109
+ };
110
+ const roundDecimalTo = 1;
111
+ const varName = random(varNames);
112
+ function getRandomIntNode(excludes = []) {
113
+ let outNode = (1).toTree();
114
+ let counter = -1;
115
+ let isFound = false;
116
+ while (!isFound && counter < 100) {
117
+ counter++;
118
+ const intExcludes = excludes
119
+ .filter((node) => isNumberNode(node))
120
+ .map((node) => node.evaluate())
121
+ .filter((value) => value % 1 === 0);
122
+ let n;
123
+ try {
124
+ n = randint(-9, 10, intExcludes);
125
+ }
126
+ catch (_) {
127
+ (() => { })();
128
+ }
129
+ if (n) {
130
+ outNode = n.toTree();
131
+ isFound = true;
132
+ }
133
+ }
134
+ return outNode;
135
+ }
136
+ function getRandomFractionNode(excludes = []) {
137
+ let outNode = (1).toTree();
138
+ let counter = -1;
139
+ let isFound = false;
140
+ while (!isFound && counter < 100) {
141
+ counter++;
142
+ const num = randint(-9, 10);
143
+ const den = randint(0, 10, [0, num]);
144
+ const fractionNode = frac(num, den);
145
+ const isExcluded = excludes.some((excludedNode) => substract(excludedNode, fractionNode).evaluate() === 0);
146
+ if (!isExcluded) {
147
+ outNode = fractionNode;
148
+ isFound = true;
149
+ }
150
+ }
151
+ return outNode;
152
+ }
153
+ function getRandomDecimalNode(excludes = [], roundTo) {
154
+ let outNode = (1).toTree();
155
+ let counter = -1;
156
+ let isFound = false;
157
+ while (!isFound && counter < 100) {
158
+ counter++;
159
+ const decimalNode = randfloat(-10, 10, roundTo).toTree();
160
+ const isExcluded = excludes.some((excludedNode) => substract(excludedNode, decimalNode).evaluate() === 0);
161
+ if (!isExcluded) {
162
+ outNode = decimalNode;
163
+ isFound = true;
164
+ }
165
+ }
166
+ return outNode;
167
+ }
168
+ function getRandomNode(typeCoeff, excludes = []) {
169
+ switch (typeCoeff) {
170
+ case "Fraction":
171
+ return getRandomFractionNode(excludes);
172
+ case "Décimal": {
173
+ return getRandomDecimalNode(excludes, roundDecimalTo);
174
+ }
175
+ case "Entier":
176
+ default:
177
+ return getRandomIntNode(excludes);
178
+ }
179
+ }
180
+ function createRandomIdentifiers() {
181
+ const [a, b] = [
182
+ getRandomNode(opts.typeCoeff),
183
+ getRandomNode(opts.typeCoeff),
184
+ ];
185
+ const [c, d] = [
186
+ getRandomNode(opts.typeCoeff, [a]),
187
+ getRandomNode(opts.typeCoeff),
188
+ ];
189
+ const lhsNode = add(multiply(a, varName.toTree()), b);
190
+ const rhsNode = add(multiply(c, varName.toTree()), d);
191
+ const equalNode = new EqualNode(lhsNode, rhsNode);
192
+ //ax+b=cx+d
193
+ //x=(d-b)/(a-c)
194
+ const solutionNode = frac(substract(d, b), substract(a, c)).simplify();
195
+ const isEqual = coinFlip();
196
+ const evaluationDict = {};
197
+ if (isEqual) {
198
+ let isSalvation = true;
199
+ switch (opts.typeTestValue) {
200
+ case "Entier":
201
+ {
202
+ const value = solutionNode.evaluate();
203
+ const isInteger = value % 1 === 0;
204
+ if (isInteger) {
205
+ evaluationDict[varName] = value.toTree().toIdentifiers();
206
+ }
207
+ else {
208
+ isSalvation = false;
209
+ }
210
+ }
211
+ break;
212
+ case "Décimal":
213
+ {
214
+ const value = solutionNode.evaluate();
215
+ const strValue = value.toString();
216
+ const isDecimalWithNbDigits = strValue.split(".")?.[1]?.length === roundDecimalTo;
217
+ if (isDecimalWithNbDigits) {
218
+ evaluationDict[varName] = value.toTree().toIdentifiers();
219
+ }
220
+ else {
221
+ isSalvation = false;
222
+ }
223
+ }
224
+ break;
225
+ case "Fraction": {
226
+ if (isFractionNode(solutionNode)) {
227
+ evaluationDict[varName] = solutionNode.toIdentifiers();
228
+ }
229
+ else {
230
+ isSalvation = false;
231
+ }
232
+ }
233
+ }
234
+ if (!isSalvation) {
235
+ return null;
236
+ }
237
+ }
238
+ else {
239
+ const missNode = getRandomNode(opts.typeTestValue, [solutionNode]);
240
+ evaluationDict[varName] = missNode.toIdentifiers();
241
+ }
242
+ const identifiers = {
243
+ evaluationDict,
244
+ equalNodeIds: equalNode.toIdentifiers(),
245
+ isEqual,
246
+ };
247
+ return identifiers;
248
+ }
249
+ let identifiers;
250
+ let counter = -1;
251
+ while (!identifiers && counter < 100) {
252
+ counter++;
253
+ identifiers = createRandomIdentifiers();
254
+ }
255
+ const defaultIdentifiers = {
256
+ evaluationDict: { x: (0).toTree().toIdentifiers() },
257
+ equalNodeIds: parseLatex("3x+4=-5x+4").toIdentifiers(),
258
+ isEqual: true,
259
+ };
260
+ return getQuestionFromIdentifiers(identifiers ?? defaultIdentifiers, opts);
261
+ };
262
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
263
+ const question = {
264
+ answer: getAnswer(identifiers, opts),
265
+ instruction: getInstruction(identifiers, opts),
266
+ keys: getKeys(identifiers, opts),
267
+ answerFormat: "tex",
268
+ identifiers,
269
+ hint: getHint(identifiers, opts),
270
+ correction: getCorrection(identifiers, opts),
271
+ options: opts,
272
+ };
273
+ return question;
274
+ };
275
+ const optsDefault = {
276
+ typeCoeff: ["Entier"],
277
+ typeTestValue: ["Entier", "Fraction", "Décimal"],
278
+ };
279
+ const options = [
280
+ {
281
+ id: "typeCoeff",
282
+ label: "Type des coefficients",
283
+ target: GeneratorOptionTarget.generation,
284
+ type: GeneratorOptionType.multiselect,
285
+ values: ["Entier", "Fraction", "Décimal"],
286
+ defaultValue: optsDefault.typeCoeff,
287
+ },
288
+ {
289
+ id: "typeTestValue",
290
+ label: "Type des valeurs de test",
291
+ target: GeneratorOptionTarget.generation,
292
+ type: GeneratorOptionType.multiselect,
293
+ values: ["Entier", "Fraction", "Décimal"],
294
+ defaultValue: optsDefault.typeTestValue,
295
+ },
296
+ ];
297
+ export const isEqualityTrue1 = {
298
+ id: "isEqualityTrue1",
299
+ label: "Tester une égalité pour une certaine valeur de la variable",
300
+ isSingleStep: true,
301
+ generator: (nb, opts) => getDistinctQuestions(() => getIsEqualityTrue1Question(opts), nb),
302
+ options,
303
+ qcmTimer: 60,
304
+ freeTimer: 60,
305
+ getPropositions,
306
+ subject: "Mathématiques",
307
+ getInstruction,
308
+ getHint,
309
+ getCorrection,
310
+ getAnswer,
311
+ answerType: "QCU",
312
+ hasHintAndCorrection: true,
313
+ getQuestionFromIdentifiers,
314
+ };
@@ -1 +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;AAmQF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAmBhD,CAAC"}
1
+ {"version":3,"file":"compareBoxPlot.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/dataRepresentations/compareBoxPlot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,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;AA8PF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAmBhD,CAAC"}
@@ -128,10 +128,6 @@ const getGGBOptions = (identifiers) => {
128
128
  coords: [xMin - 5, xMax + 5, yMin - 5, yMax + 5],
129
129
  });
130
130
  };
131
- const isAnswerValid = (ans, { answer }) => {
132
- const ansRefined = ans.split(";").toSorted().join(";");
133
- return ansRefined === answer;
134
- };
135
131
  const getBoxPlotReadingQuestion = () => {
136
132
  const nbDistri = 2;
137
133
  const nbInAnswer = 1;
@@ -183,7 +179,6 @@ export const compareBoxPlot = {
183
179
  qcmTimer: 60,
184
180
  freeTimer: 60,
185
181
  getPropositions,
186
- isAnswerValid,
187
182
  subject: "Mathématiques",
188
183
  getHint,
189
184
  getCorrection,
@@ -193,4 +188,5 @@ export const compareBoxPlot = {
193
188
  hasGeogebra: true,
194
189
  getQuestionFromIdentifiers,
195
190
  hasHintAndCorrection: true,
191
+ answerType: "QCU",
196
192
  };
@@ -11,6 +11,7 @@ export * from "./readAbscissOnLine.js";
11
11
  export * from "./readAbscissOnSemiLine.js";
12
12
  export * from "./placeAbscissOnLine.js";
13
13
  export * from "./placeAbscissOnSemiLine.js";
14
+ export * from "./placeAbscissOnSemiLineV2.js";
14
15
  export * from "./cartesianFromVectorAndPoint.js";
15
16
  export * from "./cartesianFromTwoPoints.js";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AAEnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AAEnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC"}
@@ -12,6 +12,6 @@ export * from "./readAbscissOnLine.js";
12
12
  export * from "./readAbscissOnSemiLine.js";
13
13
  export * from "./placeAbscissOnLine.js";
14
14
  export * from "./placeAbscissOnSemiLine.js";
15
- // export * from "./placeAbscissOnSemiLineV2.js";
15
+ export * from "./placeAbscissOnSemiLineV2.js";
16
16
  export * from "./cartesianFromVectorAndPoint.js";
17
17
  export * from "./cartesianFromTwoPoints.js";
@@ -1 +1 @@
1
- {"version":3,"file":"placeAbscissOnSemiLineV2.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/placeAbscissOnSemiLineV2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK1D,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAiOF,KAAK,OAAO,GAAG;IACb,YAAY,EAAE,UAAU,GAAG,oBAAoB,CAAC;IAChD,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;CACnD,CAAC;AA6BF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAanE,CAAC"}
1
+ {"version":3,"file":"placeAbscissOnSemiLineV2.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/placeAbscissOnSemiLineV2.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK1D,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAwNF,KAAK,OAAO,GAAG;IACb,YAAY,EAAE,UAAU,GAAG,oBAAoB,CAAC;IAChD,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;CACnD,CAAC;AA6BF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAanE,CAAC"}
@@ -2,7 +2,6 @@ import { GeneratorOptionTarget, GeneratorOptionType, } from "../../../../exercis
2
2
  import { toolBarConstructor } from "../../../../exercises/utils/geogebra/toolBarConstructor.js";
3
3
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
4
4
  import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
5
- import { GeogebraParser } from "../../../../geogebra/parsers/geogebraParser.js";
6
5
  import { ggbPointToCoords } from "../../../../geogebra/parsers/ggbPointToCoords.js";
7
6
  import { parseGGBPoints } from "../../../../geogebra/parsers/parseGGBPoints.js";
8
7
  import { Point } from "../../../../math/geometry/point.js";
@@ -81,18 +80,12 @@ const getStudentGGBOptions = ({ abscissType, absciss1, axisUnit, absciss2, }) =>
81
80
  };
82
81
  const isGGBAnswerValid = (ans, { absciss2, axisUnit }) => {
83
82
  const [absciss2Node, axisUnitNode] = [absciss2, axisUnit].map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds));
84
- const commands = ans;
85
- const dictObj = new GeogebraParser(commands).objectDict();
86
- const strPointA = dictObj["A"];
87
- if (!strPointA) {
88
- return false;
89
- }
90
- const coordsA = ggbPointToCoords(strPointA);
91
- const points = parseGGBPoints(ans).map((p) => ggbPointToCoords(p));
92
- return (points.length === 3 && //O,I,A
83
+ const arrCoords = parseGGBPoints(ans).map((p) => ggbPointToCoords(p));
84
+ const coordsA = arrCoords[0];
85
+ return (arrCoords.length === 1 &&
93
86
  Math.abs(coordsA.y) < 0.5 * axisUnitNode.evaluate() &&
94
87
  Math.abs(coordsA.x - absciss2Node.evaluate()) <
95
- 0.1 * axisUnitNode.evaluate());
88
+ 0.2 * axisUnitNode.evaluate());
96
89
  };
97
90
  const getPlaceAbscissOnSemiLineV2Question = (optsIn) => {
98
91
  const arrayedOptions = optsIn ?? optsDefault;
@@ -2,4 +2,6 @@ export * from "./buildMediatriceWithCompass.js";
2
2
  export * from "./buildTriangleWithSizes.js";
3
3
  export * from "./pointImageFromTranslation.js";
4
4
  export * from "./buildPointFromAxialSymetry.js";
5
+ export * from "./pointImageFromHomothety.js";
6
+ export * from "./segmentImageFromHomothety.js";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/euclidianConstructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/euclidianConstructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC"}
@@ -2,5 +2,5 @@ export * from "./buildMediatriceWithCompass.js";
2
2
  export * from "./buildTriangleWithSizes.js";
3
3
  export * from "./pointImageFromTranslation.js";
4
4
  export * from "./buildPointFromAxialSymetry.js";
5
- // export * from "./pointImageFromHomothety.js";
6
- // export * from "./segmentImageFromHomothety.js";
5
+ export * from "./pointImageFromHomothety.js";
6
+ export * from "./segmentImageFromHomothety.js";
@@ -1 +1 @@
1
- {"version":3,"file":"possibleValuesForProba.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/basicProbas/possibleValuesForProba.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAUrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAW7C,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC;AA2EF,KAAK,OAAO,GAAG;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAuNF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAgBjE,CAAC"}
1
+ {"version":3,"file":"possibleValuesForProba.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/basicProbas/possibleValuesForProba.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAUrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAW7C,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC;AA2EF,KAAK,OAAO,GAAG;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AA6OF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAgBjE,CAAC"}
@@ -235,6 +235,26 @@ const getPossibleValuesForProbaQuestion = (optsIn) => {
235
235
  .length === 2;
236
236
  }
237
237
  arrNode = shuffle(arrNode);
238
+ //fix prevent everything to be false
239
+ //{
240
+ function isPossibleProba(node) {
241
+ const value = node.evaluate();
242
+ return 0 <= value && value <= 1;
243
+ }
244
+ function isInvalidNode(node) {
245
+ return (isFilterPossibleProba ? (x) => !x : (x) => x)(isPossibleProba(node));
246
+ }
247
+ const isEverythingFalse = arrNode.every(isInvalidNode);
248
+ if (isEverythingFalse) {
249
+ arrNode.pop();
250
+ if (isFilterPossibleProba) {
251
+ arrNode.push((1).toTree());
252
+ }
253
+ else {
254
+ arrNode.push((-1).toTree());
255
+ }
256
+ }
257
+ //}
238
258
  const identifiers = {
239
259
  arrayOfNodeIds: arrNode.map((node) => node.toIdentifiers()),
240
260
  isFilterPossibleProba,
package/lib/index.d.ts CHANGED
@@ -490,6 +490,13 @@ declare const mathExercises: (Exercise<{
490
490
  shuffleArrays: number[][];
491
491
  equalNodeIds: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
492
492
  }, Record<string, string | boolean | string[]>> | Exercise<{
493
+ evaluationDict: Record<string, import("./tree/nodes/nodeConstructor.js").NodeIdentifiers>;
494
+ equalNodeIds: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
495
+ isEqual: boolean;
496
+ }, {
497
+ typeCoeff: "Entier" | "Fraction" | "D\u00E9cimal";
498
+ typeTestValue: "Entier" | "Fraction" | "D\u00E9cimal";
499
+ }> | Exercise<{
493
500
  a: number;
494
501
  b: number;
495
502
  }, Record<string, string | boolean | string[]>> | Exercise<{
@@ -1607,6 +1614,14 @@ declare const mathExercises: (Exercise<{
1607
1614
  abscissTex: string;
1608
1615
  coeff: number;
1609
1616
  }, Record<string, string | boolean | string[]>> | Exercise<{
1617
+ abscissType: import("./math/numbers/nombre.js").NumberType;
1618
+ axisUnit: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1619
+ absciss1: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1620
+ absciss2: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1621
+ }, {
1622
+ questionType: "standard" | "\u00E9viter le comptage";
1623
+ numberType: "Entiers" | "Rationnels" | "D\u00E9cimaux";
1624
+ }> | Exercise<{
1610
1625
  vectorIdentifiers: import("./math/geometry/vector.js").VectorIdentifiers;
1611
1626
  pointIdentifiers: import("./math/geometry/point.js").PointIdentifiers;
1612
1627
  }, Record<string, string | boolean | string[]>> | Exercise<{
@@ -1893,6 +1908,22 @@ declare const mathExercises: (Exercise<{
1893
1908
  point: import("./math/geometry/point.js").PointIdentifiers;
1894
1909
  line: import("./math/geometry/line.js").LineIdentifiers;
1895
1910
  }, Record<string, string | boolean | string[]>> | Exercise<{
1911
+ pointsDict: Record<string, import("./math/geometry/point.js").PointIdentifiers>;
1912
+ nameTargetPoint: string;
1913
+ nameCenterPoint: string;
1914
+ factor: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1915
+ }, {
1916
+ isPositiveFactorOnly: boolean;
1917
+ factorTypes: string[];
1918
+ }> | Exercise<{
1919
+ pointsDict: Record<string, import("./math/geometry/point.js").PointIdentifiers>;
1920
+ nameTargetPoints: string[];
1921
+ nameCenterPoint: string;
1922
+ factor: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
1923
+ }, {
1924
+ isPositiveFactorOnly: boolean;
1925
+ factorTypes: string[];
1926
+ }> | Exercise<{
1896
1927
  type: number;
1897
1928
  commands: string[];
1898
1929
  }, Record<string, string | boolean | string[]>> | Exercise<{
@@ -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.137",
4
+ "version": "3.0.138",
5
5
  "description": "Math exercises generator for middle school and high school",
6
6
  "main": "lib/index.js",
7
7
  "files": [