math-exercises 3.0.158 → 3.0.159

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 (218) hide show
  1. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.js +7 -6
  2. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.d.ts.map +1 -1
  3. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.js +88 -9
  4. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts.map +1 -1
  5. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.js +8 -2
  6. package/lib/exercises/math/calculLitteral/equation/index.d.ts +1 -0
  7. package/lib/exercises/math/calculLitteral/equation/index.d.ts.map +1 -1
  8. package/lib/exercises/math/calculLitteral/equation/index.js +1 -0
  9. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -1
  10. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.js +27 -2
  11. package/lib/exercises/math/calculLitteral/equation/solveByFactorizingWithIdRmq3.d.ts.map +1 -1
  12. package/lib/exercises/math/calculLitteral/equation/solveByFactorizingWithIdRmq3.js +0 -1
  13. package/lib/exercises/math/calculLitteral/equation/square/equationSquareWithSteps.d.ts.map +1 -1
  14. package/lib/exercises/math/calculLitteral/equation/square/equationSquareWithSteps.js +0 -1
  15. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts.map +1 -1
  16. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.js +11 -4
  17. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.d.ts.map +1 -1
  18. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.js +11 -5
  19. package/lib/exercises/math/calculLitteral/inequations/index.d.ts +1 -0
  20. package/lib/exercises/math/calculLitteral/inequations/index.d.ts.map +1 -1
  21. package/lib/exercises/math/calculLitteral/inequations/index.js +1 -0
  22. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.d.ts.map +1 -1
  23. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.js +91 -21
  24. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.d.ts.map +1 -1
  25. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.js +63 -43
  26. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.d.ts.map +1 -1
  27. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.js +72 -49
  28. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.d.ts.map +1 -1
  29. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.js +19 -19
  30. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts.map +1 -1
  31. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.js +26 -14
  32. package/lib/exercises/math/derivation/derivative/exp/index.d.ts +1 -0
  33. package/lib/exercises/math/derivation/derivative/exp/index.d.ts.map +1 -1
  34. package/lib/exercises/math/derivation/derivative/exp/index.js +1 -0
  35. package/lib/exercises/math/derivation/variations/index.d.ts +1 -0
  36. package/lib/exercises/math/derivation/variations/index.d.ts.map +1 -1
  37. package/lib/exercises/math/derivation/variations/index.js +1 -0
  38. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.d.ts +7 -0
  39. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.d.ts.map +1 -0
  40. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.js +174 -0
  41. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts.map +1 -1
  42. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.js +30 -3
  43. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts.map +1 -1
  44. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.js +12 -7
  45. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.js +1 -1
  46. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.js +2 -2
  47. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts.map +1 -1
  48. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.js +33 -44
  49. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts.map +1 -1
  50. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.js +80 -8
  51. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts.map +1 -1
  52. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.js +80 -25
  53. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts.map +1 -1
  54. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.js +6 -15
  55. package/lib/exercises/math/functions/exponential/expFactorization.d.ts.map +1 -1
  56. package/lib/exercises/math/functions/exponential/expFactorization.js +54 -42
  57. package/lib/exercises/math/functions/exponential/index.d.ts +2 -0
  58. package/lib/exercises/math/functions/exponential/index.d.ts.map +1 -1
  59. package/lib/exercises/math/functions/exponential/index.js +2 -0
  60. package/lib/exercises/math/functions/trinoms/equation/secondDegreeInequation.js +3 -0
  61. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts.map +1 -1
  62. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.js +18 -23
  63. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts.map +1 -1
  64. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.js +24 -26
  65. package/lib/exercises/math/functions/variations/index.d.ts +1 -0
  66. package/lib/exercises/math/functions/variations/index.d.ts.map +1 -1
  67. package/lib/exercises/math/functions/variations/index.js +1 -0
  68. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.d.ts +12 -0
  69. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.d.ts.map +1 -0
  70. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.js +230 -0
  71. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.d.ts +10 -0
  72. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.d.ts.map +1 -0
  73. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.js +167 -0
  74. package/lib/exercises/math/geometry/cartesian/index.d.ts +3 -0
  75. package/lib/exercises/math/geometry/cartesian/index.d.ts.map +1 -1
  76. package/lib/exercises/math/geometry/cartesian/index.js +3 -0
  77. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.d.ts +10 -0
  78. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.d.ts.map +1 -0
  79. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.js +131 -0
  80. package/lib/exercises/math/geometry/circles/index.d.ts +2 -0
  81. package/lib/exercises/math/geometry/circles/index.d.ts.map +1 -0
  82. package/lib/exercises/math/geometry/circles/index.js +1 -0
  83. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.d.ts +11 -0
  84. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.d.ts.map +1 -0
  85. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.js +131 -0
  86. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.d.ts.map +1 -1
  87. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.js +0 -2
  88. package/lib/exercises/math/geometry/index.d.ts +1 -0
  89. package/lib/exercises/math/geometry/index.d.ts.map +1 -1
  90. package/lib/exercises/math/geometry/index.js +1 -0
  91. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.d.ts +4 -0
  92. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.d.ts.map +1 -0
  93. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.js +3 -0
  94. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.d.ts +9 -0
  95. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.d.ts.map +1 -0
  96. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.js +247 -0
  97. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts +13 -0
  98. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts.map +1 -0
  99. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.js +452 -0
  100. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.d.ts +9 -0
  101. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.d.ts.map +1 -0
  102. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.js +253 -0
  103. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.d.ts +4 -0
  104. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.d.ts.map +1 -0
  105. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.js +3 -0
  106. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.d.ts +10 -0
  107. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.d.ts.map +1 -0
  108. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.js +174 -0
  109. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.d.ts +9 -0
  110. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.d.ts.map +1 -0
  111. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.js +231 -0
  112. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.d.ts +14 -0
  113. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.d.ts.map +1 -0
  114. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.js +292 -0
  115. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.d.ts +6 -0
  116. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.d.ts.map +1 -0
  117. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.js +5 -0
  118. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.d.ts +9 -0
  119. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.d.ts.map +1 -0
  120. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.js +202 -0
  121. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.d.ts +9 -0
  122. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.d.ts.map +1 -0
  123. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.js +127 -0
  124. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.d.ts +12 -0
  125. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.d.ts.map +1 -0
  126. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.js +167 -0
  127. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.d.ts +12 -0
  128. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.d.ts.map +1 -0
  129. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.js +180 -0
  130. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.d.ts +12 -0
  131. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.d.ts.map +1 -0
  132. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.js +235 -0
  133. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts +12 -0
  134. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts.map +1 -0
  135. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.js +423 -0
  136. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.d.ts +17 -0
  137. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.d.ts.map +1 -0
  138. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.js +347 -0
  139. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.d.ts +8 -0
  140. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.d.ts.map +1 -0
  141. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.js +301 -0
  142. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.d.ts +9 -0
  143. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.d.ts.map +1 -0
  144. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.js +141 -0
  145. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.d.ts +10 -0
  146. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.d.ts.map +1 -0
  147. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.js +174 -0
  148. package/lib/exercises/math/probaStat/randomVariable/index.d.ts +1 -0
  149. package/lib/exercises/math/probaStat/randomVariable/index.d.ts.map +1 -1
  150. package/lib/exercises/math/probaStat/randomVariable/index.js +2 -0
  151. package/lib/exercises/math/sequences/generation/index.d.ts +2 -0
  152. package/lib/exercises/math/sequences/generation/index.d.ts.map +1 -0
  153. package/lib/exercises/math/sequences/generation/index.js +1 -0
  154. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.d.ts +8 -0
  155. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.d.ts.map +1 -0
  156. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.js +63 -0
  157. package/lib/exercises/math/sequences/graph/index.d.ts +2 -0
  158. package/lib/exercises/math/sequences/graph/index.d.ts.map +1 -0
  159. package/lib/exercises/math/sequences/graph/index.js +1 -0
  160. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.d.ts +11 -0
  161. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.d.ts.map +1 -0
  162. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.js +113 -0
  163. package/lib/exercises/math/sequences/index.d.ts +2 -0
  164. package/lib/exercises/math/sequences/index.d.ts.map +1 -1
  165. package/lib/exercises/math/sequences/index.js +2 -0
  166. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.d.ts +12 -0
  167. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.d.ts.map +1 -0
  168. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.js +114 -0
  169. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.d.ts +12 -0
  170. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.d.ts.map +1 -0
  171. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.js +111 -0
  172. package/lib/exercises/math/sequences/notation/index.d.ts +3 -0
  173. package/lib/exercises/math/sequences/notation/index.d.ts.map +1 -0
  174. package/lib/exercises/math/sequences/notation/index.js +2 -0
  175. package/lib/exercises/math/spaceGeometry/basis/findSpacePointOnRectangularPrism.d.ts.map +1 -1
  176. package/lib/exercises/math/spaceGeometry/basis/findSpacePointOnRectangularPrism.js +0 -1
  177. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts.map +1 -1
  178. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.js +0 -2
  179. package/lib/exercises/vea/cartesianLineVEA.d.ts +2 -0
  180. package/lib/exercises/vea/cartesianLineVEA.d.ts.map +1 -0
  181. package/lib/exercises/vea/cartesianLineVEA.js +1 -0
  182. package/lib/index.d.ts +123 -0
  183. package/lib/index.d.ts.map +1 -1
  184. package/lib/math/geometry/line.d.ts +2 -0
  185. package/lib/math/geometry/line.d.ts.map +1 -1
  186. package/lib/math/geometry/line.js +7 -0
  187. package/lib/math/geometry/point.d.ts +1 -0
  188. package/lib/math/geometry/point.d.ts.map +1 -1
  189. package/lib/math/geometry/point.js +5 -0
  190. package/lib/math/geometry/polygons/relationPP.d.ts +8 -0
  191. package/lib/math/geometry/polygons/relationPP.d.ts.map +1 -0
  192. package/lib/math/geometry/polygons/relationPP.js +41 -0
  193. package/lib/math/polynomials/trinom.d.ts +1 -1
  194. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  195. package/lib/math/polynomials/trinom.js +15 -6
  196. package/lib/math/utils/arithmetic/primeFactors.js +1 -1
  197. package/lib/math/utils/geometry/randomVecs2.d.ts +6 -0
  198. package/lib/math/utils/geometry/randomVecs2.d.ts.map +1 -0
  199. package/lib/math/utils/geometry/randomVecs2.js +34 -0
  200. package/lib/tests/questionTest.d.ts.map +1 -1
  201. package/lib/tests/questionTest.js +2 -2
  202. package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
  203. package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
  204. package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
  205. package/lib/tree/nodes/functions/expNode.d.ts +1 -1
  206. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  207. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
  208. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  209. package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
  210. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -1
  211. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  212. package/lib/tree/nodes/operators/fractionNode.js +6 -4
  213. package/lib/tree/nodes/sets/intervalNode.d.ts +6 -0
  214. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  215. package/lib/tree/nodes/sets/namedIntervalNode.d.ts +31 -0
  216. package/lib/tree/nodes/sets/namedIntervalNode.d.ts.map +1 -0
  217. package/lib/tree/nodes/sets/namedIntervalNode.js +77 -0
  218. package/package.json +1 -1
