math-exercises 3.0.156 → 3.0.157

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 (70) hide show
  1. package/lib/exercises/math/calcul/proportionality/proportionalityTableCoefficient.js +1 -1
  2. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts +4 -1
  3. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts.map +1 -1
  4. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.js +148 -31
  5. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts +4 -1
  6. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -1
  7. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.js +124 -44
  8. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.d.ts.map +1 -1
  9. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.js +4 -1
  10. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.d.ts.map +1 -1
  11. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.js +5 -4
  12. package/lib/exercises/math/functions/linear/linearFromExercise.d.ts.map +1 -1
  13. package/lib/exercises/math/functions/linear/linearFromExercise.js +4 -3
  14. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.js +1 -1
  15. package/lib/exercises/math/geometry/euclidian/recognizeHomothetyCenter.d.ts.map +1 -1
  16. package/lib/exercises/math/geometry/euclidian/recognizeHomothetyCenter.js +4 -5
  17. package/lib/exercises/math/geometry/euclidianConstructions/placeHomothetyCenter.js +4 -4
  18. package/lib/exercises/math/geometry/perimeters/circleCircumference.d.ts.map +1 -1
  19. package/lib/exercises/math/geometry/perimeters/circleCircumference.js +5 -3
  20. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.d.ts.map +1 -1
  21. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.js +18 -5
  22. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithSquareOrRectBase.d.ts.map +1 -1
  23. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithSquareOrRectBase.js +45 -21
  24. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.d.ts.map +1 -1
  25. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.js +33 -12
  26. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.d.ts.map +1 -1
  27. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.js +38 -15
  28. package/lib/exercises/math/percent/findTVA.d.ts.map +1 -1
  29. package/lib/exercises/math/percent/findTVA.js +17 -11
  30. package/lib/exercises/math/percent/populationEffectifFromSubPopulation.js +1 -1
  31. package/lib/exercises/math/probaStat/basicProbas/index.d.ts +1 -0
  32. package/lib/exercises/math/probaStat/basicProbas/index.d.ts.map +1 -1
  33. package/lib/exercises/math/probaStat/basicProbas/index.js +1 -1
  34. package/lib/exercises/math/probaStat/basicProbas/pickEquiprobableSituations.d.ts.map +1 -1
  35. package/lib/exercises/math/probaStat/basicProbas/pickEquiprobableSituations.js +114 -20
  36. package/lib/exercises/math/probaStat/basicProbas/pickEquiprobableTo.js +2 -2
  37. package/lib/exercises/math/probaStat/stats1var/etendueTable.d.ts.map +1 -1
  38. package/lib/exercises/math/probaStat/stats1var/etendueTable.js +5 -1
  39. package/lib/exercises/math/probaStat/stats1var/medianWithList.js +1 -1
  40. package/lib/exercises/math/probaStat/stats1var/medianWithTable.d.ts.map +1 -1
  41. package/lib/exercises/math/probaStat/stats1var/medianWithTable.js +19 -5
  42. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.js +1 -1
  43. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.d.ts.map +1 -1
  44. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.js +34 -29
  45. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.js +3 -3
  46. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.js +2 -2
  47. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.d.ts.map +1 -1
  48. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.js +18 -10
  49. package/lib/exercises/math/spaceGeometry/solids/recognizeSolidFromSolidPattern.js +1 -1
  50. package/lib/exercises/math/spaceGeometry/sphere/index.d.ts +2 -0
  51. package/lib/exercises/math/spaceGeometry/sphere/index.d.ts.map +1 -1
  52. package/lib/exercises/math/spaceGeometry/sphere/index.js +3 -1
  53. package/lib/exercises/math/spaceGeometry/sphere/pinPointLatLon.2d.d.ts +12 -0
  54. package/lib/exercises/math/spaceGeometry/sphere/pinPointLatLon.2d.d.ts.map +1 -0
  55. package/lib/exercises/math/spaceGeometry/sphere/pinPointLatLon.2d.js +205 -0
  56. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts +13 -0
  57. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts.map +1 -0
  58. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.js +215 -0
  59. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.3d.d.ts +14 -0
  60. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.3d.d.ts.map +1 -0
  61. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.3d.js +390 -0
  62. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.js +1 -1
  63. package/lib/exercises/vea/setVEA.d.ts.map +1 -1
  64. package/lib/exercises/vea/setVEA.js +4 -0
  65. package/lib/index.d.ts +24 -2
  66. package/lib/index.d.ts.map +1 -1
  67. package/lib/utils/arrays/dichoFilter.d.ts +2 -0
  68. package/lib/utils/arrays/dichoFilter.d.ts.map +1 -0
  69. package/lib/utils/arrays/dichoFilter.js +11 -0
  70. package/package.json +1 -1
