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
@@ -1,4 +1,4 @@
1
- import { addValidProp, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
1
+ import { GeneratorOptionTarget, GeneratorOptionType, addValidProp, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
3
  import { Rational } from "../../../../math/numbers/rationals/rational.js";
4
4
  import { Polynomial } from "../../../../math/polynomials/polynomial.js";
@@ -10,6 +10,27 @@ import { alignTex } from "../../../../utils/latex/alignTex.js";
10
10
  import { shuffle } from "../../../../utils/alea/shuffle.js";
11
11
  import { SetVEA } from "../../../../exercises/vea/setVEA.js";
12
12
  import { discreteSetParser } from "../../../../tree/parsers/discreteSetParser.js";
13
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
14
+ const getTexForEquationSolutionNode = (nodeAnswer, opts) => {
15
+ const answerInputTypeDefault = "S={...;...}";
16
+ const answerInputType = opts.answerInputTypes.includes(answerInputTypeDefault)
17
+ ? answerInputTypeDefault
18
+ : opts.answerInputTypes[0];
19
+ switch (answerInputType) {
20
+ case "x=... ou x=...":
21
+ {
22
+ const arrNodeAnswer = nodeAnswer.solutionsSet.elements;
23
+ return arrNodeAnswer
24
+ .map((node) => `x=${node.toTex()}`)
25
+ .join("\\text{ ou }");
26
+ }
27
+ break;
28
+ case "S={...;...}":
29
+ return nodeAnswer.toTex();
30
+ default:
31
+ throw new Error("Unsupported answerInputType: " + answerInputType);
32
+ }
33
+ };
13
34
  const getStatementNode = (identifiers) => {
14
35
  const { a, b, c, d } = identifiers;
15
36
  const polynome1 = new Polynomial([b, a]);
@@ -27,13 +48,88 @@ $$
27
48
  ${getStartStatement(identifiers)}
28
49
  $$`;
29
50
  };
30
- const getAnswer = (identifiers) => {
51
+ const getAnswerNode = (identifiers) => {
31
52
  const { a, b, c, d } = identifiers;
32
53
  const sol1 = new Rational(-b, a).simplify().toTree();
33
54
  const sol2 = new Rational(-d, c).simplify().toTree();
34
55
  const sortedSols = -b / a < -d / c ? [sol1, sol2] : [sol2, sol1];
35
- const answer = new EquationSolutionNode(new DiscreteSetNode(sortedSols)).toTex();
36
- return answer;
56
+ const nodeAnswer = new EquationSolutionNode(new DiscreteSetNode(sortedSols));
57
+ return nodeAnswer;
58
+ };
59
+ const getAnswer = (identifiers, optsIn) => {
60
+ const opts = optsIn ?? optsDefault;
61
+ const answerNode = getAnswerNode(identifiers);
62
+ return getTexForEquationSolutionNode(answerNode, opts);
63
+ };
64
+ const isAnswerValid = (ans, { answer: _, ...identifiers }, optsIn) => {
65
+ const opts = optsIn ?? optsDefault;
66
+ const answerNode = getAnswerNode(identifiers);
67
+ const arrNodeAnswer = answerNode.solutionsSet.elements;
68
+ function getParsedNodesForAnswerInputType(ans, answerInputType) {
69
+ switch (answerInputType) {
70
+ case "x=... ou x=...":
71
+ {
72
+ const formated = ans
73
+ .replaceAll("text{ ou }", ";")
74
+ .replaceAll("x", "")
75
+ .replaceAll("=", "");
76
+ console.log("formated", formated);
77
+ // if (formated === "\\varnothing") {
78
+ // return EmptySet;
79
+ // }
80
+ const elements = formated.split(";").map((e) => parseAlgebraic(e));
81
+ return elements;
82
+ }
83
+ break;
84
+ case "S={...;...}":
85
+ {
86
+ const discreteSetNodeCandidate = discreteSetParser(ans);
87
+ if (discreteSetNodeCandidate) {
88
+ return discreteSetNodeCandidate.elements;
89
+ }
90
+ else {
91
+ return [];
92
+ }
93
+ }
94
+ break;
95
+ default:
96
+ throw new Error("Unsupported answerInputType: " + answerInputType);
97
+ }
98
+ }
99
+ function isAnswerValidForAnswerInputType(answerInputType) {
100
+ try {
101
+ const arrAns = getParsedNodesForAnswerInputType(ans, answerInputType);
102
+ return SetVEA.isArrayOfNodesValid(arrAns, arrNodeAnswer);
103
+ }
104
+ catch (_) {
105
+ return false;
106
+ }
107
+ }
108
+ return opts.answerInputTypes.some((answerInputType) => isAnswerValidForAnswerInputType(answerInputType));
109
+ };
110
+ const getPropositions = (n, { answer }, optsIn) => {
111
+ const opts = optsIn ?? optsDefault;
112
+ const propositions = [];
113
+ addValidProp(propositions, answer);
114
+ propWhile(propositions, n, () => {
115
+ let a, b, c, d;
116
+ let counter = 0;
117
+ do {
118
+ counter++;
119
+ if (counter > 1000)
120
+ throw new Error("Too many iterations in multiplicationEquation");
121
+ a = randint(-9, 10, [0]);
122
+ b = randint(-9, 10, [0]);
123
+ c = randint(-9, 10, [0]);
124
+ d = randint(-9, 10, [0]);
125
+ } while (a / c === b / d);
126
+ const sol1 = new Rational(-b, a).simplify().toTree();
127
+ const sol2 = new Rational(-d, c).simplify().toTree();
128
+ const sortedSols = -b / a < -d / c ? [sol1, sol2] : [sol2, sol1];
129
+ const wrongAnswer = getTexForEquationSolutionNode(new EquationSolutionNode(new DiscreteSetNode(sortedSols)), opts);
130
+ tryToAddWrongProp(propositions, wrongAnswer);
131
+ });
132
+ return shuffle(propositions);
37
133
  };
38
134
  const getHint = () => {
39
135
  return "Un produit est nul si et seulement si un des deux facteurs est nul. Il faut donc trouver les valeurs de $x$ qui rendent un des deux facteurs nul.";
@@ -59,7 +155,8 @@ ${alignTex([
59
155
 
60
156
  Ainsi, $${getAnswer(identifiers)}$`;
61
157
  };
62
- const getMultiplicationEquation = () => {
158
+ const getMultiplicationEquation = (optsIn) => {
159
+ const opts = optsIn ?? optsDefault;
63
160
  // (ax + b)(cx + d) = 0
64
161
  let a, b, c, d;
65
162
  let counter = 0;
@@ -73,59 +170,42 @@ const getMultiplicationEquation = () => {
73
170
  d = randint(-9, 10, [0]);
74
171
  } while (a / c === b / d);
75
172
  const identifiers = { a, b, c, d };
76
- return getQuestionFromIdentifiers(identifiers);
173
+ return getQuestionFromIdentifiers(identifiers, opts);
77
174
  };
78
- const getQuestionFromIdentifiers = (identifiers) => {
175
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
79
176
  const question = {
80
- instruction: getInstruction(identifiers),
81
- startStatement: getStartStatement(identifiers),
82
- answer: getAnswer(identifiers),
177
+ instruction: getInstruction(identifiers, opts),
178
+ startStatement: getStartStatement(identifiers, opts),
179
+ answer: getAnswer(identifiers, opts),
83
180
  keys: ["x", "S", "equal", "lbrace", "rbrace", "semicolon", "ou"],
84
181
  answerFormat: "tex",
85
182
  identifiers,
86
- hint: getHint(identifiers),
87
- correction: getCorrection(identifiers),
183
+ hint: getHint(identifiers, opts),
184
+ correction: getCorrection(identifiers, opts),
185
+ options: opts,
88
186
  };
89
187
  return question;
90
188
  };
91
- const getPropositions = (n, { answer }) => {
92
- const propositions = [];
93
- addValidProp(propositions, answer);
94
- propWhile(propositions, n, () => {
95
- let a, b, c, d;
96
- let counter = 0;
97
- do {
98
- counter++;
99
- if (counter > 1000)
100
- throw new Error("Too many iterations in multiplicationEquation");
101
- a = randint(-9, 10, [0]);
102
- b = randint(-9, 10, [0]);
103
- c = randint(-9, 10, [0]);
104
- d = randint(-9, 10, [0]);
105
- } while (a / c === b / d);
106
- const sol1 = new Rational(-b, a).simplify().toTree();
107
- const sol2 = new Rational(-d, c).simplify().toTree();
108
- const sortedSols = -b / a < -d / c ? [sol1, sol2] : [sol2, sol1];
109
- const wrongAnswer = new EquationSolutionNode(new DiscreteSetNode(sortedSols)).toTex();
110
- tryToAddWrongProp(propositions, wrongAnswer);
111
- });
112
- return shuffle(propositions);
113
- };
114
- const isAnswerValid = (ans, { a, b, c, d }) => {
115
- const parsed = discreteSetParser(ans);
116
- if (!parsed)
117
- return false;
118
- const sol1 = new Rational(-b, a).simplify().toTree();
119
- const sol2 = new Rational(-d, c).simplify().toTree();
120
- const sortedSols = -b / a < -d / c ? [sol1, sol2] : [sol2, sol1];
121
- return SetVEA.isArrayOfNodesValid(parsed.elements, sortedSols);
189
+ const optsDefault = {
190
+ answerInputTypes: ["x=... ou x=...", "S={...;...}"],
122
191
  };
192
+ const options = [
193
+ {
194
+ id: "answerInputTypes",
195
+ label: "Format(s) de réponse",
196
+ target: GeneratorOptionTarget.generation,
197
+ type: GeneratorOptionType.multiselect,
198
+ values: ["x=... ou x=...", "S={...;...}"],
199
+ defaultValue: optsDefault.answerInputTypes,
200
+ },
201
+ ];
123
202
  export const multiplicationEquation = {
124
203
  id: "multiplicationEquation",
125
204
  connector: "\\iff",
126
205
  label: "Résoudre une équation produit nul",
127
206
  isSingleStep: false,
128
- generator: (nb) => getDistinctQuestions(getMultiplicationEquation, nb),
207
+ generator: (nb, opts) => getDistinctQuestions(() => getMultiplicationEquation(opts), nb),
208
+ options,
129
209
  qcmTimer: 60,
130
210
  freeTimer: 60,
131
211
  getPropositions,
@@ -0,0 +1,18 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ import { InegalitySymbols } from "../../../../../math/inequations/inequation.js";
3
+ /**
4
+ * e^{f(x)}<e^{g(x)}
5
+ */
6
+ type Identifiers = {
7
+ coeffsF: number[];
8
+ coeffsG: number[];
9
+ ineqType: InegalitySymbols;
10
+ };
11
+ type Options = {
12
+ inequationSolutionFormat: string;
13
+ functionTypeF: string;
14
+ functionTypeG: string;
15
+ };
16
+ export declare const expOfFEqualsExpOfGInequation: Exercise<Identifiers, Options>;
17
+ export {};
18
+ //# sourceMappingURL=expOfFEqualsExpOfGInequation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expOfFEqualsExpOfGInequation.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAoBT,MAAM,6BAA6B,CAAC;AAqBrC,OAAO,EACL,gBAAgB,EAGjB,MAAM,sCAAsC,CAAC;AAiH9C;;GAEG;AACH,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAgYF,KAAK,OAAO,GAAG;IACb,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AA2BF,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAuBvE,CAAC"}
@@ -0,0 +1,437 @@
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 { exp } from "../../../../../tree/nodes/functions/expNode.js";
6
+ import { Polynomial } from "../../../../../math/polynomials/polynomial.js";
7
+ import { EquationSolutionNode } from "../../../../../tree/nodes/equations/equationSolutionNode.js";
8
+ import { EmptySet } from "../../../../../tree/nodes/sets/discreteSetNode.js";
9
+ import { zip } from "../../../../../utils/arrays/arrayZip.js";
10
+ import { MinusInfinityNode, PlusInfinityNode, } from "../../../../../tree/nodes/numbers/infiniteNode.js";
11
+ import { IntervalNode } from "../../../../../tree/nodes/sets/intervalNode.js";
12
+ import { ClosureType } from "../../../../../tree/nodes/sets/closure.js";
13
+ import { InequationSolutionNode } from "../../../../../tree/nodes/inequations/inequationSolutionNode.js";
14
+ import { Affine, AffineConstructor } from "../../../../../math/polynomials/affine.js";
15
+ import { alignTex } from "../../../../../utils/latex/alignTex.js";
16
+ import { frac } from "../../../../../tree/nodes/operators/fractionNode.js";
17
+ import { substract } from "../../../../../tree/nodes/operators/substractNode.js";
18
+ import { getCartesiansProducts } from "../../../../../utils/arrays/cartesianProducts.js";
19
+ import { InequationSymbol, InequationSymbolConstructor, } from "../../../../../math/inequations/inequation.js";
20
+ import { InequationNode } from "../../../../../tree/nodes/inequations/inequationNode.js";
21
+ import { inequationSolutionFormat } from "../../../../../exercises/options/inequationSolutionFormat.js";
22
+ import { unionIntervalParser } from "../../../../../tree/parsers/unionIntervalParser.js";
23
+ import { handleVEAError } from "../../../../../utils/errors/handleVEAError.js";
24
+ //reuse other exercises: (unfortunately breaks exosTest)
25
+ // import { reuseSecondDegreeInequation } from "../../../../../exercises/math/functions/trinoms/equation/secondDegreeInequation.js";
26
+ // import { reuseFirstDegreeInequationsType3 } from "../../../../../exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.js";
27
+ import { intervalParser } from "../../../../../tree/parsers/intervalParser.js";
28
+ import { inequationParser } from "../../../../../tree/parsers/inequationParser.js";
29
+ import { Trinom } from "../../../../../math/polynomials/trinom.js";
30
+ import { UnionIntervalNode } from "../../../../../tree/nodes/sets/unionIntervalNode.js";
31
+ import { coinFlip } from "../../../../../utils/alea/coinFlip.js";
32
+ const reuseSecondDegreeInequation = {
33
+ getAnswerNode: (identifiers) => {
34
+ const { a, b, c, ineqType } = identifiers;
35
+ const ineq = new InequationSymbol(ineqType);
36
+ const trinom = new Trinom(a, b, c);
37
+ const roots = trinom.getRootsNode();
38
+ const aPositive = a > 0;
39
+ const insideInterval = new IntervalNode(roots[0], roots[1], ineq.isStrict ? ClosureType.OO : ClosureType.FF);
40
+ const outsideUnion = new UnionIntervalNode([
41
+ new IntervalNode(MinusInfinityNode, roots[0], ineq.isStrict ? ClosureType.OO : ClosureType.OF),
42
+ new IntervalNode(roots[1], PlusInfinityNode, ineq.isStrict ? ClosureType.OO : ClosureType.FO),
43
+ ]);
44
+ const tree = ineq.isSup
45
+ ? aPositive
46
+ ? outsideUnion
47
+ : insideInterval
48
+ : aPositive
49
+ ? insideInterval
50
+ : outsideUnion;
51
+ return new InequationSolutionNode(tree);
52
+ },
53
+ };
54
+ const reuseFirstDegreeInequationsType3 = {
55
+ getAnswerNode: (identifiers, opts) => {
56
+ const isInterval = opts?.inequationSolutionFormat === "Intervalle (S = [a;b])";
57
+ const { ineqType, a, b, c, d, coeff } = identifiers;
58
+ const affine1 = new Affine(a, b);
59
+ const affine2 = new Affine(c, d);
60
+ const result = new Rational(affine2.b - affine1.b, affine1.a - affine2.a)
61
+ .simplify()
62
+ .toTree();
63
+ const invIneqType = new InequationSymbol(ineqType).reversed();
64
+ const ineq = new InequationNode(["x".toTree(), result], coeff > 0 ? ineqType : invIneqType);
65
+ const node = isInterval
66
+ ? new InequationSolutionNode(ineq.toInterval())
67
+ : ineq;
68
+ return node;
69
+ },
70
+ };
71
+ const texXDomain = `\\mathbb{R}`;
72
+ const intervalbbR = new IntervalNode(MinusInfinityNode, PlusInfinityNode, ClosureType.OO);
73
+ const texbbR = intervalbbR.toTex();
74
+ const createNodeForCoeffs = (coeffs) => {
75
+ //because Error: n-th coeff must be not null at new Polynomial
76
+ const [a, b, c] = coeffs.toReversed();
77
+ if (a !== 0) {
78
+ return new Polynomial(coeffs).toTree();
79
+ }
80
+ else if (b !== 0) {
81
+ return AffineConstructor.fromCoeffs(coeffs).toTree();
82
+ }
83
+ else {
84
+ return c.toTree();
85
+ }
86
+ };
87
+ const getStartStatement = (identifiers) => {
88
+ return getStatementNode(identifiers).toTex();
89
+ };
90
+ const getStatementNode = (identifiers) => {
91
+ const { coeffsF, coeffsG, ineqType } = identifiers;
92
+ const [nodeF, nodeG] = [coeffsF, coeffsG].map(createNodeForCoeffs);
93
+ const statementTree = new InequationNode([exp(nodeF), exp(nodeG)], ineqType);
94
+ return statementTree;
95
+ };
96
+ const getInstruction = (identifiers) => {
97
+ return `Résoudre dans $${texXDomain}$ :
98
+
99
+ $$
100
+ ${getStatementNode(identifiers).toTex()}
101
+ $$`;
102
+ };
103
+ const getAnswerNode = (identifiers, opts) => {
104
+ const { inequationSolutionFormat } = opts;
105
+ const { coeffsF, coeffsG, ineqType } = identifiers;
106
+ const [a, b, c] = zip(coeffsF, coeffsG)
107
+ .map(([kF, kG]) => kF - kG)
108
+ .toReversed();
109
+ const isZero = [a, b, c].every((k) => k === 0);
110
+ if (isZero) {
111
+ switch (ineqType) {
112
+ case "<":
113
+ case ">":
114
+ return new EquationSolutionNode(EmptySet);
115
+ case "\\le":
116
+ case "\\ge": {
117
+ const intervalbbR = new IntervalNode(MinusInfinityNode, PlusInfinityNode, ClosureType.OO);
118
+ return new InequationSolutionNode(intervalbbR);
119
+ }
120
+ }
121
+ }
122
+ else {
123
+ if (a !== 0) {
124
+ return reuseSecondDegreeInequation.getAnswerNode({ a, b, c, ineqType });
125
+ }
126
+ else if (b !== 0) {
127
+ const [b, a] = coeffsF;
128
+ const [d, c] = coeffsG;
129
+ return reuseFirstDegreeInequationsType3.getAnswerNode({ a, b, c, d, ineqType, coeff: a - c }, { inequationSolutionFormat });
130
+ }
131
+ else {
132
+ //a==0,b==0,c!==0
133
+ return new EquationSolutionNode(EmptySet);
134
+ }
135
+ }
136
+ };
137
+ const getAnswer = (identifiers, optsIn) => {
138
+ const opts = optsIn ?? optsDefault;
139
+ const { coeffsF, coeffsG, ineqType } = identifiers;
140
+ const [a, b, c] = zip(coeffsF, coeffsG)
141
+ .map(([kF, kG]) => kF - kG)
142
+ .toReversed();
143
+ const isCoeffsZero = [a, b, c].every((k) => k === 0);
144
+ if (isCoeffsZero) {
145
+ switch (ineqType) {
146
+ case "<":
147
+ case ">": {
148
+ if (opts.inequationSolutionFormat === "Inégalité (x>a)") {
149
+ return `x\\in\\varnothing`;
150
+ }
151
+ else {
152
+ return `S=\\varnothing`;
153
+ }
154
+ }
155
+ case "\\le":
156
+ case "\\ge": {
157
+ if (opts.inequationSolutionFormat === "Inégalité (x>a)") {
158
+ return `x\\in${texbbR}`;
159
+ }
160
+ else {
161
+ return `S=${texbbR}`;
162
+ }
163
+ }
164
+ }
165
+ }
166
+ else {
167
+ return getAnswerNode(identifiers, opts).toTex();
168
+ }
169
+ };
170
+ const getHint = () => {
171
+ return `Essaye de transformer l'équation originale en une équation du type $e^{h(x)}=1$, puis résous cette équation.`;
172
+ };
173
+ const getCorrection = (identifiers, optsIn) => {
174
+ const opts = optsIn ?? optsDefault;
175
+ const { coeffsF, coeffsG, ineqType } = identifiers;
176
+ const [nodeF, nodeG] = [coeffsF, coeffsG].map(createNodeForCoeffs);
177
+ //that would be nice, but:
178
+ //Error: should-throw Too many iterations in simplify
179
+ // const nodeFMinusGSimplified = substract(nodeF, nodeG).simplify({
180
+ // towardsDistribute: true,
181
+ // });
182
+ //workaround:
183
+ const coeffsFMinusG = zip(coeffsF, coeffsG).map(([kF, kG]) => kF - kG);
184
+ const nodeFMinusGSimplified = createNodeForCoeffs(coeffsFMinusG);
185
+ return `On va transformer l'équation originale pour se ramener à quelque chose que l'on connaît mieux.
186
+
187
+ L'ensemble image de la fonction exponentielle est $\\mathbb{R}^{+*}$ donc on peut tout diviser par le membre de droite sans changer le sens de l'inégalité.
188
+
189
+ ${alignTex([
190
+ ["", "", getStatementNode(identifiers).toTex()],
191
+ [
192
+ "",
193
+ `\\Leftrightarrow`,
194
+ new InequationNode([frac(exp(nodeF), exp(nodeG)), (1).toTree()], ineqType).toTex(),
195
+ ],
196
+ [
197
+ "",
198
+ `\\Leftrightarrow`,
199
+ new InequationNode([exp(substract(nodeF, nodeG)), (1).toTree()], ineqType).toTex(),
200
+ ],
201
+ [
202
+ "",
203
+ `\\Leftrightarrow`,
204
+ new InequationNode([exp(nodeFMinusGSimplified), (1).toTree()], ineqType).toTex(),
205
+ ],
206
+ [
207
+ "",
208
+ `\\Leftrightarrow`,
209
+ new InequationNode([nodeFMinusGSimplified, (0).toTree()], ineqType).toTex(),
210
+ ],
211
+ ])}
212
+
213
+ On résout l'inéquation :
214
+
215
+ $$
216
+ ${getAnswer(identifiers, opts)}
217
+ $$
218
+
219
+ `;
220
+ };
221
+ const getPropositions = (n, { answer, ...identifiers }, optsIn) => {
222
+ const opts = optsIn ?? optsDefault;
223
+ const propositions = [];
224
+ addValidProp(propositions, answer);
225
+ const { coeffsF, coeffsG, ineqType } = identifiers;
226
+ //random coeff signs for f and g
227
+ {
228
+ function getArrSign() {
229
+ return getCartesiansProducts([...Array(3).keys()].map(() => [-1, 1])).filter((arrS) => !arrS.every((s) => s === 1));
230
+ }
231
+ getCartesiansProducts([getArrSign(), getArrSign()]).forEach(([arrSignF, arrSignG]) => {
232
+ try {
233
+ const coeffsFWrong = zip(arrSignF, coeffsF).map(([s, k]) => s * k);
234
+ const coeffsGWrong = zip(arrSignG, coeffsG).map(([s, k]) => s * k);
235
+ const identifiersWrong = {
236
+ coeffsF: coeffsFWrong,
237
+ coeffsG: coeffsGWrong,
238
+ ineqType,
239
+ };
240
+ const texWrong = getAnswer(identifiersWrong, opts);
241
+ tryToAddWrongProp(propositions, texWrong);
242
+ }
243
+ catch (_) {
244
+ (() => { })();
245
+ }
246
+ });
247
+ }
248
+ //random ineqType
249
+ {
250
+ ["<", ">", "\\le", "\\ge"].forEach((inequalitySymbol) => {
251
+ try {
252
+ const identifiersWrong = {
253
+ coeffsF,
254
+ coeffsG,
255
+ ineqType: inequalitySymbol,
256
+ };
257
+ const texWrong = getAnswer(identifiersWrong, opts);
258
+ tryToAddWrongProp(propositions, texWrong);
259
+ }
260
+ catch (_) {
261
+ (() => { })();
262
+ }
263
+ });
264
+ }
265
+ const isInterval = opts?.inequationSolutionFormat === "Intervalle (S = [a;b])";
266
+ propWhile(propositions, n, () => {
267
+ const wrongRes = randint(-10, 11).toTree();
268
+ const wrongSymb = coinFlip()
269
+ ? ineqType
270
+ : InequationSymbolConstructor.reverse(ineqType);
271
+ const wrongIneq = new InequationNode(["x".toTree(), wrongRes], wrongSymb);
272
+ tryToAddWrongProp(propositions, isInterval
273
+ ? new InequationSolutionNode(wrongIneq.toInterval()).toTex()
274
+ : wrongIneq.toTex());
275
+ });
276
+ return shuffleProps(propositions, n);
277
+ };
278
+ const getKeys = (_identifiers, opts) => {
279
+ const isInterval = opts?.inequationSolutionFormat === "Intervalle (S = [a;b])";
280
+ if (isInterval)
281
+ return [
282
+ "S",
283
+ "equal",
284
+ "lbracket",
285
+ "semicolon",
286
+ "rbracket",
287
+ "infty",
288
+ "varnothing",
289
+ ];
290
+ return [
291
+ "x",
292
+ "inf",
293
+ "sup",
294
+ "leq",
295
+ "geq",
296
+ "belongs",
297
+ "varnothing",
298
+ "lbracket",
299
+ "semicolon",
300
+ "rbracket",
301
+ "infty",
302
+ ];
303
+ };
304
+ const isAnswerValid = (ans, { answer, ...identifiers }, opts) => {
305
+ if (ans === answer) {
306
+ return true;
307
+ }
308
+ const { coeffsF, coeffsG } = identifiers;
309
+ const [a, _b, _c] = zip(coeffsF, coeffsG)
310
+ .map(([kF, kG]) => kF - kG)
311
+ .toReversed();
312
+ if (a !== 0) {
313
+ try {
314
+ const isInterval = opts?.inequationSolutionFormat === "Intervalle (S = [a;b])";
315
+ if (isInterval) {
316
+ const parsed = unionIntervalParser(ans.replaceAll("S", "").replaceAll("=", ""));
317
+ if (!parsed)
318
+ return false;
319
+ return "S=\\ " + parsed.simplify().toTex() === answer;
320
+ }
321
+ else {
322
+ const parsed = inequationParser(ans);
323
+ if (!parsed)
324
+ return false;
325
+ return parsed.simplify({ decimalToFractions: true }).toTex() === answer;
326
+ }
327
+ }
328
+ catch (err) {
329
+ return handleVEAError(err);
330
+ }
331
+ }
332
+ else {
333
+ try {
334
+ const isInterval = opts?.inequationSolutionFormat === "Intervalle (S = [a;b])";
335
+ if (isInterval) {
336
+ const parsed = intervalParser(ans.replaceAll("S", "").replaceAll("=", ""));
337
+ if (!parsed)
338
+ return false;
339
+ return ("S=\\ " + parsed.simplify({ decimalToFractions: true }).toTex() ===
340
+ answer);
341
+ }
342
+ else {
343
+ const parsed = inequationParser(ans);
344
+ if (!parsed)
345
+ return false;
346
+ return parsed.simplify({ decimalToFractions: true }).toTex() === answer;
347
+ }
348
+ }
349
+ catch (err) {
350
+ return handleVEAError(err);
351
+ }
352
+ }
353
+ };
354
+ const getExpOfFEqualsExpOfGInequationQuestion = (optsIn) => {
355
+ const opts = optsIn ?? optsDefault;
356
+ const { functionTypeF, functionTypeG } = opts;
357
+ function degreeForFunctionType(functionType) {
358
+ switch (functionType) {
359
+ case "constante":
360
+ return 0;
361
+ case "degré $1$":
362
+ return 1;
363
+ case "degré $2$":
364
+ return 2;
365
+ default:
366
+ throw new Error("Unsupported functionType: " + functionType);
367
+ }
368
+ }
369
+ const [degreeF, degreeG] = [functionTypeF, functionTypeG].map(degreeForFunctionType);
370
+ function createCoeffs(degree) {
371
+ const c = randint(-10, 11, [0]);
372
+ const b = degree >= 1 ? randint(-10, 11, [0]) : 0;
373
+ const a = degree >= 2 ? randint(-10, 11, [0]) : 0;
374
+ return [c, b, a];
375
+ }
376
+ const [coeffsF, coeffsG] = [degreeF, degreeG].map(createCoeffs);
377
+ const ineqType = InequationSymbolConstructor.randomSymbol();
378
+ const identifiers = { coeffsF, coeffsG, ineqType };
379
+ return getQuestionFromIdentifiers(identifiers, opts);
380
+ };
381
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
382
+ const question = {
383
+ instruction: getInstruction(identifiers, opts),
384
+ hint: getHint(identifiers, opts),
385
+ correction: getCorrection(identifiers, opts),
386
+ startStatement: getStartStatement(identifiers, opts),
387
+ answer: getAnswer(identifiers, opts),
388
+ keys: getKeys(identifiers, opts),
389
+ answerFormat: "tex",
390
+ identifiers,
391
+ };
392
+ return question;
393
+ };
394
+ const optsDefault = {
395
+ inequationSolutionFormat: inequationSolutionFormat.defaultValue,
396
+ functionTypeF: "degré $1$",
397
+ functionTypeG: "degré $1$",
398
+ };
399
+ const options = [
400
+ inequationSolutionFormat,
401
+ {
402
+ id: "functionTypeF",
403
+ label: "Fonction $f$ :",
404
+ target: GeneratorOptionTarget.generation,
405
+ type: GeneratorOptionType.select,
406
+ values: ["constante", "degré $1$", "degré $2$"],
407
+ defaultValue: optsDefault.functionTypeF,
408
+ },
409
+ {
410
+ id: "functionTypeG",
411
+ label: "Fonction $g$ :",
412
+ target: GeneratorOptionTarget.generation,
413
+ type: GeneratorOptionType.select,
414
+ values: ["constante", "degré $1$", "degré $2$"],
415
+ defaultValue: optsDefault.functionTypeG,
416
+ },
417
+ ];
418
+ export const expOfFEqualsExpOfGInequation = {
419
+ id: "expOfFEqualsExpOfGInequation",
420
+ connector: "\\iff",
421
+ label: "Résoudre une inéquation du type $e^{f(x)}<e^{g(x)}$",
422
+ isSingleStep: true,
423
+ generator: (nb, opts) => getDistinctQuestions(() => getExpOfFEqualsExpOfGInequationQuestion(opts), nb),
424
+ qcmTimer: 60,
425
+ freeTimer: 60,
426
+ getPropositions,
427
+ isAnswerValid,
428
+ subject: "Mathématiques",
429
+ hasHintAndCorrection: true,
430
+ getAnswer,
431
+ getInstruction,
432
+ getCorrection,
433
+ getHint,
434
+ getStartStatement,
435
+ getQuestionFromIdentifiers,
436
+ options,
437
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./expOfFEqualsExpOfGInequation.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/calculLitteral/inequations/exp/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./expOfFEqualsExpOfGInequation.js";