@@ -0,0 +1,141 @@
1
+ import { addValidProp, shuffleProps, propWhile, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { rationalVEA } from "../../../../exercises/vea/rationalVEA.js";
4
+ import { randfloat } from "../../../../math/utils/random/randfloat.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { round } from "../../../../math/utils/round.js";
7
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
8
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
9
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
10
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
11
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
12
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
13
+ import { mdTable } from "../../../../utils/markdown/mdTable.js";
14
+ const getPropositions = (n, { answer }) => {
15
+ const propositions = [];
16
+ addValidProp(propositions, answer);
17
+ propWhile(propositions, n, () => {
18
+ throw Error("QCM not implemented");
19
+ });
20
+ return shuffleProps(propositions, n);
21
+ };
22
+ const getAnswer = (identifiers) => {
23
+ const { probasIds, valuesIds } = identifiers;
24
+ const probas = probasIds.map((e) => reifyAlgebraic(e));
25
+ const values = valuesIds.map((e) => reifyAlgebraic(e));
26
+ const xIndex = probas.findIndex((e) => !e.isNumeric) > -1
27
+ ? probas.findIndex((e) => !e.isNumeric)
28
+ : values.findIndex((e) => !e.isNumeric);
29
+ let esp = (xIndex === 0
30
+ ? multiply(values[1], probas[1])
31
+ : multiply(values[0], probas[0]));
32
+ for (let i = xIndex === 0 ? 2 : 1; i < values.length; i++) {
33
+ if (i === xIndex)
34
+ continue;
35
+ esp = add(esp, multiply(values[i], probas[i]));
36
+ }
37
+ const simp = esp.simplify();
38
+ const isXMissing = values.some((x) => !x.isNumeric);
39
+ const coeff = isXMissing ? probas[xIndex] : values[xIndex];
40
+ const x = frac(simp, coeff).simplify().evaluate();
41
+ return x.frenchify();
42
+ };
43
+ const getInstruction = (identifiers) => {
44
+ const { probasIds, valuesIds } = identifiers;
45
+ const probas = probasIds.map((e) => reifyAlgebraic(e));
46
+ const values = valuesIds.map((e) => reifyAlgebraic(e));
47
+ return `On joue à un jeu de hasard. On note $X$ la variable aléatoire égale au gain du joueur. La loi de probabilité de $X$ est donnée ci-dessous:
48
+
49
+ ${mdTable([
50
+ ["$x_i$ (en $€$)", ...values.map((e) => e.toTex())],
51
+ ["$P(X=x_i)$", ...probas.map((e) => e.toTex())],
52
+ ])}
53
+
54
+ Pour quelle valeur de $x$ le jeu est-il équitable ? `;
55
+ };
56
+ const getHint = () => {
57
+ return `Un jeu est équitable si l'espérance de gain est nulle.
58
+
59
+ Calcule donc $E(X)$ en fonction de $x$, puis résous l'équation $E(x) = 0$.`;
60
+ };
61
+ const getCorrection = (identifiers) => {
62
+ return ``;
63
+ };
64
+ const getKeys = () => {
65
+ return [];
66
+ };
67
+ const isAnswerValid = (ans, { answer }) => {
68
+ try {
69
+ return rationalVEA(ans, answer);
70
+ }
71
+ catch (err) {
72
+ return handleVEAError(err);
73
+ }
74
+ };
75
+ const getFindProbaForFairGameQuestion = () => {
76
+ const xValues = [
77
+ 0,
78
+ randint(1, 5),
79
+ randint(5, 10),
80
+ 5 * randint(10, 20),
81
+ 100 * randint(1, 10),
82
+ ];
83
+ const probas = [
84
+ randfloat(0.1, 0.3, 2),
85
+ randfloat(0.02, 0.04, 3),
86
+ randfloat(0.01, 0.02, 3),
87
+ randfloat(0.001, 0.009, 3),
88
+ ];
89
+ const left = round(1 - probas.reduce((acc, curr) => acc + curr, 0), 4);
90
+ probas.unshift(left);
91
+ const xNodes = xValues.map((e) => e.toTree());
92
+ const yNodes = probas.map((e) => e.toTree());
93
+ const isXMissing = coinFlip();
94
+ if (isXMissing) {
95
+ xNodes[randint(0, xValues.length)] = "x".toTree();
96
+ }
97
+ else {
98
+ yNodes[randint(0, xValues.length)] = "x".toTree();
99
+ }
100
+ const identifiers = {
101
+ valuesIds: xNodes.map((e) => e.toIdentifiers()),
102
+ probasIds: yNodes.map((e) => e.toIdentifiers()),
103
+ };
104
+ return getQuestionFromIdentifiers(identifiers);
105
+ };
106
+ const getQuestionFromIdentifiers = (identifiers) => {
107
+ return {
108
+ answer: getAnswer(identifiers),
109
+ instruction: getInstruction(identifiers),
110
+ keys: getKeys(identifiers),
111
+ answerFormat: "tex",
112
+ identifiers,
113
+ hint: getHint(identifiers),
114
+ correction: getCorrection(identifiers),
115
+ style: {
116
+ tableOptions: {
117
+ firstColumnIsHeader: true,
118
+ firstCellIsDivided: false,
119
+ firstRowIsHeader: false,
120
+ },
121
+ },
122
+ };
123
+ };
124
+ export const findValueForFairRandomVariable = {
125
+ id: "findValueForFairRandomVariable",
126
+ connector: "=",
127
+ label: "Compléter la loi de probabilité d'une variable aléatoire pour rendre un jeu équitable",
128
+ isSingleStep: true,
129
+ generator: (nb, opts) => getDistinctQuestions(() => getFindProbaForFairGameQuestion(opts), nb),
130
+ qcmTimer: 60,
131
+ freeTimer: 60,
132
+ getPropositions,
133
+ isAnswerValid,
134
+ subject: "Mathématiques",
135
+ getInstruction,
136
+ getHint,
137
+ getCorrection,
138
+ getAnswer,
139
+ getQuestionFromIdentifiers,
140
+ hasHintAndCorrection: true,
141
+ };
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ valuesIds: NodeIdentifiers[];
5
+ probasIds: NodeIdentifiers[];
6
+ avgIds: NodeIdentifiers;
7
+ };
8
+ export declare const findValueToMatchRandomVariableAverage: Exercise<Identifiers>;
9
+ export {};
10
+ //# sourceMappingURL=findValueToMatchRandomVariableAverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findValueToMatchRandomVariableAverage.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAY7C,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AA6JF,eAAO,MAAM,qCAAqC,EAAE,QAAQ,CAAC,WAAW,CAmBvE,CAAC"}
@@ -0,0 +1,174 @@
1
+ import { addValidProp, shuffleProps, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { rationalVEA } from "../../../../exercises/vea/rationalVEA.js";
4
+ import { randfloat } from "../../../../math/utils/random/randfloat.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { round } from "../../../../math/utils/round.js";
7
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
8
+ import { add, AddNode } from "../../../../tree/nodes/operators/addNode.js";
9
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
10
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
11
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
12
+ import { operatorComposition } from "../../../../tree/utilities/operatorComposition.js";
13
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
14
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
15
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
16
+ import { dollarize } from "../../../../utils/latex/dollarize.js";
17
+ import { mdTable } from "../../../../utils/markdown/mdTable.js";
18
+ const getPropositions = (n, { answer }) => {
19
+ const propositions = [];
20
+ addValidProp(propositions, answer);
21
+ const ansNb = answer.unfrenchify();
22
+ propWhile(propositions, n, () => {
23
+ tryToAddWrongProp(propositions, (ansNb + randfloat(-3, 3, 2)).frenchify());
24
+ });
25
+ return shuffleProps(propositions, n);
26
+ };
27
+ const getAnswer = (identifiers) => {
28
+ const { probasIds, valuesIds, avgIds } = identifiers;
29
+ const esp = reifyAlgebraic(avgIds);
30
+ const probas = probasIds.map((e) => reifyAlgebraic(e));
31
+ const values = valuesIds.map((e) => reifyAlgebraic(e));
32
+ const xIndex = probas.findIndex((e) => !e.isNumeric) > -1
33
+ ? probas.findIndex((e) => !e.isNumeric)
34
+ : values.findIndex((e) => !e.isNumeric);
35
+ let partialEsp = (xIndex === 0
36
+ ? multiply(values[1], probas[1])
37
+ : multiply(values[0], probas[0]));
38
+ for (let i = xIndex === 0 ? 2 : 1; i < values.length; i++) {
39
+ if (i === xIndex)
40
+ continue;
41
+ partialEsp = add(partialEsp, multiply(values[i], probas[i]));
42
+ }
43
+ const simp = partialEsp.simplify();
44
+ const sum = substract(esp, simp);
45
+ const isXMissing = values.some((x) => !x.isNumeric);
46
+ const coeff = isXMissing ? probas[xIndex] : values[xIndex];
47
+ const x = round(frac(sum, coeff).simplify().evaluate(), 5);
48
+ return x.frenchify();
49
+ };
50
+ const getInstruction = (identifiers) => {
51
+ const { probasIds, valuesIds, avgIds } = identifiers;
52
+ const avg = reifyAlgebraic(avgIds);
53
+ const probas = probasIds.map((e) => reifyAlgebraic(e));
54
+ const values = valuesIds.map((e) => reifyAlgebraic(e));
55
+ return `La loi de probabilité d'une variable aléatoire $X$ est donnée ci-dessous:
56
+
57
+ ${mdTable([
58
+ ["$x_i$", ...values.map((e) => dollarize(e.toTex()))],
59
+ ["$P(X=x_i)$", ...probas.map((e) => dollarize(e.toTex()))],
60
+ ])}
61
+
62
+ On sait de plus que l'espérance de $X$ vaut $E(X) = ${avg.toTex()}$.
63
+
64
+ Que vaut $x$ ? `;
65
+ };
66
+ const getHint = () => {
67
+ return `Si $X$ est une variable aléatoire qui prend les valeurs $x_1$, $x_2$, $\\ldots$, $x_n$ de probabilités respectives $p_1$, $p_2$, $\\ldots$, $p_n$, alors son espérance $E(X)$ vaut :
68
+
69
+ $$
70
+ E(X) = x_1p_1 + x_2p_2 + \\ldots + x_np_n
71
+ $$`;
72
+ };
73
+ const getCorrection = (identifiers) => {
74
+ const { probasIds, valuesIds, avgIds } = identifiers;
75
+ const avg = reifyAlgebraic(avgIds);
76
+ const probas = probasIds.map((e) => reifyAlgebraic(e));
77
+ const values = valuesIds.map((e) => reifyAlgebraic(e));
78
+ const sum = operatorComposition(AddNode, values.map((v, i) => multiply(v, probas[i])));
79
+ const sumSimp = sum.simplify();
80
+ return `On calcule l'espérance de $X$ :
81
+
82
+ ${alignTex([
83
+ ["", "E(X)"],
84
+ ["=", sum.toTex()],
85
+ ["=", sumSimp.toTex()],
86
+ ])}
87
+
88
+ On résout alors l'équation $E(X) = ${avg.toTex()}$. Cela donne :
89
+
90
+ $$
91
+ x = ${getAnswer(identifiers)}
92
+ $$
93
+ `;
94
+ };
95
+ const getKeys = () => {
96
+ return [];
97
+ };
98
+ const isAnswerValid = (ans, { answer }) => {
99
+ try {
100
+ return rationalVEA(ans, answer);
101
+ }
102
+ catch (err) {
103
+ return handleVEAError(err);
104
+ }
105
+ };
106
+ const getFindProbaForFairGameQuestion = () => {
107
+ const xValues = [
108
+ 0,
109
+ randint(1, 5),
110
+ randint(5, 10),
111
+ 5 * randint(10, 20),
112
+ 100 * randint(1, 10),
113
+ ];
114
+ const probas = [
115
+ randfloat(0.1, 0.3, 2),
116
+ randfloat(0.02, 0.04, 3),
117
+ randfloat(0.01, 0.02, 3),
118
+ randfloat(0.001, 0.009, 3),
119
+ ];
120
+ const left = round(1 - probas.reduce((acc, curr) => acc + curr, 0), 4);
121
+ probas.unshift(left);
122
+ const avg = round(xValues.reduce((acc, curr, i) => acc + curr * probas[i], 0), 5);
123
+ const xNodes = xValues.map((e) => e.toTree());
124
+ const yNodes = probas.map((e) => e.toTree());
125
+ const isXMissing = coinFlip();
126
+ if (isXMissing) {
127
+ xNodes[randint(0, xValues.length)] = "x".toTree();
128
+ }
129
+ else {
130
+ yNodes[randint(1, xValues.length)] = "x".toTree();
131
+ }
132
+ const identifiers = {
133
+ valuesIds: xNodes.map((e) => e.toIdentifiers()),
134
+ probasIds: yNodes.map((e) => e.toIdentifiers()),
135
+ avgIds: avg.toTree().toIdentifiers(),
136
+ };
137
+ return getQuestionFromIdentifiers(identifiers);
138
+ };
139
+ const getQuestionFromIdentifiers = (identifiers) => {
140
+ return {
141
+ answer: getAnswer(identifiers),
142
+ instruction: getInstruction(identifiers),
143
+ keys: getKeys(identifiers),
144
+ answerFormat: "tex",
145
+ identifiers,
146
+ hint: getHint(identifiers),
147
+ correction: getCorrection(identifiers),
148
+ style: {
149
+ tableOptions: {
150
+ firstColumnIsHeader: true,
151
+ firstCellIsDivided: false,
152
+ firstRowIsHeader: false,
153
+ },
154
+ },
155
+ };
156
+ };
157
+ export const findValueToMatchRandomVariableAverage = {
158
+ id: "findValueToMatchRandomVariableAverage",
159
+ connector: "=",
160
+ label: "Compléter la loi de probabilité d'une variable aléatoire pour rendre un jeu équitable",
161
+ isSingleStep: true,
162
+ generator: (nb, opts) => getDistinctQuestions(() => getFindProbaForFairGameQuestion(opts), nb),
163
+ qcmTimer: 60,
164
+ freeTimer: 60,
165
+ getPropositions,
166
+ isAnswerValid,
167
+ subject: "Mathématiques",
168
+ getInstruction,
169
+ getHint,
170
+ getCorrection,
171
+ getAnswer,
172
+ getQuestionFromIdentifiers,
173
+ hasHintAndCorrection: true,
174
+ };
@@ -2,4 +2,5 @@ export * from "./randomVariableAverage.js";
2
2
  export * from "./randomVariableVariance.js";
3
3
  export * from "./isTableProbabilityLaw.js";
4
4
  export * from "./randomVariableStandardDeviation.js";
5
+ export * from "./findValueToMatchRandomVariableAverage.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/randomVariable/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/randomVariable/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AAErD,cAAc,4CAA4C,CAAC"}
@@ -2,3 +2,5 @@ export * from "./randomVariableAverage.js";
2
2
  export * from "./randomVariableVariance.js";
