math-exercises 3.0.156 → 3.0.158

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 (321) hide show
  1. package/lib/exercises/exercise.d.ts +7 -0
  2. package/lib/exercises/exercise.d.ts.map +1 -1
  3. package/lib/exercises/math/calcul/proportionality/proportionalityTableCoefficient.js +1 -1
  4. package/lib/exercises/math/calculLitteral/equation/exp/expOfAffineEquals1Equation.d.ts +14 -0
  5. package/lib/exercises/math/calculLitteral/equation/exp/expOfAffineEquals1Equation.d.ts.map +1 -0
  6. package/lib/exercises/math/calculLitteral/equation/exp/expOfAffineEquals1Equation.js +145 -0
  7. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.d.ts +16 -0
  8. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.d.ts.map +1 -0
  9. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.js +444 -0
  10. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.d.ts +15 -0
  11. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.d.ts.map +1 -0
  12. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.js +292 -0
  13. package/lib/exercises/math/calculLitteral/equation/exp/index.d.ts +4 -0
  14. package/lib/exercises/math/calculLitteral/equation/exp/index.d.ts.map +1 -0
  15. package/lib/exercises/math/calculLitteral/equation/exp/index.js +3 -0
  16. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts +4 -1
  17. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts.map +1 -1
  18. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.js +148 -31
  19. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts +4 -1
  20. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -1
  21. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.js +124 -44
  22. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts +18 -0
  23. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts.map +1 -0
  24. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.js +437 -0
  25. package/lib/exercises/math/calculLitteral/inequations/exp/index.d.ts +2 -0
  26. package/lib/exercises/math/calculLitteral/inequations/exp/index.d.ts.map +1 -0
  27. package/lib/exercises/math/calculLitteral/inequations/exp/index.js +1 -0
  28. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.d.ts.map +1 -1
  29. package/lib/exercises/math/dataRepresentations/halfPieChartCommenting.js +4 -1
  30. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.d.ts.map +1 -1
  31. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.js +29 -0
  32. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.d.ts.map +1 -1
  33. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.js +35 -2
  34. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.d.ts.map +1 -1
  35. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.js +19 -0
  36. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts +10 -0
  37. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts.map +1 -0
  38. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.js +282 -0
  39. package/lib/exercises/math/derivation/derivative/inverseFunctionDerivative.d.ts.map +1 -1
  40. package/lib/exercises/math/derivation/derivative/inverseFunctionDerivative.js +30 -2
  41. package/lib/exercises/math/derivation/derivative/productDerivative.d.ts.map +1 -1
  42. package/lib/exercises/math/derivation/derivative/productDerivative.js +68 -1
  43. package/lib/exercises/math/derivation/derivative/quotientDerivative.d.ts.map +1 -1
  44. package/lib/exercises/math/derivation/derivative/quotientDerivative.js +40 -4
  45. package/lib/exercises/math/derivation/derivative/sqrt/sqrtCompositionDerivation.d.ts.map +1 -1
  46. package/lib/exercises/math/derivation/derivative/sqrt/sqrtCompositionDerivation.js +30 -3
  47. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts +12 -0
  48. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts.map +1 -0
  49. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.js +127 -0
  50. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.d.ts +13 -0
  51. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.d.ts.map +1 -0
  52. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.js +161 -0
  53. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.d.ts +11 -0
  54. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.d.ts.map +1 -0
  55. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.js +116 -0
  56. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.d.ts +8 -0
  57. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.d.ts.map +1 -0
  58. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.js +142 -0
  59. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts +4 -0
  60. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts.map +1 -0
  61. package/lib/exercises/math/derivation/derivativeNumber/index.js +4 -0
  62. package/lib/exercises/math/derivation/index.d.ts +1 -1
  63. package/lib/exercises/math/derivation/index.js +1 -1
  64. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.d.ts.map +1 -1
  65. package/lib/exercises/math/functions/affines/drawAffineFromPointAndLeadingCoeff.js +5 -4
  66. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts +13 -0
  67. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts.map +1 -0
  68. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.js +278 -0
  69. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts +11 -0
  70. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts.map +1 -0
  71. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.js +211 -0
  72. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.d.ts +9 -0
  73. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.d.ts.map +1 -0
  74. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.js +142 -0
  75. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts +5 -0
  76. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts.map +1 -0
  77. package/lib/exercises/math/functions/exponential/algebraic/index.js +4 -0
  78. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.d.ts +14 -0
  79. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.d.ts.map +1 -0
  80. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.js +337 -0
  81. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts +11 -0
  82. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts.map +1 -0
  83. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.js +234 -0
  84. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts +9 -0
  85. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts.map +1 -0
  86. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.js +190 -0
  87. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts +9 -0
  88. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts.map +1 -0
  89. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.js +190 -0
  90. package/lib/exercises/math/functions/exponential/definition/index.d.ts +5 -0
  91. package/lib/exercises/math/functions/exponential/definition/index.d.ts.map +1 -0
  92. package/lib/exercises/math/functions/exponential/definition/index.js +4 -0
  93. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts +13 -0
  94. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts.map +1 -0
  95. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.js +375 -0
  96. package/lib/exercises/math/functions/linear/linearFromExercise.d.ts.map +1 -1
  97. package/lib/exercises/math/functions/linear/linearFromExercise.js +4 -3
  98. package/lib/exercises/math/functions/trinoms/devForm/coefficientsIdentification.d.ts.map +1 -1
  99. package/lib/exercises/math/functions/trinoms/devForm/coefficientsIdentification.js +30 -3
  100. package/lib/exercises/math/functions/trinoms/equation/deltaTrinom.d.ts.map +1 -1
  101. package/lib/exercises/math/functions/trinoms/equation/deltaTrinom.js +35 -1
  102. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.d.ts.map +1 -1
  103. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.js +1 -1
  104. package/lib/exercises/math/functions/trinoms/summitAndCanonical/alphaBetaInCanonicalForm.d.ts.map +1 -1
  105. package/lib/exercises/math/functions/trinoms/summitAndCanonical/alphaBetaInCanonicalForm.js +23 -1
  106. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.d.ts.map +1 -1
  107. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.js +29 -0
  108. package/lib/exercises/math/functions/variations/exp/index.d.ts +3 -0
  109. package/lib/exercises/math/functions/variations/exp/index.d.ts.map +1 -0
  110. package/lib/exercises/math/functions/variations/exp/index.js +2 -0
  111. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts +9 -0
  112. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts.map +1 -0
  113. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.js +101 -0
  114. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts +11 -0
  115. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts.map +1 -0
  116. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.js +192 -0
  117. package/lib/exercises/math/geometry/euclidian/pinPointFromAxialOrCentralSymmetry.js +2 -2
  118. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.js +1 -1
  119. package/lib/exercises/math/geometry/euclidian/recognizeHomothetyCenter.d.ts.map +1 -1
  120. package/lib/exercises/math/geometry/euclidian/recognizeHomothetyCenter.js +4 -5
  121. package/lib/exercises/math/geometry/euclidianConstructions/placeHomothetyCenter.js +4 -4
  122. package/lib/exercises/math/geometry/perimeters/circleCircumference.d.ts.map +1 -1
  123. package/lib/exercises/math/geometry/perimeters/circleCircumference.js +5 -3
  124. package/lib/exercises/math/geometry/thales/thales.js +1 -1
  125. package/lib/exercises/math/geometry/thales/thalesCalcul.js +1 -1
  126. package/lib/exercises/math/geometry/vectors/colinearity/determinant.js +1 -1
  127. package/lib/exercises/math/geometry/vectors/scalarProduct/angleFromScalarProduct.js +1 -1
  128. package/lib/exercises/math/geometry/vectors/scalarProduct/findCoordinatesToOrthogonalize.d.ts.map +1 -1
  129. package/lib/exercises/math/geometry/vectors/scalarProduct/findCoordinatesToOrthogonalize.js +33 -7
  130. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCoords.js +1 -1
  131. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.d.ts.map +1 -1
  132. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.js +38 -1
  133. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.d.ts.map +1 -1
  134. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.js +18 -5
  135. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithSquareOrRectBase.d.ts.map +1 -1
  136. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithSquareOrRectBase.js +45 -21
  137. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.d.ts.map +1 -1
  138. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.js +33 -12
  139. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.d.ts.map +1 -1
  140. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.js +38 -15
  141. package/lib/exercises/math/percent/findTVA.d.ts.map +1 -1
  142. package/lib/exercises/math/percent/findTVA.js +17 -11
  143. package/lib/exercises/math/percent/populationEffectifFromSubPopulation.js +1 -1
  144. package/lib/exercises/math/probaStat/basicProbas/index.d.ts +1 -0
  145. package/lib/exercises/math/probaStat/basicProbas/index.d.ts.map +1 -1
  146. package/lib/exercises/math/probaStat/basicProbas/index.js +1 -1
  147. package/lib/exercises/math/probaStat/basicProbas/pickEquiprobableSituations.d.ts.map +1 -1
  148. package/lib/exercises/math/probaStat/basicProbas/pickEquiprobableSituations.js +114 -20
  149. package/lib/exercises/math/probaStat/basicProbas/pickEquiprobableTo.js +2 -2
  150. package/lib/exercises/math/probaStat/conditionalProbability.d.ts +4 -1
  151. package/lib/exercises/math/probaStat/conditionalProbability.d.ts.map +1 -1
  152. package/lib/exercises/math/probaStat/conditionalProbability.js +38 -5
  153. package/lib/exercises/math/probaStat/independancy/independancy.d.ts +9 -0
  154. package/lib/exercises/math/probaStat/independancy/independancy.d.ts.map +1 -0
  155. package/lib/exercises/math/probaStat/independancy/independancy.js +114 -0
  156. package/lib/exercises/math/probaStat/independancy/independancyFindCap.d.ts +9 -0
  157. package/lib/exercises/math/probaStat/independancy/independancyFindCap.d.ts.map +1 -0
  158. package/lib/exercises/math/probaStat/independancy/independancyFindCap.js +101 -0
  159. package/lib/exercises/math/probaStat/independancy/independancyFindCup.d.ts +9 -0
  160. package/lib/exercises/math/probaStat/independancy/independancyFindCup.d.ts.map +1 -0
  161. package/lib/exercises/math/probaStat/independancy/independancyFindCup.js +118 -0
  162. package/lib/exercises/math/probaStat/independancy/index.d.ts +5 -0
  163. package/lib/exercises/math/probaStat/independancy/index.d.ts.map +1 -0
  164. package/lib/exercises/math/probaStat/independancy/index.js +4 -0
  165. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.d.ts +10 -0
  166. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.d.ts.map +1 -0
  167. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.js +106 -0
  168. package/lib/exercises/math/probaStat/index.d.ts +1 -1
  169. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  170. package/lib/exercises/math/probaStat/index.js +1 -1
  171. package/lib/exercises/math/probaStat/randomVariable/randomVariableStandardDeviation.js +1 -1
  172. package/lib/exercises/math/probaStat/stats1var/etendueTable.d.ts.map +1 -1
  173. package/lib/exercises/math/probaStat/stats1var/etendueTable.js +5 -1
  174. package/lib/exercises/math/probaStat/stats1var/medianWithList.js +1 -1
  175. package/lib/exercises/math/probaStat/stats1var/medianWithTable.d.ts.map +1 -1
  176. package/lib/exercises/math/probaStat/stats1var/medianWithTable.js +19 -5
  177. package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.js +1 -1
  178. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.d.ts.map +1 -1
  179. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.js +41 -29
  180. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.d.ts.map +1 -1
  181. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.js +10 -3
  182. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.d.ts.map +1 -1
  183. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.js +9 -2
  184. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.d.ts.map +1 -1
  185. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.js +25 -10
  186. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.d.ts +9 -0
  187. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.d.ts.map +1 -0
  188. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.js +118 -0
  189. package/lib/exercises/math/sequences/arithmetic/arithmeticFindRandomTermFromTwoTerms.d.ts.map +1 -1
  190. package/lib/exercises/math/sequences/arithmetic/arithmeticFindRandomTermFromTwoTerms.js +55 -6
  191. package/lib/exercises/math/sequences/arithmetic/arithmeticFindReasonRandomRange.d.ts.map +1 -1
  192. package/lib/exercises/math/sequences/arithmetic/arithmeticFindReasonRandomRange.js +42 -1
  193. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.d.ts +4 -1
  194. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.d.ts.map +1 -1
  195. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.js +57 -7
  196. package/lib/exercises/math/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.d.ts.map +1 -1
  197. package/lib/exercises/math/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.js +24 -2
  198. package/lib/exercises/math/sequences/arithmetic/arithmeticThresholdFind.d.ts.map +1 -1
  199. package/lib/exercises/math/sequences/arithmetic/arithmeticThresholdFind.js +31 -8
  200. package/lib/exercises/math/sequences/arithmetic/index.d.ts +1 -1
  201. package/lib/exercises/math/sequences/arithmetic/index.d.ts.map +1 -1
  202. package/lib/exercises/math/sequences/arithmetic/index.js +1 -1
  203. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts.map +1 -1
  204. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.js +11 -1
  205. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstRankOne.js +5 -5
  206. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstTermRandom.d.ts.map +1 -1
  207. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstTermRandom.js +3 -1
  208. package/lib/exercises/math/sequences/geometric/geometricFindReason.d.ts.map +1 -1
  209. package/lib/exercises/math/sequences/geometric/geometricFindReason.js +41 -2
  210. package/lib/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.d.ts.map +1 -1
  211. package/lib/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.js +28 -2
  212. package/lib/exercises/math/sequences/sequenceEvaluation.d.ts.map +1 -1
  213. package/lib/exercises/math/sequences/sequenceEvaluation.js +22 -2
  214. package/lib/exercises/math/spaceGeometry/solids/recognizeSolidFromSolidPattern.js +1 -1
  215. package/lib/exercises/math/spaceGeometry/sphere/index.d.ts +2 -0
  216. package/lib/exercises/math/spaceGeometry/sphere/index.d.ts.map +1 -1
  217. package/lib/exercises/math/spaceGeometry/sphere/index.js +3 -1
  218. package/lib/exercises/math/spaceGeometry/sphere/pinPointLatLon.2d.d.ts +12 -0
  219. package/lib/exercises/math/spaceGeometry/sphere/pinPointLatLon.2d.d.ts.map +1 -0
  220. package/lib/exercises/math/spaceGeometry/sphere/pinPointLatLon.2d.js +205 -0
  221. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts +13 -0
  222. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts.map +1 -0
  223. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.js +215 -0
  224. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.3d.d.ts +14 -0
  225. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.3d.d.ts.map +1 -0
  226. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.3d.js +390 -0
  227. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.d.ts +9 -0
  228. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.d.ts.map +1 -0
  229. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.js +107 -0
  230. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts +10 -0
  231. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts.map +1 -0
  232. package/lib/exercises/math/trigonometry/circle/associatePoint.js +86 -0
  233. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.d.ts +10 -0
  234. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.d.ts.map +1 -0
  235. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.js +205 -0
  236. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts +7 -0
  237. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts.map +1 -0
  238. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.js +121 -0
  239. package/lib/exercises/math/trigonometry/circle/index.d.ts +7 -0
  240. package/lib/exercises/math/trigonometry/circle/index.d.ts.map +1 -0
  241. package/lib/exercises/math/trigonometry/circle/index.js +7 -0
  242. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts +10 -0
  243. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts.map +1 -0
  244. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.js +100 -0
  245. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.d.ts +8 -0
  246. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.d.ts.map +1 -0
  247. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.js +97 -0
  248. package/lib/exercises/math/trigonometry/circle/remarkableValues.d.ts +10 -0
  249. package/lib/exercises/math/trigonometry/circle/remarkableValues.d.ts.map +1 -0
  250. package/lib/exercises/math/trigonometry/circle/remarkableValues.js +112 -0
  251. package/lib/exercises/math/trigonometry/functions/basicEquationCos.d.ts +7 -0
  252. package/lib/exercises/math/trigonometry/functions/basicEquationCos.d.ts.map +1 -0
  253. package/lib/exercises/math/trigonometry/functions/basicEquationCos.js +92 -0
  254. package/lib/exercises/math/trigonometry/functions/basicEquationSin.d.ts +7 -0
  255. package/lib/exercises/math/trigonometry/functions/basicEquationSin.d.ts.map +1 -0
  256. package/lib/exercises/math/trigonometry/functions/basicEquationSin.js +104 -0
  257. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.d.ts +7 -0
  258. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.d.ts.map +1 -0
  259. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.js +83 -0
  260. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts +8 -0
  261. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts.map +1 -0
  262. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.js +111 -0
  263. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.d.ts +8 -0
  264. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.d.ts.map +1 -0
  265. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.js +101 -0
  266. package/lib/exercises/math/trigonometry/functions/index.d.ts +6 -0
  267. package/lib/exercises/math/trigonometry/functions/index.d.ts.map +1 -0
  268. package/lib/exercises/math/trigonometry/functions/index.js +6 -0
  269. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.d.ts +9 -0
  270. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.d.ts.map +1 -0
  271. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.js +151 -0
  272. package/lib/exercises/math/trigonometry/index.d.ts +3 -14
  273. package/lib/exercises/math/trigonometry/index.d.ts.map +1 -1
  274. package/lib/exercises/math/trigonometry/index.js +3 -14
  275. package/lib/exercises/math/trigonometry/triangle/index.d.ts +7 -0
  276. package/lib/exercises/math/trigonometry/triangle/index.d.ts.map +1 -0
  277. package/lib/exercises/math/trigonometry/triangle/index.js +6 -0
  278. package/lib/exercises/math/trigonometry/triangle/trigonometry.d.ts +10 -0
  279. package/lib/exercises/math/trigonometry/triangle/trigonometry.d.ts.map +1 -0
  280. package/lib/exercises/math/trigonometry/triangle/trigonometry.js +207 -0
  281. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.d.ts +10 -0
  282. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.d.ts.map +1 -0
  283. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.js +174 -0
  284. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.d.ts +11 -0
  285. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.d.ts.map +1 -0
  286. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.js +224 -0
  287. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.d.ts +13 -0
  288. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.d.ts.map +1 -0
  289. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.js +189 -0
  290. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.d.ts +13 -0
  291. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.d.ts.map +1 -0
  292. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.js +290 -0
  293. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.d.ts +18 -0
  294. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.d.ts.map +1 -0
  295. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.js +386 -0
  296. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.js +1 -1
  297. package/lib/exercises/pc/mathExosInPC.d.ts +2 -2
  298. package/lib/exercises/pc/mathExosInPC.d.ts.map +1 -1
  299. package/lib/exercises/pc/mathExosInPC.js +2 -2
  300. package/lib/exercises/vea/setVEA.d.ts.map +1 -1
  301. package/lib/exercises/vea/setVEA.js +4 -0
  302. package/lib/index.d.ts +87 -29
  303. package/lib/index.d.ts.map +1 -1
  304. package/lib/math/geometry/segment.d.ts +1 -1
  305. package/lib/math/geometry/vector.d.ts +2 -1
  306. package/lib/math/geometry/vector.d.ts.map +1 -1
  307. package/lib/math/geometry/vector.js +1 -1
  308. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  309. package/lib/math/numbers/reals/real.js +2 -0
  310. package/lib/playground.d.ts.map +1 -1
  311. package/lib/playground.js +3 -1
  312. package/lib/tree/nodes/algebraicNode.d.ts +1 -0
  313. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  314. package/lib/tree/nodes/functions/sqrtNode.d.ts +2 -1
  315. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  316. package/lib/tree/nodes/functions/sqrtNode.js +17 -6
  317. package/lib/tree/nodes/operators/multiplyNode.js +1 -1
  318. package/lib/utils/arrays/dichoFilter.d.ts +2 -0
  319. package/lib/utils/arrays/dichoFilter.d.ts.map +1 -0
  320. package/lib/utils/arrays/dichoFilter.js +11 -0
  321. package/package.json +1 -1
