math-exercises 3.0.124 → 3.0.126

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 (351) hide show
  1. package/lib/exercises/math/calcul/arithmetics/primeNumbers.d.ts +1 -1
  2. package/lib/exercises/math/calcul/arithmetics/primeNumbers.d.ts.map +1 -1
  3. package/lib/exercises/math/calcul/arithmetics/primeNumbers.js +20 -14
  4. package/lib/exercises/math/calcul/fractions/fractionsMix.js +1 -1
  5. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.d.ts.map +1 -1
  6. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.js +61 -1
  7. package/lib/exercises/math/calcul/mentalCaluls/index.d.ts +1 -0
  8. package/lib/exercises/math/calcul/mentalCaluls/index.d.ts.map +1 -1
  9. package/lib/exercises/math/calcul/mentalCaluls/index.js +1 -0
  10. package/lib/exercises/math/calcul/mentalCaluls/mentalProgramSolve.d.ts +15 -0
  11. package/lib/exercises/math/calcul/mentalCaluls/mentalProgramSolve.d.ts.map +1 -0
  12. package/lib/exercises/math/calcul/mentalCaluls/mentalProgramSolve.js +217 -0
  13. package/lib/exercises/math/calcul/ordering/compareA10N.d.ts +16 -0
  14. package/lib/exercises/math/calcul/ordering/compareA10N.d.ts.map +1 -0
  15. package/lib/exercises/math/calcul/ordering/compareA10N.js +327 -0
  16. package/lib/exercises/math/calcul/ordering/compareABUsingQuotient.d.ts +8 -0
  17. package/lib/exercises/math/calcul/ordering/compareABUsingQuotient.d.ts.map +1 -0
  18. package/lib/exercises/math/calcul/ordering/compareABUsingQuotient.js +221 -0
  19. package/lib/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.d.ts +9 -0
  20. package/lib/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.d.ts.map +1 -0
  21. package/lib/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.js +135 -0
  22. package/lib/exercises/math/calcul/ordering/compareFracAndDec.d.ts +29 -0
  23. package/lib/exercises/math/calcul/ordering/compareFracAndDec.d.ts.map +1 -0
  24. package/lib/exercises/math/calcul/ordering/compareFracAndDec.js +367 -0
  25. package/lib/exercises/math/calcul/ordering/comparePowersOfFracs.d.ts +12 -0
  26. package/lib/exercises/math/calcul/ordering/comparePowersOfFracs.d.ts.map +1 -0
  27. package/lib/exercises/math/calcul/ordering/comparePowersOfFracs.js +164 -0
  28. package/lib/exercises/math/calcul/ordering/compareWithSquareRoots.d.ts +9 -0
  29. package/lib/exercises/math/calcul/ordering/compareWithSquareRoots.d.ts.map +1 -0
  30. package/lib/exercises/math/calcul/ordering/compareWithSquareRoots.js +140 -0
  31. package/lib/exercises/math/calcul/ordering/index.d.ts +6 -0
  32. package/lib/exercises/math/calcul/ordering/index.d.ts.map +1 -1
  33. package/lib/exercises/math/calcul/ordering/index.js +6 -0
  34. package/lib/exercises/math/calcul/rounding/estimateAroundPow10NTimesAroundPow10N.d.ts +9 -0
  35. package/lib/exercises/math/calcul/rounding/estimateAroundPow10NTimesAroundPow10N.d.ts.map +1 -0
  36. package/lib/exercises/math/calcul/rounding/estimateAroundPow10NTimesAroundPow10N.js +84 -0
  37. package/lib/exercises/math/calcul/rounding/estimatePow10NPlusPow10MinusN.d.ts +8 -0
  38. package/lib/exercises/math/calcul/rounding/estimatePow10NPlusPow10MinusN.d.ts.map +1 -0
  39. package/lib/exercises/math/calcul/rounding/estimatePow10NPlusPow10MinusN.js +90 -0
  40. package/lib/exercises/math/calcul/rounding/index.d.ts +2 -0
  41. package/lib/exercises/math/calcul/rounding/index.d.ts.map +1 -1
  42. package/lib/exercises/math/calcul/rounding/index.js +2 -0
  43. package/lib/exercises/math/calculLitteral/equation/equationFromProblem.d.ts +13 -0
  44. package/lib/exercises/math/calculLitteral/equation/equationFromProblem.d.ts.map +1 -0
  45. package/lib/exercises/math/calculLitteral/equation/equationFromProblem.js +414 -0
  46. package/lib/exercises/math/calculLitteral/equation/index.d.ts +1 -0
  47. package/lib/exercises/math/calculLitteral/equation/index.d.ts.map +1 -1
  48. package/lib/exercises/math/calculLitteral/equation/index.js +1 -0
  49. package/lib/exercises/math/calculLitteral/factorisation/factorizeAX2PlusBX.d.ts +10 -0
  50. package/lib/exercises/math/calculLitteral/factorisation/factorizeAX2PlusBX.d.ts.map +1 -0
  51. package/lib/exercises/math/calculLitteral/factorisation/factorizeAX2PlusBX.js +70 -0
  52. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts +1 -0
  53. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts.map +1 -1
  54. package/lib/exercises/math/calculLitteral/factorisation/index.js +1 -0
  55. package/lib/exercises/math/calculLitteral/index.d.ts +2 -0
  56. package/lib/exercises/math/calculLitteral/index.d.ts.map +1 -1
  57. package/lib/exercises/math/calculLitteral/index.js +2 -0
  58. package/lib/exercises/math/calculLitteral/isolate/index.d.ts +2 -1
  59. package/lib/exercises/math/calculLitteral/isolate/index.d.ts.map +1 -1
  60. package/lib/exercises/math/calculLitteral/isolate/index.js +2 -1
  61. package/lib/exercises/math/calculLitteral/isolate/isolateUInInvXPlusInvYEqualsInvU.d.ts +8 -0
  62. package/lib/exercises/math/calculLitteral/isolate/isolateUInInvXPlusInvYEqualsInvU.d.ts.map +1 -0
  63. package/lib/exercises/math/calculLitteral/isolate/isolateUInInvXPlusInvYEqualsInvU.js +107 -0
  64. package/lib/exercises/math/calculLitteral/isolate/isolateXInInvXPlusInvYEqualsInvU.d.ts +7 -0
  65. package/lib/exercises/math/calculLitteral/isolate/isolateXInInvXPlusInvYEqualsInvU.d.ts.map +1 -0
  66. package/lib/exercises/math/calculLitteral/isolate/isolateXInInvXPlusInvYEqualsInvU.js +80 -0
  67. package/lib/exercises/math/calculLitteral/ordering/compareAMinusB.d.ts +10 -0
  68. package/lib/exercises/math/calculLitteral/ordering/compareAMinusB.d.ts.map +1 -0
  69. package/lib/exercises/math/calculLitteral/ordering/compareAMinusB.js +182 -0
  70. package/lib/exercises/math/calculLitteral/ordering/compareFromPiMinusFrac.d.ts +9 -0
  71. package/lib/exercises/math/calculLitteral/ordering/compareFromPiMinusFrac.d.ts.map +1 -0
  72. package/lib/exercises/math/calculLitteral/ordering/compareFromPiMinusFrac.js +144 -0
  73. package/lib/exercises/math/calculLitteral/ordering/index.d.ts +3 -0
  74. package/lib/exercises/math/calculLitteral/ordering/index.d.ts.map +1 -0
  75. package/lib/exercises/math/calculLitteral/ordering/index.js +2 -0
  76. package/lib/exercises/math/calculLitteral/simplifying/compareATimes0.d.ts +11 -0
  77. package/lib/exercises/math/calculLitteral/simplifying/compareATimes0.d.ts.map +1 -0
  78. package/lib/exercises/math/calculLitteral/simplifying/compareATimes0.js +120 -0
  79. package/lib/exercises/math/calculLitteral/simplifying/compareFracXA.d.ts +8 -0
  80. package/lib/exercises/math/calculLitteral/simplifying/compareFracXA.d.ts.map +1 -0
  81. package/lib/exercises/math/calculLitteral/simplifying/compareFracXA.js +67 -0
  82. package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.d.ts +11 -0
  83. package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.d.ts.map +1 -0
  84. package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.js +114 -0
  85. package/lib/exercises/math/calculLitteral/simplifying/index.d.ts +5 -0
  86. package/lib/exercises/math/calculLitteral/simplifying/index.d.ts.map +1 -1
  87. package/lib/exercises/math/calculLitteral/simplifying/index.js +5 -0
  88. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsAPercentOfB.d.ts +13 -0
  89. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsAPercentOfB.d.ts.map +1 -0
  90. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsAPercentOfB.js +125 -0
  91. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsInverseOfFracAB.d.ts +14 -0
  92. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsInverseOfFracAB.d.ts.map +1 -0
  93. package/lib/exercises/math/calculLitteral/simplifying/pickSameAsInverseOfFracAB.js +148 -0
  94. package/lib/exercises/math/calculLitteral/writing/writeLitExpFromFrenchExp.d.ts +5 -27
  95. package/lib/exercises/math/calculLitteral/writing/writeLitExpFromFrenchExp.d.ts.map +1 -1
  96. package/lib/exercises/math/calculLitteral/writing/writeLitExpFromFrenchExp.js +178 -241
  97. package/lib/exercises/math/conversion/index.d.ts +4 -0
  98. package/lib/exercises/math/conversion/index.d.ts.map +1 -1
  99. package/lib/exercises/math/conversion/index.js +4 -0
  100. package/lib/exercises/math/conversion/kmPerMinToKmPerHourConversion.d.ts +8 -0
  101. package/lib/exercises/math/conversion/kmPerMinToKmPerHourConversion.d.ts.map +1 -0
  102. package/lib/exercises/math/conversion/kmPerMinToKmPerHourConversion.js +98 -0
  103. package/lib/exercises/math/conversion/minutesToHours.d.ts +10 -0
  104. package/lib/exercises/math/conversion/minutesToHours.d.ts.map +1 -0
  105. package/lib/exercises/math/conversion/minutesToHours.js +150 -0
  106. package/lib/exercises/math/conversion/prefixToNumber.d.ts +15 -0
  107. package/lib/exercises/math/conversion/prefixToNumber.d.ts.map +1 -0
  108. package/lib/exercises/math/conversion/prefixToNumber.js +233 -0
  109. package/lib/exercises/math/conversion/secondsToHours.d.ts +10 -0
  110. package/lib/exercises/math/conversion/secondsToHours.d.ts.map +1 -0
  111. package/lib/exercises/math/conversion/secondsToHours.js +150 -0
  112. package/lib/exercises/math/conversion/volumeConversion.d.ts.map +1 -1
  113. package/lib/exercises/math/conversion/volumeConversion.js +7 -1
  114. package/lib/exercises/math/dataRepresentations/barChartInterpreting.d.ts +50 -0
  115. package/lib/exercises/math/dataRepresentations/barChartInterpreting.d.ts.map +1 -0
  116. package/lib/exercises/math/dataRepresentations/barChartInterpreting.js +517 -0
  117. package/lib/exercises/math/dataRepresentations/boxPlotInterpreting.d.ts +7 -0
  118. package/lib/exercises/math/dataRepresentations/boxPlotInterpreting.d.ts.map +1 -0
  119. package/lib/exercises/math/dataRepresentations/boxPlotInterpreting.js +223 -0
  120. package/lib/exercises/math/dataRepresentations/cartesianGraphExtremaReading.d.ts +10 -0
  121. package/lib/exercises/math/dataRepresentations/cartesianGraphExtremaReading.d.ts.map +1 -0
  122. package/lib/exercises/math/dataRepresentations/cartesianGraphExtremaReading.js +139 -0
  123. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.d.ts +8 -0
  124. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.d.ts.map +1 -0
  125. package/lib/exercises/math/dataRepresentations/dataToGraphGraphToData.js +133 -0
  126. package/lib/exercises/math/dataRepresentations/graphReading.d.ts +8 -0
  127. package/lib/exercises/math/dataRepresentations/graphReading.d.ts.map +1 -0
  128. package/lib/exercises/math/dataRepresentations/graphReading.js +136 -0
  129. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.d.ts +18 -0
  130. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.d.ts.map +1 -0
  131. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.js +228 -0
  132. package/lib/exercises/math/dataRepresentations/halfPieChartReading.d.ts +8 -0
  133. package/lib/exercises/math/dataRepresentations/halfPieChartReading.d.ts.map +1 -0
  134. package/lib/exercises/math/dataRepresentations/halfPieChartReading.js +213 -0
  135. package/lib/exercises/math/dataRepresentations/histogramReading.d.ts +9 -0
  136. package/lib/exercises/math/dataRepresentations/histogramReading.d.ts.map +1 -0
  137. package/lib/exercises/math/dataRepresentations/histogramReading.js +163 -0
  138. package/lib/exercises/math/dataRepresentations/index.d.ts +10 -0
  139. package/lib/exercises/math/dataRepresentations/index.d.ts.map +1 -1
  140. package/lib/exercises/math/dataRepresentations/index.js +10 -0
  141. package/lib/exercises/math/dataRepresentations/plausibleGraph.d.ts +9 -0
  142. package/lib/exercises/math/dataRepresentations/plausibleGraph.d.ts.map +1 -0
  143. package/lib/exercises/math/dataRepresentations/plausibleGraph.js +145 -0
  144. package/lib/exercises/math/dataRepresentations/scatterPlotCommenting.d.ts +9 -0
  145. package/lib/exercises/math/dataRepresentations/scatterPlotCommenting.d.ts.map +1 -0
  146. package/lib/exercises/math/dataRepresentations/scatterPlotCommenting.js +308 -0
  147. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.d.ts.map +1 -1
  148. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.js +10 -5
  149. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.d.ts +8 -0
  150. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.d.ts.map +1 -0
  151. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.js +103 -0
  152. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindY.d.ts +8 -0
  153. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindY.d.ts.map +1 -0
  154. package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindY.js +100 -0
  155. package/lib/exercises/math/functions/affines/drawAffineFromLitExp.js +5 -5
  156. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.d.ts +16 -0
  157. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.d.ts.map +1 -0
  158. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.js +215 -0
  159. package/lib/exercises/math/functions/affines/drawAffineFromProgCalc.d.ts +13 -0
  160. package/lib/exercises/math/functions/affines/drawAffineFromProgCalc.d.ts.map +1 -0
  161. package/lib/exercises/math/functions/affines/drawAffineFromProgCalc.js +206 -0
  162. package/lib/exercises/math/functions/affines/index.d.ts +7 -0
  163. package/lib/exercises/math/functions/affines/index.d.ts.map +1 -1
  164. package/lib/exercises/math/functions/affines/index.js +7 -0
  165. package/lib/exercises/math/functions/affines/recognizeExprAffine.d.ts +20 -0
  166. package/lib/exercises/math/functions/affines/recognizeExprAffine.d.ts.map +1 -0
  167. package/lib/exercises/math/functions/affines/recognizeExprAffine.js +284 -0
  168. package/lib/exercises/math/functions/affines/representationOfAffine.d.ts +13 -0
  169. package/lib/exercises/math/functions/affines/representationOfAffine.d.ts.map +1 -0
  170. package/lib/exercises/math/functions/affines/representationOfAffine.js +184 -0
  171. package/lib/exercises/math/functions/basics/coordsOfPointOnCurveFindY.d.ts +14 -0
  172. package/lib/exercises/math/functions/basics/coordsOfPointOnCurveFindY.d.ts.map +1 -0
  173. package/lib/exercises/math/functions/basics/coordsOfPointOnCurveFindY.js +216 -0
  174. package/lib/exercises/math/functions/basics/findZeroesProductQuotient.d.ts.map +1 -1
  175. package/lib/exercises/math/functions/basics/findZeroesProductQuotient.js +29 -2
  176. package/lib/exercises/math/functions/basics/index.d.ts +1 -0
  177. package/lib/exercises/math/functions/basics/index.d.ts.map +1 -1
  178. package/lib/exercises/math/functions/basics/index.js +1 -0
  179. package/lib/exercises/math/functions/basics/inverseImageFunctionGeogebra.d.ts.map +1 -1
  180. package/lib/exercises/math/functions/basics/inverseImageFunctionGeogebra.js +72 -61
  181. package/lib/exercises/math/functions/composition/functionComposition.d.ts +8 -0
  182. package/lib/exercises/math/functions/composition/functionComposition.d.ts.map +1 -0
  183. package/lib/exercises/math/functions/composition/functionComposition.js +238 -0
  184. package/lib/exercises/math/functions/composition/index.d.ts +2 -0
  185. package/lib/exercises/math/functions/composition/index.d.ts.map +1 -0
  186. package/lib/exercises/math/functions/composition/index.js +1 -0
  187. package/lib/exercises/math/functions/index.d.ts +1 -0
  188. package/lib/exercises/math/functions/index.d.ts.map +1 -1
  189. package/lib/exercises/math/functions/index.js +1 -0
  190. package/lib/exercises/math/functions/trinoms/roots/rootsFromDevForm.d.ts.map +1 -1
  191. package/lib/exercises/math/functions/trinoms/roots/rootsFromDevForm.js +41 -16
  192. package/lib/exercises/math/functions/trinoms/roots/rootsReading.d.ts.map +1 -1
  193. package/lib/exercises/math/functions/trinoms/roots/rootsReading.js +3 -2
  194. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromFacto.d.ts +1 -0
  195. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromFacto.d.ts.map +1 -1
  196. package/lib/exercises/math/functions/trinoms/sign/trinomSignFromFacto.js +21 -13
  197. package/lib/exercises/math/geometry/angles/anglesUsingIsParallel.d.ts +23 -0
  198. package/lib/exercises/math/geometry/angles/anglesUsingIsParallel.d.ts.map +1 -0
  199. package/lib/exercises/math/geometry/angles/anglesUsingIsParallel.js +448 -0
  200. package/lib/exercises/math/geometry/angles/index.js +2 -0
  201. package/lib/exercises/math/geometry/angles/isParallelUsingAngles.d.ts +23 -0
  202. package/lib/exercises/math/geometry/angles/isParallelUsingAngles.d.ts.map +1 -0
  203. package/lib/exercises/math/geometry/angles/isParallelUsingAngles.js +402 -0
  204. package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.d.ts +9 -6
  205. package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.d.ts.map +1 -1
  206. package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLine.js +140 -60
  207. package/lib/exercises/math/geometry/convexity/convexityQuadrinomialsGeo.js +1 -1
  208. package/lib/exercises/math/geometry/perimeters/circleCircumference.d.ts.map +1 -1
  209. package/lib/exercises/math/geometry/perimeters/circleCircumference.js +15 -7
  210. package/lib/exercises/math/geometry/shapes/basicShapesNaming.d.ts.map +1 -1
  211. package/lib/exercises/math/geometry/shapes/basicShapesNaming.js +5 -3
  212. package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromPicture.d.ts.map +1 -1
  213. package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromPicture.js +121 -104
  214. package/lib/exercises/math/geometry/vectors/vectorRepresentative.d.ts.map +1 -1
  215. package/lib/exercises/math/geometry/vectors/vectorRepresentative.js +3 -2
  216. package/lib/exercises/math/percent/evolutions/evolutionToCM.js +2 -2
  217. package/lib/exercises/math/percent/findProportion.d.ts +6 -1
  218. package/lib/exercises/math/percent/findProportion.d.ts.map +1 -1
  219. package/lib/exercises/math/percent/findProportion.js +162 -45
  220. package/lib/exercises/math/powers/calculateNegativePower.d.ts +5 -1
  221. package/lib/exercises/math/powers/calculateNegativePower.d.ts.map +1 -1
  222. package/lib/exercises/math/powers/calculateNegativePower.js +93 -29
  223. package/lib/exercises/math/probaStat/basicProbas/index.d.ts +1 -0
  224. package/lib/exercises/math/probaStat/basicProbas/index.d.ts.map +1 -1
  225. package/lib/exercises/math/probaStat/basicProbas/index.js +1 -0
  226. package/lib/exercises/math/probaStat/basicProbas/possibleValuesForProba.d.ts +0 -1
  227. package/lib/exercises/math/probaStat/basicProbas/possibleValuesForProba.d.ts.map +1 -1
  228. package/lib/exercises/math/probaStat/basicProbas/possibleValuesForProba.js +42 -80
  229. package/lib/exercises/math/probaStat/conditionalProbaWriteFromFrench.d.ts +9 -0
  230. package/lib/exercises/math/probaStat/conditionalProbaWriteFromFrench.d.ts.map +1 -0
  231. package/lib/exercises/math/probaStat/conditionalProbaWriteFromFrench.js +217 -0
  232. package/lib/exercises/math/probaStat/index.d.ts +2 -0
  233. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  234. package/lib/exercises/math/probaStat/index.js +2 -0
  235. package/lib/exercises/math/probaStat/probaAsSumOfProbas.d.ts +30 -0
  236. package/lib/exercises/math/probaStat/probaAsSumOfProbas.d.ts.map +1 -0
  237. package/lib/exercises/math/probaStat/probaAsSumOfProbas.js +548 -0
  238. package/lib/exercises/math/probaStat/probaFromTableNoContext.d.ts.map +1 -1
  239. package/lib/exercises/math/probaStat/probaFromTableNoContext.js +10 -2
  240. package/lib/exercises/math/probaStat/probaFromTableWithContext.d.ts.map +1 -1
  241. package/lib/exercises/math/probaStat/probaFromTableWithContext.js +2 -1
  242. package/lib/exercises/math/probaStat/stats1var/index.d.ts +2 -0
  243. package/lib/exercises/math/probaStat/stats1var/index.d.ts.map +1 -1
  244. package/lib/exercises/math/probaStat/stats1var/index.js +2 -0
  245. package/lib/exercises/math/probaStat/stats1var/interpretIndicatorsForLists.d.ts +9 -0
  246. package/lib/exercises/math/probaStat/stats1var/interpretIndicatorsForLists.d.ts.map +1 -0
  247. package/lib/exercises/math/probaStat/stats1var/interpretIndicatorsForLists.js +90 -0
  248. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.d.ts +10 -0
  249. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.d.ts.map +1 -0
  250. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.js +151 -0
  251. package/lib/exercises/math/probaStat/stats1var/quartilesList.d.ts +4 -1
  252. package/lib/exercises/math/probaStat/stats1var/quartilesList.d.ts.map +1 -1
  253. package/lib/exercises/math/probaStat/stats1var/quartilesList.js +46 -27
  254. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormula.d.ts.map +1 -1
  255. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormula.js +14 -2
  256. package/lib/exercises/math/sequences/geometric/geometricReasonUsage.d.ts +1 -0
  257. package/lib/exercises/math/sequences/geometric/geometricReasonUsage.d.ts.map +1 -1
  258. package/lib/exercises/math/sequences/geometric/geometricReasonUsage.js +43 -19
  259. package/lib/exercises/math/sequences/sequenceEvaluation.d.ts.map +1 -1
  260. package/lib/exercises/math/sequences/sequenceEvaluation.js +18 -1
  261. package/lib/exercises/pc/chemicalReactions/chemicalEquations.d.ts.map +1 -1
  262. package/lib/exercises/pc/chemicalReactions/chemicalEquations.js +17 -2
  263. package/lib/exercises/pc/electricity/calculateUEqualsRI.d.ts +7 -0
  264. package/lib/exercises/pc/electricity/calculateUEqualsRI.d.ts.map +1 -0
  265. package/lib/exercises/pc/electricity/calculateUEqualsRI.js +73 -0
  266. package/lib/exercises/pc/electricity/index.d.ts +1 -0
  267. package/lib/exercises/pc/electricity/index.d.ts.map +1 -1
  268. package/lib/exercises/pc/electricity/index.js +1 -0
  269. package/lib/exercises/pc/index.d.ts +1 -0
  270. package/lib/exercises/pc/index.d.ts.map +1 -1
  271. package/lib/exercises/pc/index.js +1 -0
  272. package/lib/exercises/pc/mole/molarMass.d.ts.map +1 -1
  273. package/lib/exercises/pc/mole/molarMass.js +7 -1
  274. package/lib/exercises/pc/moleculeFormula.d.ts.map +1 -1
  275. package/lib/exercises/pc/moleculeFormula.js +4 -3
  276. package/lib/exercises/pc/motion/averageSpeed.d.ts +9 -4
  277. package/lib/exercises/pc/motion/averageSpeed.d.ts.map +1 -1
  278. package/lib/exercises/pc/motion/averageSpeed.js +132 -61
  279. package/lib/exercises/pc/motion/averageSpeedCalculation.d.ts.map +1 -1
  280. package/lib/exercises/pc/motion/averageSpeedCalculation.js +10 -4
  281. package/lib/exercises/pc/optics/index.d.ts +2 -0
  282. package/lib/exercises/pc/optics/index.d.ts.map +1 -0
  283. package/lib/exercises/pc/optics/index.js +1 -0
  284. package/lib/exercises/pc/optics/lensFormula.d.ts +21 -0
  285. package/lib/exercises/pc/optics/lensFormula.d.ts.map +1 -0
  286. package/lib/exercises/pc/optics/lensFormula.js +415 -0
  287. package/lib/exercises/pc/recognizeRefractionOrReflectionAngles.d.ts +2 -2
  288. package/lib/exercises/pc/recognizeRefractionOrReflectionAngles.js +15 -15
  289. package/lib/exercises/pc/weight/calculateWeight.d.ts +8 -1
  290. package/lib/exercises/pc/weight/calculateWeight.d.ts.map +1 -1
  291. package/lib/exercises/pc/weight/calculateWeight.js +113 -38
  292. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts +1 -0
  293. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts.map +1 -1
  294. package/lib/exercises/utils/geogebra/toolBarConstructor.js +3 -1
  295. package/lib/geogebra/parsers/geogebraParser.d.ts +4 -0
  296. package/lib/geogebra/parsers/geogebraParser.d.ts.map +1 -1
  297. package/lib/geogebra/parsers/geogebraParser.js +17 -0
  298. package/lib/index.d.ts +392 -23
  299. package/lib/index.d.ts.map +1 -1
  300. package/lib/latexTester.d.ts.map +1 -1
  301. package/lib/latexTester.js +1 -0
  302. package/lib/math/geometry/CloudPoints.d.ts +10 -0
  303. package/lib/math/geometry/CloudPoints.d.ts.map +1 -1
  304. package/lib/math/geometry/CloudPoints.js +119 -0
  305. package/lib/math/geometry/line.d.ts +1 -0
  306. package/lib/math/geometry/line.d.ts.map +1 -1
  307. package/lib/math/geometry/line.js +10 -2
  308. package/lib/math/geometry/vector.d.ts +1 -0
  309. package/lib/math/geometry/vector.d.ts.map +1 -1
  310. package/lib/math/geometry/vector.js +12 -0
  311. package/lib/math/progCalc/progCalc.d.ts +46 -0
  312. package/lib/math/progCalc/progCalc.d.ts.map +1 -0
  313. package/lib/math/progCalc/progCalc.js +239 -0
  314. package/lib/math/utils/latex/realize.d.ts +12 -0
  315. package/lib/math/utils/latex/realize.d.ts.map +1 -0
  316. package/lib/math/utils/latex/realize.js +43 -0
  317. package/lib/pc/constants/molecularChemistry/molecule.d.ts +2 -0
  318. package/lib/pc/constants/molecularChemistry/molecule.d.ts.map +1 -1
  319. package/lib/pc/constants/molecularChemistry/molecule.js +52 -0
  320. package/lib/pc/units/timeUnits.d.ts +5 -3
  321. package/lib/pc/units/timeUnits.d.ts.map +1 -1
  322. package/lib/pc/units/timeUnits.js +25 -19
  323. package/lib/tests/questionTest.d.ts.map +1 -1
  324. package/lib/tests/questionTest.js +1 -1
  325. package/lib/tests/singleExo.test.js +3 -3
  326. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  327. package/lib/tree/nodes/operators/addNode.d.ts +4 -2
  328. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  329. package/lib/tree/nodes/operators/addNode.js +8 -17
  330. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -1
  331. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  332. package/lib/tree/nodes/operators/fractionNode.js +5 -1
  333. package/lib/tree/nodes/operators/multiplyNode.d.ts +4 -2
  334. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  335. package/lib/tree/nodes/operators/multiplyNode.js +8 -17
  336. package/lib/tree/nodes/operators/operatorNode.d.ts +3 -3
  337. package/lib/tree/nodes/operators/operatorNode.d.ts.map +1 -1
  338. package/lib/tree/nodes/variables/variableNode.d.ts +1 -1
  339. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  340. package/lib/tree/utilities/nodeShuffler.d.ts +12 -0
  341. package/lib/tree/utilities/nodeShuffler.d.ts.map +1 -0
  342. package/lib/tree/utilities/nodeShuffler.js +123 -0
  343. package/lib/utils/arrays/getAllPicks.d.ts +2 -0
  344. package/lib/utils/arrays/getAllPicks.d.ts.map +1 -0
  345. package/lib/utils/arrays/getAllPicks.js +17 -0
  346. package/lib/utils/errors/handleVEAError.d.ts +1 -1
  347. package/lib/utils/errors/handleVEAError.d.ts.map +1 -1
  348. package/lib/utils/strings/decapitalize.d.ts +2 -0
  349. package/lib/utils/strings/decapitalize.d.ts.map +1 -0
  350. package/lib/utils/strings/decapitalize.js +3 -0
  351. package/package.json +1 -1