@@ -95,20 +95,20 @@ const getCorrection = (identifiers) => {
95
95
  ${(() => {
96
96
  if (isAboveZero) {
97
97
  return `Le rapport d'homothétie est positif
98
- donc le centre est donc à l'extérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
98
+ donc le centre est à l'extérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
99
99
  }
100
100
  else {
101
101
  return `Le rapport d'homothétie est négatif
102
- donc le centre est donc à l'intérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
102
+ donc le centre est à l'intérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
103
103
  }
104
104
  })()}${(() => {
105
105
  if (isAbsBelowOne) {
106
106
  return `Le rapport est inférieur à $1$ en valeur absolue
107
- donc le centre est donc plus proche de $${nameDstPoint}$ que de $${nameSrcPoint}$.`;
107
+ donc le centre est plus proche de $${nameDstPoint}$ que de $${nameSrcPoint}$.`;
108
108
  }
109
109
  else {
110
110
  return `Le rapport est supérieur à $1$ en valeur absolue
111
- donc le centre est donc plus proche de $${nameSrcPoint}$ que de $${nameDstPoint}$.`;
111
+ donc le centre est plus proche de $${nameSrcPoint}$ que de $${nameDstPoint}$.`;
112
112
  }
113
113
  })()}
114
114
 
@@ -218,7 +218,6 @@ const getRecognizeHomothetyCenterQuestion = (optsIn) => {
218
218
  counter++;
219
219
  try {
220
220
  identifiers = createRandomIdentifiers();
221
- console.log("identifiers", identifiers);
222
221
  }
223
222
  catch (_) {
224
223
  continue;
@@ -109,20 +109,20 @@ const getCorrection = (identifiers) => {
109
109
  ${(() => {
110
110
  if (isAboveZero) {
111
111
  return `Le rapport d'homothétie est positif
112
- donc le centre est donc à l'extérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
112
+ donc le centre est à l'extérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
113
113
  }
114
114
  else {
115
115
  return `Le rapport d'homothétie est négatif
116
- donc le centre est donc à l'intérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
116
+ donc le centre est à l'intérieur du segment $[${nameSrcPoint}${nameDstPoint}]$.`;
117
117
  }
118
118
  })()}${(() => {
119
119
  if (isAbsBelowOne) {
120
120
  return `Le rapport est inférieur à $1$ en valeur absolue
121
- donc le centre est donc plus proche de $${nameDstPoint}$ que de $${nameSrcPoint}$.`;
121
+ donc le centre est plus proche de $${nameDstPoint}$ que de $${nameSrcPoint}$.`;
122
122
  }
123
123
  else {
124
124
  return `Le rapport est supérieur à $1$ en valeur absolue
125
- donc le centre est donc plus proche de $${nameSrcPoint}$ que de $${nameDstPoint}$.`;
125
+ donc le centre est plus proche de $${nameSrcPoint}$ que de $${nameDstPoint}$.`;
126
126
  }
127
127
  })()}
128
128
 
@@ -1 +1 @@
1
- {"version":3,"file":"circleCircumference.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/perimeters/circleCircumference.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAQrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA2GF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAcrD,CAAC"}
1
+ {"version":3,"file":"circleCircumference.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/perimeters/circleCircumference.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAQrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAgHF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAcrD,CAAC"}
@@ -22,11 +22,13 @@ const getAnswerNode = (identifiers) => {
22
22
  const getAnswer = (identifiers) => {
23
23
  return `${getAnswerNode(identifiers).toTex()} \\text{cm}`;
24
24
  };
25
- const getHint = () => {
26
- return `Le périmètre d'un cercle de rayon $r$ est donné par :
25
+ const getHint = (identifiers) => {
26
+ const { coin } = identifiers;
27
+ const isRadius = coin;
28
+ return `Le périmètre d'un cercle de ${isRadius ? "rayon $r$" : "diamètre $d$"} est donné par :
27
29
 
28
30
  $$
29
- C = 2\\pi r
31
+ C = ${isRadius ? "2\\pi r" : "\\pi\\times d"}
30
32
  $$`;
31
33
  };
32
34
  const getCorrection = (identifiers) => {
@@ -1 +1 @@
1
- {"version":3,"file":"parallelepipedVolume.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/parallelepipedVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAOrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA8KF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAetD,CAAC"}
1
+ {"version":3,"file":"parallelepipedVolume.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/parallelepipedVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAOrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAyLF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAetD,CAAC"}
@@ -14,7 +14,8 @@ const getParallelepipedVolumeQuestion = () => {
14
14
  };
15
15
  const getInstruction = (identifiers) => {
16
16
  const { height, length, width } = identifiers;
17
- return `Le parallélépipède $ABCDEFGH$ ci-dessous a une longueur de $${length.frenchify()}$, une largeur de $${width.frenchify()}$, et une hauteur de $${height.frenchify()}$.
17
+ return `Le parallélépipède $ABCDEFGH$ ci-dessous est tel que $ABCD$ est un rectangle de longueur $${length.frenchify()}$ et de largeur $${width.frenchify()}$.
18
+ $ABCDEFGH$ a une hauteur de $${height.frenchify()}$.
18
19
 
19
20
  Calculer son volume (arrondir au centième).`;
20
21
  };
@@ -86,11 +87,12 @@ const getGGBOptions = (identifiers) => {
86
87
  });
87
88
  };
88
89
  const getHint = () => {
89
- return `Le volume d'un parallélépipède s'obtient par la formule :
90
+ return `Le volume d'un parallélépipède, parce que c'est un prisme, s'obtient par la formule :
90
91
 
91
92
  $$
92
- V = \\text{longueur} \\times \\text{largeur} \\times \\text{hauteur}
93
+ V = \\mathcal{A}_{base} \\times \\text{hauteur}
93
94
  $$
95
+
94
96
  `;
95
97
  };
96
98
  const getCorrection = (identifiers) => {
@@ -98,14 +100,25 @@ const getCorrection = (identifiers) => {
98
100
  return `Le volume d'un parallélépipède s'obtient par la formule :
99
101
 
100
102
  $$
101
- V = \\text{longueur} \\times \\text{largeur} \\times \\text{hauteur}
103
+ V = \\mathcal{A}_{base} \\times \\text{hauteur}
104
+ $$
105
+
106
+ La base est rectangulaire :
107
+
108
+ $$
109
+ \\mathcal{A}_{base} = \\text{longueur} \\times \\text{largeur}
102
110
  $$
103
111
 
104
112
  Ici, on a donc :
105
113
 
106
114
  $$
107
- V = ${multiply(multiply(length, width), height).toTex()} = ${getAnswer(identifiers)}
115
+ V = ${multiply(multiply(length, width), height).toTex()}
116
+ $$
117
+
108
118
  $$
119
+ V \\approx ${getAnswer(identifiers)}
120
+ $$
121
+
109
122
  `;
110
123
  };
111
124
  const getQuestionFromIdentifiers = (identifiers) => {
@@ -1 +1 @@
1
- {"version":3,"file":"volumeOfPyramidWithSquareOrRectBase.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/volumeOfPyramidWithSquareOrRectBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAkNF,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CAAC,WAAW,CAerE,CAAC"}
1
+ {"version":3,"file":"volumeOfPyramidWithSquareOrRectBase.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/volumeOfPyramidWithSquareOrRectBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAmBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAyOF,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CAAC,WAAW,CAerE,CAAC"}
@@ -1,13 +1,16 @@
1
1
  import { addValidProp, propWhile, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
3
4
  import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
4
5
  import { RationalConstructor } from "../../../../math/numbers/rationals/rational.js";
6
+ import { unfrenchify } from "../../../../math/utils/latex/unfrenchify.js";
5
7
  import { randint } from "../../../../math/utils/random/randint.js";
6
8
  import { round } from "../../../../math/utils/round.js";
7
9
  import { isNumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
8
10
  import { FractionNode } from "../../../../tree/nodes/operators/fractionNode.js";
9
11
  import { multiply, MultiplyNode, } from "../../../../tree/nodes/operators/multiplyNode.js";
10
- import { square } from "../../../../tree/nodes/operators/powerNode.js";
12
+ import { power } from "../../../../tree/nodes/operators/powerNode.js";
13
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
11
14
  import { random } from "../../../../utils/alea/random.js";
12
15
  import { alignTex } from "../../../../utils/latex/alignTex.js";
13
16
  const polygonTypes = ["Square", "Rectangular"];
@@ -72,17 +75,27 @@ const getGGBOptions = (identifiers) => {
72
75
  };
73
76
  const getInstruction = (identifiers) => {
74
77
  const { baseOfPyramid, h } = identifiers;
75
- const instruction = `$ABCDH$ est une pyramide à base ${getPolygonNameInFr(baseOfPyramid.type)} dont la hauteur issue de $H$ vaut $${h}$.
78
+ const instruction = `$ABCDH$ est une pyramide à base ${getPolygonNameInFr(baseOfPyramid.type)} dont la hauteur issue de $H$ vaut $${h}$.
79
+
80
+ On sait également que : ${baseOfPyramid.type === "Square"
81
+ ? `
82
+ - $AB=${baseOfPyramid.sideSizes[0]}$`
83
+ : `
84
+ - $AB=${baseOfPyramid.sideSizes[0]}$
85
+ - $BC=${baseOfPyramid.sideSizes[1]}$`}
76
86
 
77
- Calculer son volume en sachant que ${baseOfPyramid.type === "Square"
78
- ? `$AB=${baseOfPyramid.sideSizes[0]}$`
79
- : `$AB=${baseOfPyramid.sideSizes[0]}$ et $BC=${baseOfPyramid.sideSizes[1]}$`}.`;
87
+ Calculer son volume (arrondir au centième).`;
80
88
  return instruction;
81
89
  };
90
+ const getAnswerNode = (identifiers) => {
91
+ const { baseOfPyramid, h } = identifiers;
92
+ const nodeVolume = calculateVolume(baseOfPyramid.sideSizes, h).simplify();
93
+ return nodeVolume;
94
+ };
82
95
  const getAnswer = (identifiers) => {
83
96
  const { baseOfPyramid, h } = identifiers;
84
97
  const volume = calculateVolume(baseOfPyramid.sideSizes, h).simplify();
85
- return volume.toTex();
98
+ return round(volume.evaluate(), 2).frenchify();
86
99
  };
87
100
  const getHint = (identifiers) => {
88
101
  const { baseOfPyramid } = identifiers;
@@ -91,7 +104,7 @@ const getHint = (identifiers) => {
91
104
  return `Le volume d'une pyramide est donné par la formule :
92
105
 
93
106
  $$
94
- V = \\frac{1}{3} \\times \\text{aire de la base} \\times \\text{hauteur}
107
+ V = \\frac{1}{3} \\times \\mathcal{A}_{base} \\times \\text{hauteur}
95
108
  $$
96
109
 
97
110
  La base de la pyramide est ici un ${baseShape}. Il faut donc commencer par calculer son aire.`;
@@ -101,30 +114,42 @@ const getCorrection = (identifiers) => {
101
114
  const { sideSizes, type } = baseOfPyramid;
102
115
  const baseShape = type === "Square" ? "carré" : "rectangle";
103
116
  const isSquare = type === "Square";
104
- const aera = round(isSquare ? sideSizes[0] ** 2 : sideSizes[0] * sideSizes[1], 2).frenchify();
117
+ const nodeAera = isSquare
118
+ ? power(sideSizes[0], 2)
119
+ : multiply(sideSizes[0], sideSizes[1]);
120
+ const nodeAnswer = getAnswerNode(identifiers);
121
+ const texAnswer = getAnswer(identifiers);
122
+ const isRounding = substract(nodeAnswer, unfrenchify(texAnswer).toTree()).evaluate() !== 0;
105
123
  return `Le volume d'une pyramide est donné par la formule :
106
124
 
107
125
  $$
108
- V = \\frac{1}{3} \\times \\text{aire de la base} \\times \\text{hauteur}
126
+ V = \\frac{1}{3} \\times \\mathcal{A}_{base} \\times \\text{hauteur}
109
127
  $$
110
128
 
111
129
  Ici, la base est un ${baseShape}. Son aire est égale à :
112
130
 
113
131
  $$
114
- ${isSquare
115
- ? square(sideSizes[0]).toTex()
116
- : multiply(sideSizes[0], sideSizes[1]).toTex({
117
- forceNoSimplification: true,
118
- })} = ${aera}
132
+ \\mathcal{A}_{base} =
133
+ ${nodeAera.toTex({
134
+ forceNoSimplification: true,
135
+ })}
119
136
  $$
120
137
 
121
138
  Le volume de la pyramide est donc :
122
139
 
123
140
  ${alignTex([
124
- ["V", "=", `\\frac{1}{3}\\times ${aera} \\times ${h}`],
125
- ["", "=", getAnswer(identifiers)],
126
- ])}
127
- `;
141
+ [
142
+ "V",
143
+ "=",
144
+ `\\frac{1}{3}\\times ${nodeAera.toTex({
145
+ forceNoSimplification: true,
146
+ })} \\times ${h}`,
147
+ ],
148
+ ["", isRounding ? "\\approx" : "=", getAnswer(identifiers)],
149
+ ])}${isRounding
150
+ ? `
151
+ *Attention à bien attendre la toute fin du calcul avant d'arrondir.*`
152
+ : ""}`;
128
153
  };
129
154
  const getQuestionFromIdentifiers = (identifiers) => {
130
155
  const question = {
@@ -153,9 +178,8 @@ const getPropositions = (n, { answer, h, baseOfPyramid }) => {
153
178
  });
154
179
  return shuffleProps(propositions, n);
155
180
  };
156
- const isAnswerValid = (ans, { baseOfPyramid, h }) => {
157
- const volume = calculateVolume(baseOfPyramid.sideSizes, h);
158
- return volume.simplify().toAllValidTexs().includes(ans);
181
+ const isAnswerValid = (ans, { answer }) => {
182
+ return numberVEA(ans, answer);
159
183
  };
160
184
  const generatePropositions = (baseOfPyramid, h) => {
161
185
  const firstProposition = h * baseOfPyramid.sideSizes[0] * baseOfPyramid.sideSizes[1] + "";
@@ -1 +1 @@
1
- {"version":3,"file":"volumeOfPyramidWithTriangleBase.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,kBAAkB,EAAE,aAAa,CAAC;CACnC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAmMF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAejE,CAAC"}
1
+ {"version":3,"file":"volumeOfPyramidWithTriangleBase.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAkBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,kBAAkB,EAAE,aAAa,CAAC;CACnC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA4NF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAejE,CAAC"}
@@ -2,11 +2,13 @@ import { addValidProp, propWhile, shuffleProps, tryToAddWrongProp, } from "../..
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
3
  import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
4
4
  import { RationalConstructor } from "../../../../math/numbers/rationals/rational.js";
5
+ import { unfrenchify } from "../../../../math/utils/latex/unfrenchify.js";
5
6
  import { randint } from "../../../../math/utils/random/randint.js";
6
7
  import { round } from "../../../../math/utils/round.js";
7
8
  import { isNumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
8
9
  import { frac, FractionNode } from "../../../../tree/nodes/operators/fractionNode.js";
9
10
  import { multiply, MultiplyNode, } from "../../../../tree/nodes/operators/multiplyNode.js";
11
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
10
12
  import { random } from "../../../../utils/alea/random.js";
11
13
  import { alignTex } from "../../../../utils/latex/alignTex.js";
12
14
  const pythagoreTriplet = [
@@ -33,49 +35,68 @@ const getInstruction = (identifiers) => {
33
35
  const { baseOfPyramidSides, h } = identifiers;
34
36
  return `$ABCH$ est une pyramide à base triangulaire dont la hauteur issue de $H$ vaut $${h}$. Le point $D$ est le pied de la hauteur issue de $C$ dans le triangle $ABC$.
35
37
 
36
- Calculer le volume de la pyramide en sachant que $AB=${baseOfPyramidSides.ABSide}$ et $CD=${baseOfPyramidSides.ACSide}$.`;
38
+ On sait également que :
39
+ - $AB=${baseOfPyramidSides.ABSide}$
40
+ - $CD=${baseOfPyramidSides.ACSide}$
41
+
42
+ Calculer son volume (arrondir au centième).`;
37
43
  };
38
- const getAnswer = (identifiers) => {
44
+ const getAnswerNode = (identifiers) => {
39
45
  const { baseOfPyramidSides, h } = identifiers;
40
46
  const volume = calculateVolume(baseOfPyramidSides, h);
41
- return volume.simplify().toTex();
47
+ return volume.simplify();
48
+ };
49
+ const getAnswer = (identifiers) => {
50
+ const nodeVolume = getAnswerNode(identifiers);
51
+ return round(nodeVolume.evaluate(), 2).frenchify();
42
52
  };
43
53
  const getHint = () => {
44
54
  return `Le volume d'une pyramide est donné par la formule :
45
55
 
46
56
  $$
47
- V = \\frac{1}{3} \\times \\text{aire de la base} \\times \\text{hauteur}
57
+ V = \\frac{1}{3} \\times \\mathcal{A}_{base} \\times \\text{hauteur}
48
58
  $$
49
59
 
50
60
  La base de la pyramide est ici un triangle. Son aire se calcule par la formule :
51
61
 
52
62
  $$
53
- A = \\frac{\\text{base}\\times\\text{hauteur}}{2}
63
+ \\mathcal{A}_{triangle} = \\frac{\\text{base}\\times\\text{hauteur}}{2}
54
64
  $$`;
55
65
  };
56
66
  const getCorrection = (identifiers) => {
57
67
  const { h, baseOfPyramidSides } = identifiers;
58
68
  const { ABSide, ACSide } = baseOfPyramidSides;
59
- const aera = round((ABSide * ACSide) / 2, 2).frenchify();
69
+ const nodeAera = frac(multiply(ABSide, ACSide), 2);
70
+ const nodeAnswer = getAnswerNode(identifiers);
71
+ const texAnswer = getAnswer(identifiers);
72
+ const isRounding = substract(nodeAnswer, unfrenchify(texAnswer).toTree()).evaluate() !== 0;
60
73
  return `Le volume d'une pyramide est donné par la formule :
61
74
 
62
75
  $$
63
- V = \\frac{1}{3} \\times \\text{aire de la base} \\times \\text{hauteur}
76
+ V = \\frac{1}{3} \\times \\mathcal{A}_{base} \\times \\text{hauteur}
64
77
  $$
65
78
 
66
79
  Ici, la base est un triangle rectangle dont une hauteur est $${ACSide}$ et sa base associée vaut $${ABSide}$. Son aire est donc égale à :
67
80
 
68
81
  $$
69
- ${frac(multiply(ACSide, ABSide), 2).toTex()} = ${aera}
82
+ \\mathcal{A}_{base} = ${nodeAera.toTex({ forceNoSimplification: true })}
70
83
  $$
71
84
 
72
85
  Le volume de la pyramide est donc :
73
86
 
74
87
  ${alignTex([
75
- ["V", "=", `\\frac{1}{3}\\times ${aera} \\times ${h}`],
76
- ["", "=", getAnswer(identifiers)],
77
- ])}
78
- `;
88
+ [
89
+ "V",
90
+ "=",
91
+ `\\frac{1}{3}\\times ${nodeAera.toTex({
92
+ forceNoSimplification: true,
93
+ })} \\times ${h}`,
94
+ ],
95
+ ["", isRounding ? "\\approx" : "=", getAnswer(identifiers)],
96
+ ])}${isRounding
97
+ ? `
98
+ *Attention à bien attendre la toute fin du calcul avant d'arrondir.*`
99
+ : ""}`;
79
100
  };
80
101
  const getGGBOptions = (identifiers) => {
81
102
  const { baseOfPyramidSides, h } = identifiers;
@@ -1 +1 @@
1
- {"version":3,"file":"volumeOfPyramidWithTriangleRectBase.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,kBAAkB,EAAE,aAAa,CAAC;CACnC,CAAC;AAEF,KAAK,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAqMxE,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,CAgBjD,CAAC"}
1
+ {"version":3,"file":"volumeOfPyramidWithTriangleRectBase.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAkBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,kBAAkB,EAAE,aAAa,CAAC;CACnC,CAAC;AAEF,KAAK,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgOxE,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,CAgBjD,CAAC"}
@@ -2,11 +2,13 @@ import { addValidProp, propWhile, shuffleProps, tryToAddWrongProp, } from "../..
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
3
  import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
4
4
  import { RationalConstructor } from "../../../../math/numbers/rationals/rational.js";
5
+ import { unfrenchify } from "../../../../math/utils/latex/unfrenchify.js";
5
6
  import { randint } from "../../../../math/utils/random/randint.js";
6
7
  import { round } from "../../../../math/utils/round.js";
7
8
  import { isNumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
8
9
  import { frac, FractionNode } from "../../../../tree/nodes/operators/fractionNode.js";
9
10
  import { multiply, MultiplyNode, } from "../../../../tree/nodes/operators/multiplyNode.js";
11
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
10
12
  import { random } from "../../../../utils/alea/random.js";
11
13
  import { alignTex } from "../../../../utils/latex/alignTex.js";
12
14
  const pythagoreTriplet = [
@@ -34,14 +36,24 @@ const getVolumeOfPyramidWithTriangleRectBase = () => {
34
36
  };
35
37
  const getInstruction = (identifiers) => {
36
38
  const { h, baseOfPyramidSides } = identifiers;
37
- return `$ABCH$ est une pyramide à base triangulaire dont la hauteur issue de $H$ vaut $${h}$.
38
-
39
- Calculer le volume de la pyramide en sachant que : $AB=${baseOfPyramidSides.ABSide}$, $AC=${baseOfPyramidSides.ACSide}$, $BC=${baseOfPyramidSides.BCSide}$ et $(AC)\\perp(AB)$.`;
39
+ return `$ABCH$ est une pyramide à base triangulaire dont la hauteur issue de $H$ vaut $${h}$.
40
+
41
+ On sait également que :
42
+ - $AB=${baseOfPyramidSides.ABSide}$
43
+ - $AC=${baseOfPyramidSides.ACSide}$
44
+ - $BC=${baseOfPyramidSides.BCSide}$
45
+ - $(AC)\\perp(AB)$
46
+
47
+ Calculer son volume (arrondir au centième).`;
40
48
  };
41
- const getAnswer = (identifiers) => {
42
- const { h, baseOfPyramidSides } = identifiers;
49
+ const getAnswerNode = (identifiers) => {
50
+ const { baseOfPyramidSides, h } = identifiers;
43
51
  const volume = calculateVolume(baseOfPyramidSides, h);
44
- return volume.simplify().toTex();
52
+ return volume.simplify();
53
+ };
54
+ const getAnswer = (identifiers) => {
55
+ const nodeVolume = getAnswerNode(identifiers);
56
+ return round(nodeVolume.evaluate(), 2).frenchify();
45
57
  };
46
58
  const getGGBOptions = (identifiers) => {
47
59
  const { h, baseOfPyramidSides } = identifiers;
@@ -80,38 +92,49 @@ const getHint = () => {
80
92
  return `Le volume d'une pyramide est donné par la formule :
81
93
 
82
94
  $$
83
- V = \\frac{1}{3} \\times \\text{aire de la base} \\times \\text{hauteur}
95
+ V = \\frac{1}{3} \\times \\mathcal{A}_{base} \\times \\text{hauteur}
84
96
  $$
85
97
 
86
98
  La base de la pyramide est ici un triangle rectangle. Son aire se calcule par la formule :
87
99
 
88
100
  $$
89
- A = \\frac{\\text{base}\\times\\text{hauteur}}{2}
101
+ \\mathcal{A}_{triangle} = \\frac{\\text{base}\\times\\text{hauteur}}{2}
90
102
  $$`;
91
103
  };
92
104
  const getCorrection = (identifiers) => {
93
105
  const { h, baseOfPyramidSides } = identifiers;
94
106
  const { ABSide, ACSide } = baseOfPyramidSides;
95
- const aera = round((ABSide * ACSide) / 2, 2).frenchify();
107
+ const nodeAera = frac(multiply(ABSide, ACSide), 2);
108
+ const nodeAnswer = getAnswerNode(identifiers);
109
+ const texAnswer = getAnswer(identifiers);
110
+ const isRounding = substract(nodeAnswer, unfrenchify(texAnswer).toTree()).evaluate() !== 0;
96
111
  return `Le volume d'une pyramide est donné par la formule :
97
112
 
98
113
  $$
99
- V = \\frac{1}{3} \\times \\text{aire de la base} \\times \\text{hauteur}
114
+ V = \\frac{1}{3} \\times \\mathcal{A}_{base} \\times \\text{hauteur}
100
115
  $$
101
116
 
102
117
  Ici, la base est un triangle rectangle dont une hauteur est $${ACSide}$ et sa base associée vaut $${ABSide}$. Son aire est donc égale à :
103
118
 
104
119
  $$
105
- ${frac(multiply(ACSide, ABSide), 2).toTex()} = ${aera}
120
+ \\mathcal{A}_{base} = ${nodeAera.toTex({ forceNoSimplification: true })}
106
121
  $$
107
122
 
108
123
  Le volume de la pyramide est donc :
109
124
 
110
125
  ${alignTex([
111
- ["V", "=", `\\frac{1}{3}\\times ${aera} \\times ${h}`],
112
- ["", "=", getAnswer(identifiers)],
113
- ])}
114
- `;
126
+ [
127
+ "V",
128
+ "=",
129
+ `\\frac{1}{3}\\times ${nodeAera.toTex({
130
+ forceNoSimplification: true,
131
+ })} \\times ${h}`,
132
+ ],
133
+ ["", isRounding ? "\\approx" : "=", getAnswer(identifiers)],
134
+ ])}${isRounding
135
+ ? `
136
+ *Attention à bien attendre la toute fin du calcul avant d'arrondir.*`
137
+ : ""}`;
115
138
  };
116
139
  const getQuestionFromIdentifiers = (identifiers) => {
117
140
  const question = {
@@ -1 +1 @@
1
- {"version":3,"file":"findTVA.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/percent/findTVA.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AA4EF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,WAAW,CAezC,CAAC"}
1
+ {"version":3,"file":"findTVA.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/percent/findTVA.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAiFF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,WAAW,CAezC,CAAC"}
@@ -20,25 +20,26 @@ const getAnswer = ({ tva }) => {
20
20
  return tva.frenchify() + "\\%";
21
21
  };
22
22
  const getInstruction = ({ ht, ttc }) => {
23
- return `Le prix HT d'un objet est $${ht.frenchify()}€$ et son prix TTC est $${ttc.frenchify()}€$. Quel est le taux de TVA ? Arrondir au dixième de pourcentage`;
23
+ return `Le prix HT d'un objet est $${ht.frenchify()}€$ et son prix TTC est $${ttc.frenchify()}€$. Quel est le taux de TVA en pourcentage ? Arrondir au dixième de pourcentage`;
24
24
  };