3
3
  export * from "./isTableProbabilityLaw.js";
4
4
  export * from "./randomVariableStandardDeviation.js";
5
+ // export * from "./findValueForFairRandomVariable.js";
6
+ export * from "./findValueToMatchRandomVariableAverage.js";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/generation/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { Exercise } from '../../../../exercises/exercise.js';
2
+ import { NodeIdentifiers } from '../../../../tree/nodes/nodeConstructor.js';
3
+ type Identifiers = {
4
+ relations: NodeIdentifiers[];
5
+ };
6
+ export declare const recognizeRecurrenceOrExplicit: Exercise<Identifiers>;
7
+ export {};
8
+ //# sourceMappingURL=recognizeRecurrenceOrExplicit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recognizeRecurrenceOrExplicit.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGtE,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,eAAe,EAAE,CAAA;CAC7B,CAAC;AA2DF,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,WAAW,CAiB/D,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { addValidProp, shuffleProps, } from '../../../../exercises/exercise.js';
2
+ import { getDistinctQuestions } from '../../../../exercises/utils/getDistinctQuestions.js';
3
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
4
+ const getPropositions = (n, { answer }) => {
5
+ const propositions = [];
6
+ addValidProp(propositions, answer);
7
+ propWhile(propositions, n, () => {
8
+ throw Error("QCM not implemented");
9
+ });
10
+ return shuffleProps(propositions, n);
11
+ };
12
+ const getAnswer = (identifiers) => {
13
+ };
14
+ const getInstruction = (identifiers) => {
15
+ };
16
+ const getHint = (identifiers) => {
17
+ };
18
+ const getCorrection = (identifiers) => {
19
+ };
20
+ const getKeys = (identifiers) => {
21
+ return [];
22
+ };
23
+ const isAnswerValid = (ans, { answer }) => {
24
+ try {
25
+ throw Error("VEA not implemented");
26
+ }
27
+ catch (err) {
28
+ return handleVEAError(err);
29
+ }
30
+ };
31
+ const getRecognizeRecurrenceOrExplicitQuestion = (ops) => {
32
+ const identifiers = {};
33
+ return getQuestionFromIdentifiers(identifiers);
34
+ };
35
+ const getQuestionFromIdentifiers = (identifiers) => {
36
+ return {
37
+ answer: getAnswer(identifiers),
38
+ instruction: getInstruction(identifiers),
39
+ keys: getKeys(identifiers),
40
+ answerFormat: 'tex',
41
+ identifiers,
42
+ hint: getHint(identifiers),
43
+ correction: getCorrection(identifiers)
44
+ };
45
+ };
46
+ export const recognizeRecurrenceOrExplicit = {
47
+ id: 'recognizeRecurrenceOrExplicit',
48
+ connector: "",
49
+ label: undefined,
50
+ isSingleStep: true,
51
+ generator: (nb, opts) => getDistinctQuestions(() => getRecognizeRecurrenceOrExplicitQuestion(opts), nb),
52
+ qcmTimer: 60,
53
+ freeTimer: 60,
54
+ getPropositions,
55
+ isAnswerValid,
56
+ subject: "Mathématiques",
57
+ getInstruction,
58
+ getHint,
59
+ getCorrection,
60
+ getAnswer,
61
+ getQuestionFromIdentifiers,
62
+ hasHintAndCorrection: true
63
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./placeFirstSequencePoints.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/graph/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./placeFirstSequencePoints.js";
@@ -0,0 +1,11 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ firstRank: number;
4
+ values: number[];
5
+ };
6
+ type Options = {
7
+ firstRank: string;
8
+ };
9
+ export declare const placeFirstSequencePoints: Exercise<Identifiers, Options>;
10
+ export {};
11
+ //# sourceMappingURL=placeFirstSequencePoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeFirstSequencePoints.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/graph/placeFirstSequencePoints.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAyGF,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAYF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAkBnE,CAAC"}
@@ -0,0 +1,113 @@
1
+ import { GeneratorOptionTarget, GeneratorOptionType, } from "../../../../exercises/exercise.js";
2
+ import { toolBarConstructor } from "../../../../exercises/utils/geogebra/toolBarConstructor.js";
3
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
4
+ import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
5
+ import { ggbPointToCoords } from "../../../../geogebra/parsers/ggbPointToCoords.js";
6
+ import { parseGGBPoints } from "../../../../geogebra/parsers/parseGGBPoints.js";
7
+ import { randint } from "../../../../math/utils/random/randint.js";
8
+ import { randTupleInt } from "../../../../math/utils/random/randTupleInt.js";
9
+ const getInstruction = (identifiers) => {
10
+ const { firstRank, values } = identifiers;
11
+ return `On considère une suite $u$ de premier rang $${firstRank}$ et dont voici les premiers termes, dans l'ordre :
12
+
13
+ $$
14
+ ${values.join("\\ ; \\ ")}
15
+ $$
16
+
17
+ Dans le repère ci-dessous, placer les termes connus de $u$.`;
18
+ };
19
+ const getHint = () => {
20
+ return `Une suite est représentée par un nuage de point. L'abscisse de chaque point est le rang du terme, et l'ordonnée est le terme en lui-même.`;
21
+ };
22
+ const getCorrection = (identifiers) => {
23
+ const { firstRank, values } = identifiers;
24
+ return `Une suite est représentée par un nuage de point. L'abscisse de chaque point est le rang du terme, et l'ordonnée est le terme en lui-même.
25
+
26
+ Les points du nuage sont donc ici les suivants :
27
+
28
+ ${values
29
+ .map((e, i) => `$$
30
+ A_${i + firstRank}(${i + firstRank};${e})
31
+ $$`)
32
+ .join("\n \n")}
33
+ `;
34
+ };
35
+ const getGGBAnswer = (identifiers) => {
36
+ const { firstRank, values } = identifiers;
37
+ return [...values.map((e, i) => `A_${i}= (${i + firstRank}, ${e})`)];
38
+ };
39
+ const getStudentGGBOptions = (identifiers) => {
40
+ const { values } = identifiers;
41
+ const ggb = new GeogebraConstructor({
42
+ commands: [],
43
+ customToolBar: toolBarConstructor({
44
+ point: true,
45
+ }),
46
+ });
47
+ const yMin = Math.min(...values);
48
+ const yMax = Math.max(...values);
49
+ return ggb.getOptions({
50
+ coords: [-1, 6, Math.min(yMin, 0) - 1, Math.max(yMax, 1) + 1],
51
+ });
52
+ };
53
+ const isGGBAnswerValid = (ans, { ggbAnswer: _ggbAns, values, firstRank }) => {
54
+ const points = parseGGBPoints(ans)
55
+ .map((p) => ggbPointToCoords(p))
56
+ .sort((a, b) => a.x - b.x);
57
+ const validPoints = values.map((e, i) => {
58
+ return { x: i + firstRank, y: e };
59
+ });
60
+ return points.every((p, i) => Math.abs(p.x - validPoints[i].x) < 0.4 &&
61
+ Math.abs(p.y - validPoints[i].y) < 0.4);
62
+ };
63
+ const getPlaceFirstSequencePointsQuestion = (opts) => {
64
+ const firstRank = opts?.firstRank === "$0$"
65
+ ? 0
66
+ : opts?.firstRank === "$1$"
67
+ ? 1
68
+ : randint(0, 2);
69
+ const values = randTupleInt(4, { from: -5, to: 6, allDifferent: true });
70
+ const identifiers = {
71
+ firstRank,
72
+ values,
73
+ };
74
+ return getQuestionFromIdentifiers(identifiers, opts);
75
+ };
76
+ const getQuestionFromIdentifiers = (identifiers) => {
77
+ return {
78
+ ggbAnswer: getGGBAnswer(identifiers),
79
+ instruction: getInstruction(identifiers),
80
+ studentGgbOptions: getStudentGGBOptions(identifiers),
81
+ identifiers,
82
+ hint: getHint(identifiers),
83
+ correction: getCorrection(identifiers),
84
+ };
85
+ };
86
+ const options = [
87
+ {
88
+ id: "firstRank",
89
+ label: "Premier rang",
90
+ target: GeneratorOptionTarget.generation,
91
+ type: GeneratorOptionType.select,
92
+ values: ["$0$", "$1$", "Les deux aléatoirement"],
93
+ defaultValue: "Les deux aléatoirement",
94
+ },
95
+ ];
96
+ export const placeFirstSequencePoints = {
97
+ id: "placeFirstSequencePoints",
98
+ label: "Placer les premiers termes d'une suite dans un repère",
99
+ isSingleStep: true,
100
+ generator: (nb, opts) => getDistinctQuestions(() => getPlaceFirstSequencePointsQuestion(opts), nb),
101
+ ggbTimer: 60,
102
+ isGGBAnswerValid,
103
+ subject: "Mathématiques",
104
+ getHint,
105
+ getInstruction,
106
+ getCorrection,
107
+ getGGBAnswer,
108
+ getStudentGGBOptions,
109
+ answerType: "GGB",
110
+ getQuestionFromIdentifiers,
111
+ options,
112
+ hasHintAndCorrection: true,
113
+ };
@@ -5,4 +5,6 @@ export * from "./genericSequenceVariations.js";
5
5
  export * from "./recurrenceFormulaUsage.js";
6
6
  export * from "./sequenceEvaluation.js";
7
7
  export * from "./sequencePlot.js";
8
+ export * from "./graph/index.js";
9
+ export * from "./notation/index.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
@@ -5,3 +5,5 @@ export * from "./genericSequenceVariations.js";
5
5
  export * from "./recurrenceFormulaUsage.js";
6
6
  export * from "./sequenceEvaluation.js";
7
7
  export * from "./sequencePlot.js";
8
+ export * from "./graph/index.js";
9
+ export * from "./notation/index.js";
@@ -0,0 +1,12 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ values: number[];
4
+ firstRank: number;
5
+ askedTerm: number;
6
+ };
7
+ type Options = {
8
+ firstRank: string;
9
+ };
10
+ export declare const identifyRankInSequenceTermsList: Exercise<Identifiers, Options>;
11
+ export {};
12
+ //# sourceMappingURL=identifyRankInSequenceTermsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifyRankInSequenceTermsList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/notation/identifyRankInSequenceTermsList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAQrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA+FF,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAYF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAmB1E,CAAC"}