@@ -0,0 +1,292 @@
1
+ import { GeneratorOptionTarget, GeneratorOptionType, addValidProp, propWhile, shuffleProps, tryToAddWrongProp, } from "../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { Rational } from "../../../../../math/numbers/rationals/rational.js";
4
+ import { randint } from "../../../../../math/utils/random/randint.js";
5
+ import { EqualNode } from "../../../../../tree/nodes/equations/equalNode.js";
6
+ import { VariableNode } from "../../../../../tree/nodes/variables/variableNode.js";
7
+ import { exp } from "../../../../../tree/nodes/functions/expNode.js";
8
+ import { alignTex } from "../../../../../utils/latex/alignTex.js";
9
+ import { Polynomial } from "../../../../../math/polynomials/polynomial.js";
10
+ import { Trinom } from "../../../../../math/polynomials/trinom.js";
11
+ import { EquationSolutionNode } from "../../../../../tree/nodes/equations/equationSolutionNode.js";
12
+ import { DiscreteSetNode } from "../../../../../tree/nodes/sets/discreteSetNode.js";
13
+ import { SetVEA } from "../../../../../exercises/vea/setVEA.js";
14
+ import { parseAlgebraic } from "../../../../../tree/parsers/latexParser.js";
15
+ import { discreteSetParser } from "../../../../../tree/parsers/discreteSetParser.js";
16
+ import { getCartesiansProducts } from "../../../../../utils/arrays/cartesianProducts.js";
17
+ const texXDomain = `\\mathbb{R}`;
18
+ const texNoSolution = (() => {
19
+ const trinom = new Trinom(1, 1, 1);
20
+ return trinom.getRootsEquationSolutionTex(true);
21
+ })();
22
+ const getStartStatement = (identifiers) => {
23
+ return getStatementNode(identifiers).toTex();
24
+ };
25
+ const getChildOfExpNode = (identifiers) => {
26
+ const { a, b, c } = identifiers;
27
+ return new Polynomial([c, b, a]).toTree();
28
+ };
29
+ const getStatementNode = (identifiers) => {
30
+ const nodeChildOfExp = getChildOfExpNode(identifiers);
31
+ const statementTree = new EqualNode(exp(nodeChildOfExp), (1).toTree());
32
+ return statementTree;
33
+ };
34
+ const getInstruction = (identifiers) => {
35
+ return `Résoudre dans $${texXDomain}$ :
36
+
37
+ $$
38
+ ${getStatementNode(identifiers).toTex()}
39
+ $$`;
40
+ };
41
+ const getAnswerNode = (identifiers) => {
42
+ const { a, b, c } = identifiers;
43
+ const trinom = new Trinom(a, b, c);
44
+ const sortedSols = trinom.getRootsNode();
45
+ return new EquationSolutionNode(new DiscreteSetNode(sortedSols));
46
+ };
47
+ const getAnswer = (identifiers, optsIn) => {
48
+ const opts = optsIn ?? optsDefault;
49
+ const { a, b, c } = identifiers;
50
+ const trinom = new Trinom(a, b, c);
51
+ const answer = trinom.getRootsEquationSolutionTex(opts.solutionFormat === "$x=\\ldots$");
52
+ return answer;
53
+ };
54
+ const getHint = () => {
55
+ return `Pour quelle valeur de $t$ a-t-on $e^t=1$ ?
56
+
57
+ Quelle équation faut-il donc résoudre ?`;
58
+ };
59
+ const getCorrection = (identifiers, optsIn) => {
60
+ const opts = optsIn ?? optsDefault;
61
+ const nodeChildOfExp = getChildOfExpNode(identifiers);
62
+ return `L'équation est de la forme $e^{u(x)}=1$ avec $u(x)=${nodeChildOfExp.toTex()}$.
63
+
64
+ La fonction exponentielle est strictement croissante de $\\mathbb{R}$ dans $\\mathbb{R}^{+*}$.
65
+
66
+ Pour $t$ dans $\\mathbb{R}$, on a :
67
+
68
+ $$
69
+ e^t=1 \\Leftrightarrow t=0
70
+ $$
71
+
72
+ Ici, on a donc :
73
+
74
+ $$
75
+ e^{u(x)}=1 \\Leftrightarrow u(x)=0
76
+ $$
77
+
78
+ Conclusion :
79
+
80
+ ${alignTex([
81
+ ["", "", `e^{${nodeChildOfExp.toTex()}}=1`],
82
+ ["", `\\Leftrightarrow`, `${nodeChildOfExp.toTex()}=0`],
83
+ ["", `\\Leftrightarrow`, `${getAnswer(identifiers, opts)}`],
84
+ ])}
85
+
86
+ `;
87
+ };
88
+ const getPropositions = (n, { answer, ...identifiers }, optsIn) => {
89
+ const opts = optsIn ?? optsDefault;
90
+ const propositions = [];
91
+ addValidProp(propositions, answer);
92
+ const { a, b, c } = identifiers;
93
+ //random coeff signs
94
+ {
95
+ const arrIdentifiersWrong = getCartesiansProducts([...Array(3).keys()].map(() => [-1, 1]))
96
+ .filter((arrS) => !arrS.every((s) => s === 1))
97
+ .map(([sA, sB, sC]) => {
98
+ const identifiersWrong = {
99
+ a: sA * a,
100
+ b: sB * b,
101
+ c: sC * c,
102
+ };
103
+ return identifiersWrong;
104
+ });
105
+ arrIdentifiersWrong.forEach((identifiersWrong) => {
106
+ const texWrong = getAnswer(identifiersWrong, opts);
107
+ tryToAddWrongProp(propositions, texWrong);
108
+ });
109
+ }
110
+ //student makes as if exp was not there
111
+ {
112
+ const trinom = new Trinom(a, b, c - 1);
113
+ const texWrong = trinom.getRootsEquationSolutionTex(opts.solutionFormat === "$x=\\ldots$");
114
+ tryToAddWrongProp(propositions, texWrong);
115
+ }
116
+ //student divides both sides by e
117
+ // {
118
+ // const trinom = new Trinom(a, b, c - frac(1, exp(1)));
119
+ // const texWrong = trinom.getRootsEquationSolutionTex(
120
+ // opts.solutionFormat === "$x=\\ldots$",
121
+ // );
122
+ // tryToAddWrongProp(propositions, texWrong);
123
+ // }
124
+ propWhile(propositions, n, () => {
125
+ const wrongAnswer = new Rational(-b + randint(-7, 8, [0, +b]), a + randint(-7, 8, [-a, 0])).simplify();
126
+ tryToAddWrongProp(propositions, new EqualNode(new VariableNode("x"), wrongAnswer.toTree()).toTex());
127
+ });
128
+ return shuffleProps(propositions, n);
129
+ };
130
+ const getKeys = (_, optsIn) => {
131
+ const opts = optsIn ?? optsDefault;
132
+ const answerInputTypes = getAnswerInputTypes(opts);
133
+ return [
134
+ ...answerInputTypes.reduce((acc, answerInputType) => {
135
+ const specialSet = new Set((() => {
136
+ switch (answerInputType) {
137
+ case "x=... ou x=...":
138
+ return [
139
+ ...["x", "equal", "ou"],
140
+ ...[
141
+ (() => {
142
+ return {
143
+ id: "custom",
144
+ label: texNoSolution,
145
+ labelType: "tex",
146
+ mathfieldInstructions: {
147
+ method: "write",
148
+ content: texNoSolution,
149
+ },
150
+ };
151
+ })(),
152
+ ],
153
+ ];
154
+ case "S={...;...}":
155
+ return [
156
+ "S",
157
+ "equal",
158
+ "lbrace",
159
+ "semicolon",
160
+ "rbrace",
161
+ "varnothing",
162
+ ];
163
+ default:
164
+ throw new Error("Unsupported answerInputType: " + answerInputType);
165
+ }
166
+ })());
167
+ return new Set([...acc, ...specialSet]);
168
+ }, new Set()),
169
+ ];
170
+ };
171
+ const isAnswerValid = (ans, { answer, ...identifiers }, optsIn) => {
172
+ const opts = optsIn ?? optsDefault;
173
+ const answerInputTypes = getAnswerInputTypes(opts);
174
+ const answerNode = getAnswerNode(identifiers);
175
+ const arrNodeAnswer = answerNode.solutionsSet.elements;
176
+ function getParsedNodesForAnswerInputType(ans, answerInputType) {
177
+ switch (answerInputType) {
178
+ case "x=... ou x=...":
179
+ {
180
+ const formated = ans
181
+ .replaceAll("text{ ou }", ";")
182
+ .replaceAll("x", "")
183
+ .replaceAll("=", "");
184
+ const elements = formated.split(";").map((e) => parseAlgebraic(e));
185
+ return elements;
186
+ }
187
+ break;
188
+ case "S={...;...}":
189
+ {
190
+ const discreteSetNodeCandidate = discreteSetParser(ans);
191
+ if (discreteSetNodeCandidate) {
192
+ return discreteSetNodeCandidate.elements;
193
+ }
194
+ else {
195
+ return [];
196
+ }
197
+ }
198
+ break;
199
+ default:
200
+ throw new Error("Unsupported answerInputType: " + answerInputType);
201
+ }
202
+ }
203
+ function isAnswerValidForAnswerInputType(answerInputType) {
204
+ try {
205
+ if (arrNodeAnswer.length === 0) {
206
+ switch (answerInputType) {
207
+ case "x=... ou x=...":
208
+ return ans === texNoSolution;
209
+ case "S={...;...}":
210
+ return ans === `S=\\varnothing`;
211
+ default:
212
+ throw new Error("Unsupported answerInputType: " + answerInputType);
213
+ }
214
+ }
215
+ else {
216
+ const arrAns = getParsedNodesForAnswerInputType(ans, answerInputType);
217
+ return SetVEA.isArrayOfNodesValid(arrAns, arrNodeAnswer);
218
+ }
219
+ }
220
+ catch (_) {
221
+ return false;
222
+ }
223
+ }
224
+ return answerInputTypes.some((answerInputType) => isAnswerValidForAnswerInputType(answerInputType));
225
+ };
226
+ const getExpOfTrinomEquals1EquationQuestion = (optsIn) => {
227
+ const opts = optsIn ?? optsDefault;
228
+ const c = randint(-10, 11, [0]);
229
+ const b = randint(-10, 11, [0]);
230
+ const a = randint(-10, 11, [0, 1]);
231
+ const identifiers = { a, b, c };
232
+ return getQuestionFromIdentifiers(identifiers, opts);
233
+ };
234
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
235
+ const question = {
236
+ instruction: getInstruction(identifiers, opts),
237
+ hint: getHint(identifiers, opts),
238
+ correction: getCorrection(identifiers, opts),
239
+ startStatement: getStartStatement(identifiers, opts),
240
+ answer: getAnswer(identifiers, opts),
241
+ keys: getKeys(identifiers, opts),
242
+ answerFormat: "tex",
243
+ identifiers,
244
+ };
245
+ return question;
246
+ };
247
+ const getAnswerInputTypes = (opts) => {
248
+ const { solutionFormat } = opts;
249
+ switch (solutionFormat) {
250
+ case "$x=\\ldots$":
251
+ return ["x=... ou x=..."];
252
+ case "Ensemble":
253
+ return ["S={...;...}"];
254
+ case "Permettre les deux":
255
+ return ["x=... ou x=...", "S={...;...}"];
256
+ default:
257
+ throw new Error("Unsupported solutionFormat: " + solutionFormat);
258
+ }
259
+ };
260
+ const optsDefault = {
261
+ solutionFormat: "Permettre les deux",
262
+ };
263
+ const options = [
264
+ {
265
+ id: "solutionFormat",
266
+ label: "Donner la solution sous la forme :",
267
+ target: GeneratorOptionTarget.generation,
268
+ type: GeneratorOptionType.select,
269
+ values: ["Ensemble", "$x=\\ldots$", "Permettre les deux"],
270
+ defaultValue: optsDefault.solutionFormat,
271
+ },
272
+ ];
273
+ export const expOfTrinomEquals1Equation = {
274
+ id: "expOfTrinomEquals1Equation",
275
+ connector: "\\iff",
276
+ label: "Résoudre une équation du type $e^{ax^2+bx+c}=1$",
277
+ isSingleStep: true,
278
+ generator: (nb, opts) => getDistinctQuestions(() => getExpOfTrinomEquals1EquationQuestion(opts), nb),
279
+ qcmTimer: 60,
280
+ freeTimer: 60,
281
+ getPropositions,
282
+ isAnswerValid,
283
+ subject: "Mathématiques",
284
+ hasHintAndCorrection: true,
285
+ getAnswer,
286
+ getInstruction,
287
+ getCorrection,
288
+ getHint,
289
+ getStartStatement,
290
+ getQuestionFromIdentifiers,
291
+ options,
292
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./expOfAffineEquals1Equation.js";
2
+ export * from "./expOfTrinomEquals1Equation.js";
3
+ export * from "./expOfFEqualsExpOfGEquation.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/calculLitteral/equation/exp/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./expOfAffineEquals1Equation.js";
2
+ export * from "./expOfTrinomEquals1Equation.js";
3
+ export * from "./expOfFEqualsExpOfGEquation.js";
@@ -4,6 +4,9 @@ type Identifiers = {
4
4
  isSum: boolean;
5
5
  b: number;
6
6
  };
7
- export declare const factorizeEquation: Exercise<Identifiers>;
7
+ type Options = {
8
+ answerInputTypes: string[];
9
+ };
10
+ export declare const factorizeEquation: Exercise<Identifiers, Options>;
8
11
  export {};
9
12
  //# sourceMappingURL=factorizeEquation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factorizeEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/factorizeEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,OAAO,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA2JF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAkBnD,CAAC"}
1
+ {"version":3,"file":"factorizeEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/factorizeEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAyCrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,OAAO,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA+QF,KAAK,OAAO,GAAG;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAsBF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAyB5D,CAAC"}
@@ -1,5 +1,6 @@
1
- import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, } from "../../../../exercises/exercise.js";
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, GeneratorOptionTarget, GeneratorOptionType, } from "../../../../exercises/exercise.js";
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { SetVEA } from "../../../../exercises/vea/setVEA.js";
3
4
  import { randint } from "../../../../math/utils/random/randint.js";