25
25
  const getHint = () => {
26
26
  return `Le taux de TVA est donnée par :
27
27
 
28
28
  $$
29
- \\frac{\\text{Prix TTC}-\\text{Prix HT}}{\\text{Prix HT}}\\times 100
30
- $$`;
29
+ \\frac{\\text{Prix TTC}-\\text{Prix HT}}{\\text{Prix HT}}
30
+ $$
31
+
32
+ À toi de le convertir en pourcents et de l'arrondir.
33
+ `;
31
34
  };
32
35
  const getCorrection = ({ ht, ttc, tva }) => {
33
36
  return `Le taux de TVA est :
34
37
 
35
38
  ${alignTex([
36
- ["", "\\frac{\\text{Prix TTC}-\\text{Prix HT}}{\\text{Prix HT}}\\times 100"],
37
- [
38
- "=",
39
- `\\frac{${ttc.frenchify()}-${ht.frenchify()}}{${ht.frenchify()}}{}\\times 100`,
40
- ],
41
- ["\\approx", tva.frenchify()],
39
+ ["", "\\frac{\\text{Prix TTC}-\\text{Prix HT}}{\\text{Prix HT}}"],
40
+ ["=", `\\frac{${ttc.frenchify()}-${ht.frenchify()}}{${ht.frenchify()}}{}`],
41
+ ["\\approx", `${(tva / 100.0).frenchify()}`],
42
+ ["\\approx", `${tva.frenchify()}\\%`],
42
43
  ])}
43
44
 
44
45
  Le taux de TVA est donc de $${tva.frenchify()}\\%$.
@@ -48,8 +49,13 @@ const getKeys = () => {
48
49
  return ["percent"];
49
50
  };
50
51
  const isAnswerValid = (ans, { answer }) => {
51
- const nb = numberParser(ans.replace("\\%", ""));
52
- return nb + "\\%" === answer;
52
+ if (ans.includes("\\%")) {
53
+ const nb = numberParser(ans.replace("\\%", ""));
54
+ return nb + "\\%" === answer;
55
+ }
56
+ else {
57
+ return false;
58
+ }
53
59
  };
54
60
  const getFindTvaQuestion = () => {
55
61
  const tva = random([2.1, 5.5, 10, 20]);
@@ -40,7 +40,7 @@ const isAnswerValid = (ans, { answer }) => {
40
40
  };
41
41
  const getHint = (identifiers) => {
42
42
  const itemType = identifiers.contextType === 2 ? "habitants" : "élèves";
43
- return `Détermine la quatrième proportionnelle un produit en croix : si $${identifiers.subPopulationPercent.frenchify()}\\%$ représente $${identifiers.subPopulationEffectif}$ ${itemType}, alors que représente $100\\%$ ?`;
43
+ return `Détermine la quatrième proportionnelle par un produit en croix : si $${identifiers.subPopulationPercent.frenchify()}\\%$ représente $${identifiers.subPopulationEffectif}$ ${itemType}, alors que représente $100\\%$ ?`;
44
44
  };
45
45
  const getCorrection = (identifiers) => {
46
46
  const itemType = identifiers.contextType === 2 ? "habitants" : "élèves";
@@ -11,4 +11,5 @@ export * from "./pickEquiprobableTo.js";
11
11
  export * from "./getMissingProbabilityValueMiddleSchool.js";
12
12
  export * from "./findEffectifFromProba.js";
13
13
  export * from "./calculateProbaFromProbaLaw.js";
14
+ export * from "./pickEquiprobableSituations.js";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/basicProbas/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/basicProbas/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC"}
@@ -11,4 +11,4 @@ export * from "./pickEquiprobableTo.js";
11
11
  export * from "./getMissingProbabilityValueMiddleSchool.js";
12
12
  export * from "./findEffectifFromProba.js";
13
13
  export * from "./calculateProbaFromProbaLaw.js";
14
- // export * from "./pickEquiprobableSituations.js";
14
+ export * from "./pickEquiprobableSituations.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pickEquiprobableSituations.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/basicProbas/pickEquiprobableSituations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAMrC,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AA4IF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,WAAW,CAkB5D,CAAC"}
1
+ {"version":3,"file":"pickEquiprobableSituations.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/basicProbas/pickEquiprobableSituations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AA6ErC,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAqNF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,WAAW,CAmB5D,CAAC"}