@@ -0,0 +1,327 @@
1
+ import { GeneratorOptionTarget, GeneratorOptionType, addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { randfloat } from "../../../../math/utils/random/randfloat.js";
4
+ import { randint } from "../../../../math/utils/random/randint.js";
5
+ import { round } from "../../../../math/utils/round.js";
6
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
7
+ import { multiply, } from "../../../../tree/nodes/operators/multiplyNode.js";
8
+ import { power } from "../../../../tree/nodes/operators/powerNode.js";
9
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
10
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
11
+ import { probaLawFlip } from "../../../../utils/alea/probaLawFlip.js";
12
+ import { random, randomMany } from "../../../../utils/alea/random.js";
13
+ import { shuffle } from "../../../../utils/alea/shuffle.js";
14
+ import { permute } from "../../../../utils/arrays/permutations.js";
15
+ const getTexForA10N = (a10N) => {
16
+ const { a, n } = a10N;
17
+ return `${a.frenchify()} \\times 10^{${n}}`;
18
+ };
19
+ const getSciMultNodeForA10N = (a10N) => {
20
+ const { a, n } = a10N;
21
+ const sign = Math.sign(a);
22
+ const sciMultNodeA = getSciMultNodeForA(sign * a);
23
+ const factor = sign * sciMultNodeA.leftChild.evaluate();
24
+ const nodePower10 = sciMultNodeA.rightChild;
25
+ const exponent = nodePower10.rightChild.evaluate() + n;
26
+ return multiply(factor, power(10, exponent));
27
+ };
28
+ const getSciMultNodeForA = (a) => {
29
+ //a must be positive
30
+ const exponent = Math.floor(Math.log10(a));
31
+ const factor = round(frac(a, power(10, exponent)).evaluate(), 2);
32
+ const sciMultNode = multiply(factor, power(10, exponent));
33
+ return sciMultNode;
34
+ };
35
+ const compareFuncForA10N = (a10N1, a10N2) => {
36
+ const { a: a1, n: n1 } = a10N1;
37
+ const { a: a2, n: n2 } = a10N2;
38
+ const [sign1, sign2] = [a1, a2].map((a) => Math.sign(a));
39
+ if (sign1 !== sign2) {
40
+ return sign1 - sign2;
41
+ }
42
+ else {
43
+ const sign = sign1;
44
+ const [nodeSciA1, nodeSciA2] = [a1, a2].map((a) => getSciMultNodeForA(sign * a));
45
+ const [factorA1, factorA2] = [nodeSciA1, nodeSciA2].map((nodeSciA) => nodeSciA.leftChild.evaluate());
46
+ const [nA1, nA2] = [nodeSciA1, nodeSciA2].map((nodeSciA) => nodeSciA.rightChild.rightChild.evaluate());
47
+ const exponent1 = n1 + nA1;
48
+ const exponent2 = n2 + nA2;
49
+ if (exponent1 !== exponent2) {
50
+ return sign * (exponent1 - exponent2);
51
+ }
52
+ else {
53
+ return sign * (factorA1 - factorA2);
54
+ }
55
+ }
56
+ };
57
+ const getInstruction = (identifiers) => {
58
+ const { items } = identifiers;
59
+ return `Ranger par ordre croissant les nombres suivants :
60
+
61
+ $$
62
+ ${items.map((item) => getTexForA10N(item)).join(" ; ")}
63
+ $$`;
64
+ };
65
+ const getHint = (identifiers) => {
66
+ const { signType } = identifiers;
67
+ return `Même si on a l'impression que les nombres sont écris en écriture scientifique, ce n'est pas le cas.
68
+ Il faut les convertir en écriture scientifique et utiliser cette écriture pour les ranger dans l'ordre croissant.
69
+ ${(() => {
70
+ switch (signType) {
71
+ case "positifs":
72
+ return `Ici, tous les nombres sont positifs, donc
73
+ on range les puissances de $10$ en ordre croissant, puis pour chaque puissance de $10$, les facteurs en ordre croissant.
74
+ C'est un double tri.`;
75
+ case "négatifs":
76
+ return `Ici, tous les nombres sont négatifs, donc
77
+ on range les puissances de $10$ en ordre décroissant, puis pour chaque puissance de $10$, les facteurs en ordre décroissant.
78
+ C'est un double tri.`;
79
+ case "mélange":
80
+ return `Ici, il y a des nombres négatifs et des nombres positifs.
81
+ On commence par les négatifs :
82
+ On range les puissances de $10$ en ordre décroissant, puis pour chaque puissance de $10$, les facteurs en ordre décroissant.
83
+ Puis on range les positifs :
84
+ On range les puissances de $10$ en ordre croissant, puis pour chaque puissance de $10$, les facteurs en ordre croissant.`;
85
+ }
86
+ })()}
87
+ `;
88
+ };
89
+ const getCorrection = (identifiers) => {
90
+ const { signType, items } = identifiers;
91
+ return `Même si on a l'impression que les nombres sont écris en écriture scientifique, ce n'est pas le cas.
92
+ Il faut les convertir en écriture scientifique et utiliser cette écriture pour les ranger dans l'ordre croissant.
93
+
94
+ ${items
95
+ .map((item) => `
96
+
97
+ $$
98
+ ${getTexForA10N(item)} = ${getSciMultNodeForA10N(item).toTex()}
99
+ $$
100
+
101
+ `)
102
+ .join("")}
103
+
104
+ ${(() => {
105
+ switch (signType) {
106
+ case "positifs": {
107
+ const positive = items.toSorted(compareFuncForA10N);
108
+ return `Ici, tous les nombres sont positifs, donc
109
+ on range les puissances de $10$ en ordre croissant, puis pour chaque puissance de $10$, les facteurs en ordre croissant.
110
+ C'est un double tri.
111
+
112
+ $$
113
+ ${positive.map((item) => getSciMultNodeForA10N(item).toTex()).join("<")}
114
+ $$
115
+
116
+ Conclusion :
117
+
118
+ $$
119
+ ${positive.map((item) => getTexForA10N(item)).join("<")}
120
+ $$
121
+
122
+ `;
123
+ }
124
+ case "négatifs": {
125
+ const negative = items.toSorted(compareFuncForA10N);
126
+ return `Ici, tous les nombres sont négatifs, donc
127
+ on range les puissances de $10$ en ordre décroissant, puis pour chaque puissance de $10$, les facteurs en ordre décroissant.
128
+ C'est un double tri.
129
+
130
+ $$
131
+ ${negative.map((item) => getSciMultNodeForA10N(item).toTex()).join("<")}
132
+ $$
133
+
134
+ Conclusion :
135
+
136
+ $$
137
+ ${negative.map((item) => getTexForA10N(item)).join("<")}
138
+ $$
139
+ `;
140
+ }
141
+ case "mélange": {
142
+ const positive = items
143
+ .filter(({ a }) => a >= 0)
144
+ .toSorted(compareFuncForA10N);
145
+ const negative = items
146
+ .filter(({ a }) => a < 0)
147
+ .toSorted(compareFuncForA10N);
148
+ return `Ici, il y a des nombres négatifs et des nombres positifs.
149
+ On commence par les négatifs :
150
+ on range les puissances de $10$ en ordre décroissant, puis pour chaque puissance de $10$, les facteurs en ordre décroissant.
151
+
152
+ $$
153
+ ${negative.map((item) => getSciMultNodeForA10N(item).toTex()).join("<")}
154
+ $$
155
+
156
+ Puis on range les positifs :
157
+ on range les puissances de $10$ en ordre croissant, puis pour chaque puissance de $10$, les facteurs en ordre croissant.
158
+
159
+ $$
160
+ ${positive.map((item) => getSciMultNodeForA10N(item).toTex()).join("<")}
161
+ $$
162
+
163
+ Conclusion :
164
+
165
+ $$
166
+ ${[...negative, ...positive].map((item) => getTexForA10N(item)).join("<")}
167
+ $$
168
+ `;
169
+ }
170
+ }
171
+ })()}
172
+ `;
173
+ };
174
+ const getPropositions = (n, { answer, ...identifiers }) => {
175
+ const { items } = identifiers;
176
+ const propositions = [];
177
+ addValidProp(propositions, answer);
178
+ permute(items)
179
+ .slice(0, 5)
180
+ .forEach((permutedItems) => {
181
+ const arrayOfTex = permutedItems.map((item) => getTexForA10N(item));
182
+ tryToAddWrongProp(propositions, arrayOfTex.join("<"));
183
+ tryToAddWrongProp(propositions, arrayOfTex.join(">"));
184
+ });
185
+ return shuffleProps(propositions, n);
186
+ };
187
+ const getAnswer = (identifiers) => {
188
+ const { items } = identifiers;
189
+ const answer = items
190
+ .toSorted(compareFuncForA10N)
191
+ .map((item) => getTexForA10N(item))
192
+ .join("<");
193
+ return answer;
194
+ };
195
+ const isAnswerValid = (ans, { answer, items }) => {
196
+ const nbItems = items.length;
197
+ const [ansNodes, answerNodes] = [ans, answer].map((str) => str.split("<").map((tex) => parseAlgebraic(tex)));
198
+ return (ansNodes.length === nbItems &&
199
+ [...Array(nbItems).keys()].every((i) => ansNodes[i].equals(answerNodes[i])));
200
+ };
201
+ const getKeys = (identifiers) => {
202
+ const { items } = identifiers;
203
+ return [
204
+ "sup",
205
+ "inf",
206
+ ...items.map((item) => {
207
+ const tex = getTexForA10N(item);
208
+ return {
209
+ id: "custom",
210
+ label: tex,
211
+ labelType: "tex",
212
+ mathfieldInstructions: {
213
+ method: "write",
214
+ content: tex,
215
+ },
216
+ };
217
+ }),
218
+ ];
219
+ };
220
+ const getCompareA10NQuestion = (optsIn) => {
221
+ const opts = optsIn ? Object.assign(optsIn, optsDefault) : optsDefault;
222
+ const signType = random(opts.signTypes);
223
+ const nbCollisions = random(opts.nbCollisions);
224
+ const nbItems = 4;
225
+ let arrayOfA = [...Array(nbItems).keys()].map(() => {
226
+ const pow10 = random([0, 1, 2]);
227
+ const nbDigits = probaLawFlip([
228
+ [0, 0.5],
229
+ [1, 0.3],
230
+ [2, 0.2],
231
+ ]);
232
+ return round(randfloat(0, 10, 2, [10]) * Math.pow(10, pow10) +
233
+ randfloat(0, 1, nbDigits), 2);
234
+ });
235
+ switch (signType) {
236
+ case "négatifs":
237
+ arrayOfA = arrayOfA.map((a) => -1 * a);
238
+ break;
239
+ case "mélange":
240
+ {
241
+ const nbRandomSign = nbItems - 2;
242
+ const signs = shuffle([
243
+ +1,
244
+ -1,
245
+ ...[...Array(nbRandomSign).keys()].map(() => (coinFlip() ? +1 : -1)),
246
+ ]);
247
+ arrayOfA = arrayOfA.map((a, i) => signs[i] * a);
248
+ }
249
+ break;
250
+ default:
251
+ break;
252
+ }
253
+ const nMin = -90;
254
+ const nMax = +90;
255
+ const combStep = 5;
256
+ const combOffset = randint(0, combStep);
257
+ const poolOfN = [...Array(nMax - nMin + 1).keys()]
258
+ .map((i) => i + nMin)
259
+ .filter((n) => n % combStep === combOffset);
260
+ const subPoolOfN = randomMany(poolOfN, nbItems - nbCollisions);
261
+ let arrayOfN = subPoolOfN;
262
+ for (let i = 0; i < nbCollisions; i++) {
263
+ arrayOfN.push(random(subPoolOfN) + random([-2, -1, 0, 1, 2]));
264
+ }
265
+ arrayOfN = shuffle(arrayOfN);
266
+ const items = [...Array(nbItems).keys()].map((i) => {
267
+ return {
268
+ a: arrayOfA[i],
269
+ n: arrayOfN[i],
270
+ };
271
+ });
272
+ return getQuestionFromIdentifiers({
273
+ signType,
274
+ items,
275
+ });
276
+ };
277
+ const optsDefault = {
278
+ signTypes: ["positifs", "négatifs", "mélange"],
279
+ nbCollisions: [0, 1, 2, 3],
280
+ };
281
+ const options = [
282
+ {
283
+ id: "signTypes",
284
+ label: "Signes des nombres",
285
+ type: GeneratorOptionType.multiselect,
286
+ target: GeneratorOptionTarget.generation,
287
+ values: ["positifs", "négatifs", "mélange"],
288
+ defaultValue: optsDefault.signTypes,
289
+ },
290
+ {
291
+ id: "nbCollisions",
292
+ label: "Nombre de collisions",
293
+ type: GeneratorOptionType.multiselect,
294
+ target: GeneratorOptionTarget.generation,
295
+ values: [0, 1, 2, 3],
296
+ defaultValue: optsDefault.nbCollisions,
297
+ },
298
+ ];
299
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
300
+ const question = {
301
+ answer: getAnswer(identifiers),
302
+ instruction: getInstruction(identifiers),
303
+ keys: getKeys(identifiers),
304
+ answerFormat: "tex",
305
+ identifiers,
306
+ hint: getHint(identifiers),
307
+ correction: getCorrection(identifiers),
308
+ options: opts,
309
+ };
310
+ return question;
311
+ };
312
+ export const compareA10N = {
313
+ id: "compareA10N",
314
+ label: "Comparer des nombres de la forme $a \\times 10^n$",
315
+ isSingleStep: true,
316
+ generator: (nb, opts) => getDistinctQuestions(() => getCompareA10NQuestion(opts), nb, 30),
317
+ options,
318
+ qcmTimer: 60,
319
+ freeTimer: 60,
320
+ getPropositions,
321
+ isAnswerValid,
322
+ subject: "Mathématiques",
323
+ maxAllowedQuestions: 30,
324
+ getQuestionFromIdentifiers,
325
+ answerType: "QCU",
326
+ hasHintAndCorrection: true,
327
+ };
@@ -0,0 +1,8 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ orderedNodeIds: NodeIdentifiers[];
5
+ };
6
+ export declare const compareABUsingQuotient: Exercise<Identifiers>;
7
+ export {};
8
+ //# sourceMappingURL=compareABUsingQuotient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareABUsingQuotient.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/ordering/compareABUsingQuotient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAWrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAe7C,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,eAAe,EAAE,CAAC;CACnC,CAAC;AAyRF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAiBxD,CAAC"}
@@ -0,0 +1,221 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { randint } from "../../../../math/utils/random/randint.js";
4
+ import { abs } from "../../../../tree/nodes/functions/absNode.js";
5
+ import { FunctionsIds, isFunctionNode, } from "../../../../tree/nodes/functions/functionNode.js";
6
+ import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
7
+ import { sqrt } from "../../../../tree/nodes/functions/sqrtNode.js";
8
+ import { NodeConstructor, } from "../../../../tree/nodes/nodeConstructor.js";
9
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
10
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
11
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
12
+ import { isOperatorNode, OperatorIds, } from "../../../../tree/nodes/operators/operatorNode.js";
13
+ import { power } from "../../../../tree/nodes/operators/powerNode.js";
14
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
15
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
16
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
17
+ import { shuffle } from "../../../../utils/alea/shuffle.js";
18
+ const randomOperatorReplacementDict = () => {
19
+ const operatorIds = [
20
+ OperatorIds.add,
21
+ OperatorIds.multiply,
22
+ OperatorIds.fraction,
23
+ ];
24
+ return Object.fromEntries(shuffle(operatorIds).map((opId, i) => [opId, operatorIds[i]]));
25
+ };
26
+ const randomFunctionReplacementDict = () => {
27
+ const functionIds = [FunctionsIds.sqrt, FunctionsIds.abs];
28
+ return Object.fromEntries(shuffle(functionIds).map((fId, i) => [fId, functionIds[i]]));
29
+ };
30
+ const nodeByReplacingOperations = (node, operatorReplacementDict, functionReplacementDict) => {
31
+ if (isOperatorNode(node)) {
32
+ const leftChild = nodeByReplacingOperations(node.leftChild, operatorReplacementDict, functionReplacementDict);
33
+ const rightChild = nodeByReplacingOperations(node.rightChild, operatorReplacementDict, functionReplacementDict);
34
+ const targetOperatorId = operatorReplacementDict[+node.id] ?? node.id;
35
+ switch (+targetOperatorId) {
36
+ case OperatorIds.add:
37
+ return add(leftChild, rightChild);
38
+ case OperatorIds.substract:
39
+ return substract(leftChild, rightChild);
40
+ case OperatorIds.multiply:
41
+ return multiply(leftChild, rightChild);
42
+ case OperatorIds.divide:
43
+ case OperatorIds.fraction:
44
+ return frac(leftChild, rightChild);
45
+ case OperatorIds.power:
46
+ return power(leftChild, rightChild);
47
+ default:
48
+ return add(leftChild, rightChild);
49
+ }
50
+ }
51
+ else if (isFunctionNode(node)) {
52
+ const child = nodeByReplacingOperations(node.child, operatorReplacementDict, functionReplacementDict);
53
+ const targetFunctionId = functionReplacementDict[+node.id] ?? node.id;
54
+ switch (+targetFunctionId) {
55
+ case FunctionsIds.sqrt:
56
+ return sqrt(child);
57
+ case FunctionsIds.abs:
58
+ return abs(child);
59
+ case FunctionsIds.opposite:
60
+ default:
61
+ return opposite(child);
62
+ }
63
+ }
64
+ else {
65
+ return node;
66
+ }
67
+ };
68
+ const nodeBySubstitutingX = (node, strVar) => {
69
+ return parseAlgebraic(node.toTex().replaceAll("{x}", `"${strVar}"`));
70
+ };
71
+ const getInstruction = (identifiers) => {
72
+ const { orderedNodeIds } = identifiers;
73
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
74
+ return `Sachant que $\\frac{${B}}{${A}} > 1$,
75
+
76
+ comparer $${B}$ et $${A}$.;`;
77
+ };
78
+ const getHint = (identifiers) => {
79
+ const { orderedNodeIds } = identifiers;
80
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
81
+ return `En partant de
82
+
83
+ $$
84
+ \\frac{${B}}{${A}} > 1
85
+ $$
86
+
87
+ essaie de te ramener à
88
+
89
+ $$
90
+ ${B} <(ou >) ${A}
91
+ $$
92
+
93
+ par des opérations que l'on effectue à droite et à gauche de l'inégalité.`;
94
+ };
95
+ const getCorrection = (identifiers) => {
96
+ const { orderedNodeIds } = identifiers;
97
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
98
+ return `On a :
99
+
100
+ $$
101
+ \\frac{${B}}{${A}} > 1
102
+ $$
103
+
104
+ On multiplie par $${A}$ des deux côtés. $${A} > 0$ donc on ne renverse pas l'inégalité :
105
+
106
+ $$
107
+ ${B} > ${A}
108
+ $$
109
+ `;
110
+ };
111
+ const getAnswer = (identifiers) => {
112
+ const { orderedNodeIds } = identifiers;
113
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
114
+ return `${B} > ${A}`;
115
+ };
116
+ const isAnswerValid = (ans, { ...identifiers }) => {
117
+ const { orderedNodeIds } = identifiers;
118
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
119
+ const compSymbol = ans.includes(">")
120
+ ? ">"
121
+ : ans.includes("<")
122
+ ? "<"
123
+ : undefined;
124
+ if (!compSymbol) {
125
+ return false;
126
+ }
127
+ else {
128
+ return (compSymbol === ">" ? [B, A] : [A, B]).every((tex, i) => tex === ans.split(compSymbol)[i]);
129
+ }
130
+ };
131
+ const getPropositions = (nbProps, { ...identifiers }) => {
132
+ const { orderedNodeIds } = identifiers;
133
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
134
+ const propositions = [];
135
+ addValidProp(propositions, coinFlip() ? `${A}<${B}` : `${B}>${A}`);
136
+ tryToAddWrongProp(propositions, coinFlip() ? `${B}<${A}` : `${A}>${B}`);
137
+ return shuffleProps(propositions, nbProps);
138
+ };
139
+ const getKeys = (identifiers) => {
140
+ const { orderedNodeIds } = identifiers;
141
+ const [A, B] = orderedNodeIds.map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds).toTex());
142
+ return [
143
+ "inf",
144
+ "sup",
145
+ ...[A, B].map((tex) => {
146
+ return {
147
+ id: "custom",
148
+ label: tex,
149
+ labelType: "tex",
150
+ mathfieldInstructions: {
151
+ method: "write",
152
+ content: tex,
153
+ },
154
+ };
155
+ }),
156
+ ];
157
+ };
158
+ const getCompareABUsingQuotientQuestion = () => {
159
+ const nbNodes = 2;
160
+ const n = randint(2, 150);
161
+ const [s, t] = [0, 1].map(() => randint(1, 100));
162
+ const refNode = add(s, abs(multiply(t, "{x}")));
163
+ let orderedNodesAndEvaluations;
164
+ let isValidNodes = false;
165
+ while (!isValidNodes) {
166
+ const nodeInner = nodeBySubstitutingX(sqrt(add(1, "{x}")), `${n.frenchify()}`);
167
+ const nodes = [...Array(nbNodes).keys()].map(() => nodeBySubstitutingX(nodeByReplacingOperations(refNode, randomOperatorReplacementDict(), randomFunctionReplacementDict()), `{${nodeInner.toTex()}}`));
168
+ try {
169
+ const evaluations = nodes.map((node) => node.evaluate());
170
+ //discard impossible
171
+ if (evaluations.some((evaluation) => isNaN(evaluation) || evaluation <= 0)) {
172
+ isValidNodes = false;
173
+ continue;
174
+ }
175
+ //discard same
176
+ if (evaluations.some((evaluation, i) => evaluations.filter((_, j) => j !== i).includes(evaluation))) {
177
+ isValidNodes = false;
178
+ continue;
179
+ }
180
+ orderedNodesAndEvaluations = nodes
181
+ .map((node, i) => {
182
+ return { node, evaluation: evaluations[i] };
183
+ })
184
+ .toSorted(({ evaluation: evaluation1 }, { evaluation: evaluation2 }) => evaluation1 - evaluation2);
185
+ isValidNodes = true;
186
+ }
187
+ catch (_) {
188
+ continue;
189
+ }
190
+ }
191
+ const orderedNodeIds = orderedNodesAndEvaluations.map(({ node }) => node.toIdentifiers());
192
+ return getQuestionFromIdentifiers({ orderedNodeIds });
193
+ };
194
+ const getQuestionFromIdentifiers = (identifiers) => {
195
+ const question = {
196
+ answer: getAnswer(identifiers),
197
+ instruction: getInstruction(identifiers),
198
+ keys: getKeys(identifiers),
199
+ answerFormat: "tex",
200
+ identifiers,
201
+ hint: getHint(identifiers),
202
+ correction: getCorrection(identifiers),
203
+ };
204
+ return question;
205
+ };
206
+ export const compareABUsingQuotient = {
207
+ id: "compareABUsingQuotient",
208
+ label: "Comparer deux nombres strictement positifs par le calcul de leur quotient",
209
+ isSingleStep: true,
210
+ generator: (nb) => getDistinctQuestions(() => getCompareABUsingQuotientQuestion(), nb, 30),
211
+ qcmTimer: 60,
212
+ freeTimer: 60,
213
+ getPropositions,
214
+ isAnswerValid,
215
+ getAnswer,
216
+ subject: "Mathématiques",
217
+ maxAllowedQuestions: 30,
218
+ getQuestionFromIdentifiers,
219
+ answerType: "QCU",
220
+ hasHintAndCorrection: true,
221
+ };
@@ -0,0 +1,9 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ nodeIds: NodeIdentifiers[];
5
+ texAnswers: string[];
6
+ };
7
+ export declare const compareFracABWithFracAPlusCBPlusC: Exercise<Identifiers>;
8
+ export {};
9
+ //# sourceMappingURL=compareFracABWithFracAPlusCBPlusC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareFracABWithFracAPlusCBPlusC.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/ordering/compareFracABWithFracAPlusCBPlusC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAQ7C,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AA8KF,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,WAAW,CAoBnE,CAAC"}