4
5
  import { EquationSolutionNode } from "../../../../tree/nodes/equations/equationSolutionNode.js";
5
6
  import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
@@ -9,9 +10,30 @@ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
9
10
  import { square } from "../../../../tree/nodes/operators/powerNode.js";
10
11
  import { DiscreteSetNode } from "../../../../tree/nodes/sets/discreteSetNode.js";
11
12
  import { discreteSetParser } from "../../../../tree/parsers/discreteSetParser.js";
13
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
12
14
  import { coinFlip } from "../../../../utils/alea/coinFlip.js";
13
- import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
14
- const getPropositions = (n, { answer, ...identifiers }) => {
15
+ const getTexForEquationSolutionNode = (nodeAnswer, opts) => {
16
+ const answerInputTypeDefault = "S={...;...}";
17
+ const answerInputType = opts.answerInputTypes.includes(answerInputTypeDefault)
18
+ ? answerInputTypeDefault
19
+ : opts.answerInputTypes[0];
20
+ switch (answerInputType) {
21
+ case "x=... ou x=...":
22
+ {
23
+ const arrNodeAnswer = nodeAnswer.solutionsSet.elements;
24
+ return arrNodeAnswer
25
+ .map((node) => `x=${node.toTex()}`)
26
+ .join("\\text{ ou }");
27
+ }
28
+ break;
29
+ case "S={...;...}":
30
+ return nodeAnswer.toTex();
31
+ default:
32
+ throw new Error("Unsupported answerInputType: " + answerInputType);
33
+ }
34
+ };
35
+ const getPropositions = (n, { answer, ...identifiers }, optsIn) => {
36
+ const opts = optsIn ?? optsDefault;
15
37
  const { a, isSum, b } = identifiers;
16
38
  const propositions = [];
17
39
  addValidProp(propositions, answer);
@@ -19,19 +41,19 @@ const getPropositions = (n, { answer, ...identifiers }) => {
19
41
  new NumberNode(0),
20
42
  frac(multiply(isSum ? 1 : -1, b), a),
21
43
  ]);
22
- tryToAddWrongProp(propositions, new EquationSolutionNode(solutions).simplify().toTex());
44
+ tryToAddWrongProp(propositions, getTexForEquationSolutionNode(new EquationSolutionNode(solutions).simplify(), opts));
23
45
  solutions = new DiscreteSetNode([new NumberNode(0)]);
24
46
  tryToAddWrongProp(propositions, new EquationSolutionNode(solutions).simplify().toTex());
25
47
  solutions = new DiscreteSetNode([frac(multiply(isSum ? 1 : -1, b), a)]);
26
- tryToAddWrongProp(propositions, new EquationSolutionNode(solutions).simplify().toTex());
48
+ tryToAddWrongProp(propositions, getTexForEquationSolutionNode(new EquationSolutionNode(solutions).simplify(), opts));
27
49
  solutions = new DiscreteSetNode([frac(multiply(isSum ? -1 : 1, b), a)]);
28
- tryToAddWrongProp(propositions, new EquationSolutionNode(solutions).simplify().toTex());
50
+ tryToAddWrongProp(propositions, getTexForEquationSolutionNode(new EquationSolutionNode(solutions).simplify(), opts));
29
51
  propWhile(propositions, n, () => {
30
52
  throw Error("QCM not implemented");
31
53
  });
32
54
  return shuffleProps(propositions, n);
33
55
  };
34
- const getAnswer = (identifiers) => {
56
+ const getAnswerNode = (identifiers) => {
35
57
  const { a, b, isSum } = identifiers;
36
58
  // ax^2 + bx = x(ax + b) -> S = {0, -b/a}
37
59
  // ax^2 - bx = x(ax - b) -> S = {0, b/a}
@@ -39,8 +61,13 @@ const getAnswer = (identifiers) => {
39
61
  new NumberNode(0),
40
62
  frac(multiply(isSum ? -1 : 1, b), a),
41
63
  ]);
42
- const answer = new EquationSolutionNode(solutions).simplify().toTex();
43
- return answer;
64
+ const nodeAnswer = new EquationSolutionNode(solutions).simplify();
65
+ return nodeAnswer;
66
+ };
67
+ const getAnswer = (identifiers, optsIn) => {
68
+ const opts = optsIn ?? optsDefault;
69
+ const answerNode = getAnswerNode(identifiers);
70
+ return getTexForEquationSolutionNode(answerNode, opts);
44
71
  };
45
72
  const getInstruction = (identifiers) => {
46
73
  const { a, isSum, b } = identifiers;
@@ -49,7 +76,7 @@ const getInstruction = (identifiers) => {
49
76
  const eq = add(left, multiply(isSum ? 1 : -1, right));
50
77
  return `En factorisant $${eq
51
78
  .simplify({ forbidFactorize: true })
52
- .toTex()}$, résoudre l'équation:
79
+ .toTex()}$, résoudre l'équation :
53
80
  $$
54
81
  ${left.toTex()} = ${multiply(isSum ? -1 : 1, right).toTex()}
55
82
  $$`;
@@ -67,7 +94,12 @@ ${left.toTex()} = ${multiply(isSum ? -1 : 1, right).toTex()} \\iff ${eq
67
94
  .toTex()} = 0
68
95
  $$`;
69
96
  };
70
- const getCorrection = (identifiers) => {
97
+ const getCorrection = (identifiers, optsIn) => {
98
+ const opts = optsIn ?? optsDefault;
99
+ const answerInputTypeDefault = "S={...;...}";
100
+ const answerInputType = opts.answerInputTypes.includes(answerInputTypeDefault)
101
+ ? answerInputTypeDefault
102
+ : opts.answerInputTypes[0];
71
103
  const { a, isSum, b } = identifiers;
72
104
  const left = multiply(a, square("x"));
73
105
  const right = multiply(b, "x");
@@ -82,55 +114,140 @@ $$
82
114
  x\\left(${factorizedInside}\\right) = 0
83
115
  $$
84
116
 
85
- Cette équation a deux solutions possibles:
117
+ Cette équation a deux solutions possibles :
86
118
 
87
119
  - $x = 0$
88
- - ou $${factorizedInside} = 0 \\iff x = ${factorizedAnswer}$
89
120
 
90
- L'ensemble solution de l'équation est donc :
121
+ ou
122
+
123
+ - $${factorizedInside} = 0 \\iff x = ${factorizedAnswer}$
124
+
125
+ ${(() => {
126
+ switch (answerInputType) {
127
+ case "x=... ou x=...":
128
+ return `Les solutions sont donc :`;
129
+ case "S={...;...}":
130
+ return `L'ensemble solution de l'équation est donc :`;
131
+ default:
132
+ throw new Error("Unsupported answerInputType: " + answerInputType);
133
+ }
134
+ })()}
91
135
 
92
136
  $$
93
- ${getAnswer(identifiers)}
137
+ ${getAnswer(identifiers, opts)}
94
138
  $$`;
95
139
  };
96
- const getKeys = () => {
97
- return ["S", "equal", "lbrace", "semicolon", "rbrace"];
140
+ const getKeys = (_, optsIn) => {
141
+ const opts = optsIn ?? optsDefault;
142
+ const { answerInputTypes } = opts;
143
+ return [
144
+ ...answerInputTypes.reduce((acc, answerInputType) => {
145
+ const specialSet = new Set((() => {
146
+ switch (answerInputType) {
147
+ case "x=... ou x=...":
148
+ return ["x", "equal", "ou"];
149
+ case "S={...;...}":
150
+ return ["S", "equal", "lbrace", "semicolon", "rbrace"];
151
+ default:
152
+ throw new Error("Unsupported answerInputType: " + answerInputType);
153
+ }
154
+ })());
155
+ return new Set([...acc, ...specialSet]);
156
+ }, new Set()),
157
+ ];
98
158
  };
99
- const isAnswerValid = (ans, { answer }) => {
100
- try {
101
- const parsed = discreteSetParser(ans);
102
- if (!parsed)
103
- return false;
104
- return "S=" + parsed.simplify().toTex() === answer;
159
+ const isAnswerValid = (ans, { answer: _, ...identifiers }, optsIn) => {
160
+ const opts = optsIn ?? optsDefault;
161
+ const answerNode = getAnswerNode(identifiers);
162
+ const arrNodeAnswer = answerNode.solutionsSet.elements;
163
+ function getParsedNodesForAnswerInputType(ans, answerInputType) {
164
+ switch (answerInputType) {
165
+ case "x=... ou x=...":
166
+ {
167
+ const formated = ans
168
+ .replaceAll("text{ ou }", ";")
169
+ .replaceAll("x", "")
170
+ .replaceAll("=", "");
171
+ console.log("formated", formated);
172
+ // if (formated === "\\varnothing") {
173
+ // return EmptySet;
174
+ // }
175
+ const elements = formated.split(";").map((e) => parseAlgebraic(e));
176
+ return elements;
177
+ }
178
+ break;
179
+ case "S={...;...}":
180
+ {
181
+ const discreteSetNodeCandidate = discreteSetParser(ans);
182
+ if (discreteSetNodeCandidate) {
183
+ return discreteSetNodeCandidate.elements;
184
+ }
185
+ else {
186
+ return [];
187
+ }
188
+ }
189
+ break;
190
+ default:
191
+ throw new Error("Unsupported answerInputType: " + answerInputType);
192
+ }
105
193
  }
106
- catch (err) {
107
- return handleVEAError(err);
194
+ function isAnswerValidForAnswerInputType(answerInputType) {
195
+ try {
196
+ const arrAns = getParsedNodesForAnswerInputType(ans, answerInputType);
197
+ return SetVEA.isArrayOfNodesValid(arrAns, arrNodeAnswer);
198
+ }
199
+ catch (_) {
200
+ return false;
201
+ }
108
202
  }
203
+ return opts.answerInputTypes.some((answerInputType) => isAnswerValidForAnswerInputType(answerInputType));
109
204
  };
110
- const getFactorizeEquationQuestion = () => {
205
+ const getFactorizeEquationQuestion = (optsIn) => {
206
+ const opts = optsIn ?? optsDefault;
111
207
  const a = randint(1, 10);
112
208
  const b = randint(1, 10);
113
209
  const isSum = coinFlip();
114
210
  const identifiers = { a, isSum, b };
115
- return getQuestionFromIdentifiers(identifiers);
211
+ return getQuestionFromIdentifiers(identifiers, opts);
116
212
  };
117
- const getQuestionFromIdentifiers = (identifiers) => {
213
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
118
214
  return {
119
- answer: getAnswer(identifiers),
215
+ answer: getAnswer(identifiers, opts),
120
216
  instruction: getInstruction(identifiers),
121
- keys: getKeys(identifiers),
217
+ keys: getKeys(identifiers, opts),
122
218
  answerFormat: "tex",
123
219
  identifiers,
124
220
  hint: getHint(identifiers),
125
- correction: getCorrection(identifiers),
221
+ correction: getCorrection(identifiers, opts),
222
+ options: opts,
126
223
  };
127
224
  };
225
+ const optsDefault = {
226
+ answerInputTypes: ["x=... ou x=...", "S={...;...}"],
227
+ };
228
+ const options = [
229
+ {
230
+ id: "answerInputTypes",
231
+ label: "Format(s) de réponse",
232
+ target: GeneratorOptionTarget.generation,
233
+ type: GeneratorOptionType.multiselect,
234
+ values: ["x=... ou x=...", "S={...;...}"],
235
+ defaultValue: optsDefault.answerInputTypes,
236
+ },
237
+ ];
128
238
  export const factorizeEquation = {
129
239
  id: "factorizeEquation",
130
240
  connector: "=",
131
241
  label: "Résoudre une équation se ramenant au premier degré",
132
242
  isSingleStep: true,
133
243
  generator: (nb, opts) => getDistinctQuestions(() => getFactorizeEquationQuestion(opts), nb),
244
+ options,
245
+ validateOptions: (opts) => {
246
+ return {
247
+ valid: !!(opts?.answerInputTypes && opts?.answerInputTypes.length > 0),
248
+ message: "Veuillez choisir au moins un format de réponse.",
249
+ };
250
+ },
134
251
  qcmTimer: 60,
135
252
  freeTimer: 60,
136
253
  getPropositions,
@@ -5,6 +5,9 @@ type Identifiers = {
5
5
  c: number;
6
6
  d: number;
7
7
  };
8
- export declare const multiplicationEquation: Exercise<Identifiers>;
8
+ type Options = {
9
+ answerInputTypes: string[];
10
+ };
11
+ export declare const multiplicationEquation: Exercise<Identifiers, Options>;
9
12
  export {};
10
13
  //# sourceMappingURL=multiplicationEquation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiplicationEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/multiplicationEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAkIF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAcxD,CAAC"}
1
+ {"version":3,"file":"multiplicationEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/multiplicationEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAkBT,MAAM,6BAA6B,CAAC;AAuCrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAqMF,KAAK,OAAO,GAAG;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAsBF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAejE,CAAC"}