math-exercises 3.0.177 → 3.0.179

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 (255) hide show
  1. package/lib/exercises/math/derivation/derivative/derivativeEquationSolving1.d.ts +14 -0
  2. package/lib/exercises/math/derivation/derivative/derivativeEquationSolving1.d.ts.map +1 -0
  3. package/lib/exercises/math/derivation/derivative/derivativeEquationSolving1.js +283 -0
  4. package/lib/exercises/math/derivation/derivative/derivativeEquationSolving3.d.ts +15 -0
  5. package/lib/exercises/math/derivation/derivative/derivativeEquationSolving3.d.ts.map +1 -0
  6. package/lib/exercises/math/derivation/derivative/derivativeEquationSolving3.js +296 -0
  7. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.js +3 -3
  8. package/lib/exercises/math/derivation/derivative/exp/expDerivativeProductFExp.d.ts +14 -0
  9. package/lib/exercises/math/derivation/derivative/exp/expDerivativeProductFExp.d.ts.map +1 -0
  10. package/lib/exercises/math/derivation/derivative/exp/expDerivativeProductFExp.js +346 -0
  11. package/lib/exercises/math/derivation/derivative/exp/expDerivativeQuotientFExp.d.ts +15 -0
  12. package/lib/exercises/math/derivation/derivative/exp/expDerivativeQuotientFExp.d.ts.map +1 -0
  13. package/lib/exercises/math/derivation/derivative/exp/expDerivativeQuotientFExp.js +435 -0
  14. package/lib/exercises/math/derivation/derivative/valueDerivativeFromFunctionExpression.d.ts +13 -0
  15. package/lib/exercises/math/derivation/derivative/valueDerivativeFromFunctionExpression.d.ts.map +1 -0
  16. package/lib/exercises/math/derivation/derivative/valueDerivativeFromFunctionExpression.js +326 -0
  17. package/lib/exercises/math/derivation/derivativeNumber/signOfDerivativeNumberFromFunctionCurve.d.ts +14 -0
  18. package/lib/exercises/math/derivation/derivativeNumber/signOfDerivativeNumberFromFunctionCurve.d.ts.map +1 -0
  19. package/lib/exercises/math/derivation/derivativeNumber/signOfDerivativeNumberFromFunctionCurve.js +181 -0
  20. package/lib/exercises/math/derivation/derivativeNumber/valueTableImageAndDerivativeFromFunctionExpression.d.ts +10 -0
  21. package/lib/exercises/math/derivation/derivativeNumber/valueTableImageAndDerivativeFromFunctionExpression.d.ts.map +1 -0
  22. package/lib/exercises/math/derivation/derivativeNumber/valueTableImageAndDerivativeFromFunctionExpression.js +272 -0
  23. package/lib/exercises/math/derivation/problems/index.d.ts +5 -0
  24. package/lib/exercises/math/derivation/problems/index.d.ts.map +1 -0
  25. package/lib/exercises/math/derivation/problems/index.js +4 -0
  26. package/lib/exercises/math/derivation/problems/problemMaximizeBoxVolumeFindX.d.ts +8 -0
  27. package/lib/exercises/math/derivation/problems/problemMaximizeBoxVolumeFindX.d.ts.map +1 -0
  28. package/lib/exercises/math/derivation/problems/problemMaximizeBoxVolumeFindX.js +171 -0
  29. package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.d.ts +15 -0
  30. package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.d.ts.map +1 -0
  31. package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.js +328 -0
  32. package/lib/exercises/math/derivation/problems/problemMovementOnLineFindSpeedAtPoint.d.ts +13 -0
  33. package/lib/exercises/math/derivation/problems/problemMovementOnLineFindSpeedAtPoint.d.ts.map +1 -0
  34. package/lib/exercises/math/derivation/problems/problemMovementOnLineFindSpeedAtPoint.js +275 -0
  35. package/lib/exercises/math/derivation/problems/problemProjectileHeightFindAbscissa.d.ts +8 -0
  36. package/lib/exercises/math/derivation/problems/problemProjectileHeightFindAbscissa.d.ts.map +1 -0
  37. package/lib/exercises/math/derivation/problems/problemProjectileHeightFindAbscissa.js +137 -0
  38. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineY.d.ts +10 -0
  39. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineY.d.ts.map +1 -0
  40. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineY.js +478 -0
  41. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineYAndSlope.d.ts +10 -0
  42. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineYAndSlope.d.ts.map +1 -0
  43. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingLineYAndSlope.js +499 -0
  44. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingPoint.d.ts +10 -0
  45. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingPoint.d.ts.map +1 -0
  46. package/lib/exercises/math/derivation/tangent/derivativeEquationSolvingByManipulatingPoint.js +240 -0
  47. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingBuildingTangent.d.ts +12 -0
  48. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingBuildingTangent.d.ts.map +1 -0
  49. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingBuildingTangent.js +436 -0
  50. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingPoint.d.ts +12 -0
  51. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingPoint.d.ts.map +1 -0
  52. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingPoint.js +219 -0
  53. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingSecant.d.ts +13 -0
  54. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingSecant.d.ts.map +1 -0
  55. package/lib/exercises/math/derivation/tangent/derivativeReadingByManipulatingSecant.js +273 -0
  56. package/lib/exercises/math/derivation/tangent/placePointsOfDerivativeFromGraph.d.ts +18 -0
  57. package/lib/exercises/math/derivation/tangent/placePointsOfDerivativeFromGraph.d.ts.map +1 -0
  58. package/lib/exercises/math/derivation/tangent/placePointsOfDerivativeFromGraph.js +295 -0
  59. package/lib/exercises/math/derivation/tangent/tangentEquationFromFunctionExpression.d.ts +13 -0
  60. package/lib/exercises/math/derivation/tangent/tangentEquationFromFunctionExpression.d.ts.map +1 -0
  61. package/lib/exercises/math/derivation/tangent/tangentEquationFromFunctionExpression.js +388 -0
  62. package/lib/exercises/math/derivation/tangent/tangentEquationFromGraph.d.ts +9 -0
  63. package/lib/exercises/math/derivation/tangent/tangentEquationFromGraph.d.ts.map +1 -0
  64. package/lib/exercises/math/derivation/tangent/tangentEquationFromGraph.js +308 -0
  65. package/lib/exercises/math/derivation/variations/findAbscissaOfExtremaFromFunctionExpression.d.ts +14 -0
  66. package/lib/exercises/math/derivation/variations/findAbscissaOfExtremaFromFunctionExpression.d.ts.map +1 -0
  67. package/lib/exercises/math/derivation/variations/findAbscissaOfExtremaFromFunctionExpression.js +439 -0
  68. package/lib/exercises/math/derivation/variations/findExtremaFromFunctionExpression.d.ts +14 -0
  69. package/lib/exercises/math/derivation/variations/findExtremaFromFunctionExpression.d.ts.map +1 -0
  70. package/lib/exercises/math/derivation/variations/findExtremaFromFunctionExpression.js +547 -0
  71. package/lib/exercises/math/derivation/variations/plausibleDerivativeGraphFromFunctionGraphByManipulatingPolynomial.d.ts +15 -0
  72. package/lib/exercises/math/derivation/variations/plausibleDerivativeGraphFromFunctionGraphByManipulatingPolynomial.d.ts.map +1 -0
  73. package/lib/exercises/math/derivation/variations/plausibleDerivativeGraphFromFunctionGraphByManipulatingPolynomial.js +537 -0
  74. package/lib/exercises/math/derivation/variations/plausibleFunctionGraphFromDerivativeGraphByManipulatingPolynomial.d.ts +15 -0
  75. package/lib/exercises/math/derivation/variations/plausibleFunctionGraphFromDerivativeGraphByManipulatingPolynomial.d.ts.map +1 -0
  76. package/lib/exercises/math/derivation/variations/plausibleFunctionGraphFromDerivativeGraphByManipulatingPolynomial.js +639 -0
  77. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.js +1 -1
  78. package/lib/exercises/math/derivation/variations/signVarTableFromFunctionExpression.d.ts +14 -0
  79. package/lib/exercises/math/derivation/variations/signVarTableFromFunctionExpression.d.ts.map +1 -0
  80. package/lib/exercises/math/derivation/variations/signVarTableFromFunctionExpression.js +530 -0
  81. package/lib/exercises/math/derivation/variations/signVarTableProductFExp.d.ts +10 -0
  82. package/lib/exercises/math/derivation/variations/signVarTableProductFExp.d.ts.map +1 -0
  83. package/lib/exercises/math/derivation/variations/signVarTableProductFExp.js +451 -0
  84. package/lib/exercises/math/derivation/variations/signVarTableQuotientFExp.d.ts +11 -0
  85. package/lib/exercises/math/derivation/variations/signVarTableQuotientFExp.d.ts.map +1 -0
  86. package/lib/exercises/math/derivation/variations/signVarTableQuotientFExp.js +514 -0
  87. package/lib/exercises/math/functions/composition/index.d.ts +0 -1
  88. package/lib/exercises/math/functions/composition/index.d.ts.map +1 -1
  89. package/lib/exercises/math/functions/composition/index.js +1 -1
  90. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts +0 -1
  91. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts.map +1 -1
  92. package/lib/exercises/math/functions/exponential/algebraic/index.js +1 -1
  93. package/lib/exercises/math/functions/trinoms/sign/index.d.ts +1 -0
  94. package/lib/exercises/math/functions/trinoms/sign/index.d.ts.map +1 -1
  95. package/lib/exercises/math/functions/trinoms/sign/index.js +1 -0
  96. package/lib/exercises/math/functions/trinoms/sign/signOfProductOfAffineAndTrinom.d.ts +8 -0
  97. package/lib/exercises/math/functions/trinoms/sign/signOfProductOfAffineAndTrinom.d.ts.map +1 -0
  98. package/lib/exercises/math/functions/trinoms/sign/signOfProductOfAffineAndTrinom.js +226 -0
  99. package/lib/exercises/math/geometry/angles/parallelogramFourthAngle.d.ts.map +1 -1
  100. package/lib/exercises/math/geometry/angles/parallelogramFourthAngle.js +10 -10
  101. package/lib/exercises/math/geometry/quadrilaterals/parallelogramAngles.js +8 -8
  102. package/lib/exercises/math/geometry/triangles/similar/isSimilarTrianglesWithAngles.js +6 -6
  103. package/lib/exercises/math/geometry/triangles/triangleThirdAngleValue.js +8 -8
  104. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.js +1 -1
  105. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.js +2 -2
  106. package/lib/exercises/math/geometry/vectors/scalarProduct/angleFromScalarProduct.js +2 -2
  107. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOrthoInSquare.d.ts.map +1 -1
  108. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOrthoInSquare.js +32 -17
  109. package/lib/exercises/math/probaStat/conditional/conditionalProbaFromTableWithContext.d.ts +13 -0
  110. package/lib/exercises/math/probaStat/conditional/conditionalProbaFromTableWithContext.d.ts.map +1 -0
  111. package/lib/exercises/math/probaStat/conditional/conditionalProbaFromTableWithContext.js +195 -0
  112. package/lib/exercises/math/probaStat/conditional/conditionalProbaWriteFromFrench.d.ts +9 -0
  113. package/lib/exercises/math/probaStat/conditional/conditionalProbaWriteFromFrench.d.ts.map +1 -0
  114. package/lib/exercises/math/probaStat/conditional/conditionalProbaWriteFromFrench.js +220 -0
  115. package/lib/exercises/math/probaStat/conditional/conditionalProbability.d.ts +15 -0
  116. package/lib/exercises/math/probaStat/conditional/conditionalProbability.d.ts.map +1 -0
  117. package/lib/exercises/math/probaStat/conditional/conditionalProbability.js +332 -0
  118. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.d.ts +8 -0
  119. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.d.ts.map +1 -0
  120. package/lib/exercises/math/probaStat/conditional/fillTableConditionalProbabilitySituation.js +222 -0
  121. package/lib/exercises/math/probaStat/conditional/index.d.ts +5 -0
  122. package/lib/exercises/math/probaStat/conditional/index.d.ts.map +1 -0
  123. package/lib/exercises/math/probaStat/conditional/index.js +4 -0
  124. package/lib/exercises/math/probaStat/index.d.ts +1 -2
  125. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  126. package/lib/exercises/math/probaStat/index.js +1 -2
  127. package/lib/exercises/math/probaStat/probaFromTableWithContext.d.ts +1 -0
  128. package/lib/exercises/math/probaStat/probaFromTableWithContext.d.ts.map +1 -1
  129. package/lib/exercises/math/probaStat/probaFromTableWithContext.js +26 -199
  130. package/lib/exercises/math/probaStat/randomVariable/index.d.ts.map +1 -1
  131. package/lib/exercises/math/probaStat/randomVariable/index.js +1 -0
  132. package/lib/exercises/math/probaStat/randomVariable/randomVariableSituationProbabilityLaw.d.ts.map +1 -1
  133. package/lib/exercises/math/probaStat/randomVariable/randomVariableSituationProbabilityLaw.js +6 -2
  134. package/lib/exercises/math/probaStat/randomVariable/utils/randomVariableSituations.d.ts.map +1 -1
  135. package/lib/exercises/math/probaStat/randomVariable/utils/randomVariableSituations.js +6 -5
  136. package/lib/exercises/math/probaStat/trees/buildTreeFromSituation.d.ts.map +1 -1
  137. package/lib/exercises/math/probaStat/trees/buildTreeFromSituation.js +4 -27
  138. package/lib/exercises/math/probaStat/twoEventsSituations.d.ts +29 -0
  139. package/lib/exercises/math/probaStat/twoEventsSituations.d.ts.map +1 -0
  140. package/lib/exercises/math/probaStat/twoEventsSituations.js +145 -0
  141. package/lib/exercises/math/python/index.d.ts +1 -0
  142. package/lib/exercises/math/python/index.d.ts.map +1 -1
  143. package/lib/exercises/math/python/index.js +1 -0
  144. package/lib/exercises/math/python/sequences/pySequenceThresholdInstructionCompletion.d.ts.map +1 -1
  145. package/lib/exercises/math/python/sequences/pySequenceThresholdInstructionCompletion.js +11 -8
  146. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFromTwoTerms.d.ts.map +1 -1
  147. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFromTwoTerms.js +4 -3
  148. package/lib/exercises/math/sequences/arithmetic/index.d.ts +4 -3
  149. package/lib/exercises/math/sequences/arithmetic/index.d.ts.map +1 -1
  150. package/lib/exercises/math/sequences/arithmetic/index.js +4 -3
  151. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindExplicitFormulaFromSituation.d.ts.map +1 -1
  152. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindExplicitFormulaFromSituation.js +3 -2
  153. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindRankFromSituation.d.ts.map +1 -1
  154. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindRankFromSituation.js +8 -6
  155. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindThresholdFromSituation.d.ts.map +1 -1
  156. package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindThresholdFromSituation.js +6 -5
  157. package/lib/exercises/math/sequences/arithmetic/situations/index.d.ts +0 -2
  158. package/lib/exercises/math/sequences/arithmetic/situations/index.d.ts.map +1 -1
  159. package/lib/exercises/math/sequences/arithmetic/situations/index.js +2 -2
  160. package/lib/exercises/math/sequences/arithmetic/sum/arithmeticComputeSumWithDots.d.ts +1 -0
  161. package/lib/exercises/math/sequences/arithmetic/sum/arithmeticComputeSumWithDots.d.ts.map +1 -1
  162. package/lib/exercises/math/sequences/arithmetic/sum/arithmeticComputeSumWithDots.js +65 -14
  163. package/lib/exercises/math/sequences/arithmetic/sum/index.d.ts +0 -1
  164. package/lib/exercises/math/sequences/arithmetic/sum/index.d.ts.map +1 -1
  165. package/lib/exercises/math/sequences/arithmetic/sum/index.js +1 -1
  166. package/lib/exercises/math/sequences/explicitFormulaUsage.d.ts +4 -1
  167. package/lib/exercises/math/sequences/explicitFormulaUsage.d.ts.map +1 -1
  168. package/lib/exercises/math/sequences/explicitFormulaUsage.js +47 -7
  169. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.d.ts +14 -0
  170. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.d.ts.map +1 -0
  171. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoConsecutiveTerms.js +291 -0
  172. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoTerms.d.ts.map +1 -1
  173. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFromTwoTerms.js +4 -3
  174. package/lib/exercises/math/sequences/geometric/geometricFindRandomTermFromTwoConsecutiveTerms.d.ts +15 -0
  175. package/lib/exercises/math/sequences/geometric/geometricFindRandomTermFromTwoConsecutiveTerms.d.ts.map +1 -0
  176. package/lib/exercises/math/sequences/geometric/geometricFindRandomTermFromTwoConsecutiveTerms.js +249 -0
  177. package/lib/exercises/math/sequences/geometric/geometricFindRandomTermFromTwoTerms.js +2 -2
  178. package/lib/exercises/math/sequences/geometric/index.d.ts +3 -2
  179. package/lib/exercises/math/sequences/geometric/index.d.ts.map +1 -1
  180. package/lib/exercises/math/sequences/geometric/index.js +6 -2
  181. package/lib/exercises/math/sequences/geometric/situations/geometricFindExplicitFormulaFromSituation.d.ts.map +1 -1
  182. package/lib/exercises/math/sequences/geometric/situations/geometricFindExplicitFormulaFromSituation.js +3 -2
  183. package/lib/exercises/math/sequences/geometric/situations/geometricFindTermFromSituation.js +1 -1
  184. package/lib/exercises/math/sequences/geometric/situations/index.d.ts +0 -1
  185. package/lib/exercises/math/sequences/geometric/situations/index.d.ts.map +1 -1
  186. package/lib/exercises/math/sequences/geometric/situations/index.js +1 -1
  187. package/lib/exercises/math/sequences/geometric/sum/geometricComputeSumWithDots.js +2 -2
  188. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.js +2 -2
  189. package/lib/exercises/math/sequences/index.d.ts +1 -0
  190. package/lib/exercises/math/sequences/index.d.ts.map +1 -1
  191. package/lib/exercises/math/sequences/index.js +1 -0
  192. package/lib/exercises/math/sequences/recurrenceFormulaUsage.d.ts +5 -1
  193. package/lib/exercises/math/sequences/recurrenceFormulaUsage.d.ts.map +1 -1
  194. package/lib/exercises/math/sequences/recurrenceFormulaUsage.js +89 -9
  195. package/lib/exercises/math/sequences/seqArithmGeom/seqArithmGeomRecurrenceFormulaUsage.d.ts.map +1 -1
  196. package/lib/exercises/math/sequences/seqArithmGeom/seqArithmGeomRecurrenceFormulaUsage.js +5 -9
  197. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.js +1 -1
  198. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts.map +1 -1
  199. package/lib/exercises/math/trigonometry/circle/associatePoint.js +55 -6
  200. package/lib/exercises/math/trigonometry/circle/selectQuadrantOnTrigoCircle.d.ts.map +1 -1
  201. package/lib/exercises/math/trigonometry/circle/selectQuadrantOnTrigoCircle.js +5 -6
  202. package/lib/exercises/math/trigonometry/functions/associateAngleSimplification.d.ts.map +1 -1
  203. package/lib/exercises/math/trigonometry/functions/associateAngleSimplification.js +1 -3
  204. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.js +2 -2
  205. package/lib/exercises/pc/snellDescartes.js +2 -2
  206. package/lib/exercises/vea/polynomialVEA.d.ts +2 -0
  207. package/lib/exercises/vea/polynomialVEA.d.ts.map +1 -0
  208. package/lib/exercises/vea/polynomialVEA.js +17 -0
  209. package/lib/exercises/vea/valueTableVEA.d.ts +8 -0
  210. package/lib/exercises/vea/valueTableVEA.d.ts.map +1 -0
  211. package/lib/exercises/vea/valueTableVEA.js +12 -0
  212. package/lib/index.d.ts +152 -41
  213. package/lib/index.d.ts.map +1 -1
  214. package/lib/latexTester.d.ts.map +1 -1
  215. package/lib/latexTester.js +9 -6
  216. package/lib/math/polynomials/affine.d.ts +1 -0
  217. package/lib/math/polynomials/affine.d.ts.map +1 -1
  218. package/lib/math/polynomials/affine.js +5 -0
  219. package/lib/math/utils/arithmetic/primeFactors.js +1 -1
  220. package/lib/math/utils/functions/functionComposition.d.ts.map +1 -1
  221. package/lib/math/utils/functions/functionComposition.js +18 -1
  222. package/lib/math/utils/polynomial/polynomialInterpolationUtils.d.ts +19 -0
  223. package/lib/math/utils/polynomial/polynomialInterpolationUtils.d.ts.map +1 -0
  224. package/lib/math/utils/polynomial/polynomialInterpolationUtils.js +53 -0
  225. package/lib/math/utils/polynomial/polynomialUtils.d.ts +37 -0
  226. package/lib/math/utils/polynomial/polynomialUtils.d.ts.map +1 -0
  227. package/lib/math/utils/polynomial/polynomialUtils.js +223 -0
  228. package/lib/math/utils/sequences/situations/seqArithmeticSituations.d.ts +18 -4
  229. package/lib/math/utils/sequences/situations/seqArithmeticSituations.d.ts.map +1 -1
  230. package/lib/math/utils/sequences/situations/seqArithmeticSituations.js +434 -333
  231. package/lib/math/utils/sequences/situations/seqArithmeticUtils.d.ts.map +1 -1
  232. package/lib/math/utils/sequences/situations/seqArithmeticUtils.js +3 -1
  233. package/lib/math/utils/sequences/situations/seqGeometricSituations.d.ts +5 -0
  234. package/lib/math/utils/sequences/situations/seqGeometricSituations.d.ts.map +1 -1
  235. package/lib/math/utils/sequences/situations/seqGeometricSituations.js +58 -25
  236. package/lib/prototypesEnhancement.d.ts +1 -0
  237. package/lib/prototypesEnhancement.d.ts.map +1 -1
  238. package/lib/prototypesEnhancement.js +3 -0
  239. package/lib/tests/pdfs/mdCodeToLatex.d.ts.map +1 -1
  240. package/lib/tests/pdfs/mdCodeToLatex.js +8 -15
  241. package/lib/tests/questionTest.d.ts.map +1 -1
  242. package/lib/tests/questionTest.js +6 -3
  243. package/lib/tree/nodes/geometry/degree.js +1 -1
  244. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  245. package/lib/tree/nodes/operators/multiplyNode.js +1 -1
  246. package/lib/tree/nodes/operators/substractNode.d.ts.map +1 -1
  247. package/lib/tree/nodes/operators/substractNode.js +2 -1
  248. package/lib/tree/parsers/degreeParser.js +2 -2
  249. package/lib/tree/utilities/nodeUtils.d.ts +6 -0
  250. package/lib/tree/utilities/nodeUtils.d.ts.map +1 -0
  251. package/lib/tree/utilities/nodeUtils.js +24 -0
  252. package/lib/utils/strings/prependArticle.d.ts +2 -0
  253. package/lib/utils/strings/prependArticle.d.ts.map +1 -0
  254. package/lib/utils/strings/prependArticle.js +1 -0
  255. package/package.json +1 -1
@@ -0,0 +1,530 @@
1
+ import { GeneratorOptionTarget, GeneratorOptionType, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { varSignTableVEA } from "../../../../exercises/vea/varSignTableVEA.js";
4
+ import { dividersOf } from "../../../../math/utils/arithmetic/dividersOf.js";
5
+ import { nodeBySubstitutingVar } from "../../../../math/utils/functions/functionComposition.js";
6
+ import { createNodeFPolynomialFromCoeffs, getAnswerStuffSolveSecondDegreePolynomial, getTexSolveSecondDegreeEquation, } from "../../../../math/utils/polynomial/polynomialUtils.js";
7
+ import { randint } from "../../../../math/utils/random/randint.js";
8
+ import { NodeConstructor, } from "../../../../tree/nodes/nodeConstructor.js";
9
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
10
+ import { frac, isFractionNode, } from "../../../../tree/nodes/operators/fractionNode.js";
11
+ import { NodeUtils } from "../../../../tree/utilities/nodeUtils.js";
12
+ import { probaFlip } from "../../../../utils/alea/probaFlip.js";
13
+ import { random } from "../../../../utils/alea/random.js";
14
+ import { zip } from "../../../../utils/arrays/arrayZip.js";
15
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
16
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
17
+ const getNodeFForTypeF = (typeF, typeRoots) => {
18
+ const isIntegerRoots = typeRoots === "entières";
19
+ switch (typeF) {
20
+ case "polynôme (degré $2$)": {
21
+ //f(x)=ax^2+bx+c
22
+ //f'(x)=2ax+b
23
+ //f'(x)=0 <=> x = -b/2a
24
+ if (isIntegerRoots) {
25
+ function getNiceBA() {
26
+ const a = randint(-10, 11, [0]);
27
+ const x = randint(-10, 11, [0]);
28
+ const b = x * (2 * a);
29
+ return [b, a];
30
+ }
31
+ const [b, a] = getNiceBA();
32
+ const [nodeB, nodeA] = [b, a].map((v) => v.toTree());
33
+ const nodeC = randint(-10, 11, [0]).toTree();
34
+ const nodeF = createNodeFPolynomialFromCoeffs([nodeC, nodeB, nodeA]);
35
+ return nodeF;
36
+ }
37
+ else {
38
+ const nodeA = randint(-10, 11, [0]).toTree();
39
+ const nodeB = randint(-10, 11, [0]).toTree();
40
+ const nodeC = randint(-10, 11, [0]).toTree();
41
+ const nodeF = createNodeFPolynomialFromCoeffs([nodeC, nodeB, nodeA]);
42
+ return nodeF;
43
+ }
44
+ }
45
+ case "polynôme (degré $3$)": {
46
+ //3ax^2+2bx+c=0
47
+ //delta = (2b)²-4(3a)(c) = 4b^2 - 12ac = 4(b^2 - 3ac)
48
+ //=> smooth if (b^2 - 3ac) = n^2
49
+ // (b^2 - n^2) % 3 = 0
50
+ function getNiceCBA() {
51
+ let [c, b, a] = [];
52
+ let isValid = false;
53
+ let counter = -1;
54
+ while (!isValid && counter < 1000) {
55
+ counter++;
56
+ b = randint(10, 100);
57
+ const n = probaFlip(0.95) ? randint(1, b) : 0;
58
+ const b2Minusn2 = b * b - n * n;
59
+ isValid = b2Minusn2 % 3 === 0;
60
+ if (isValid) {
61
+ const ac = b2Minusn2 / 3;
62
+ const arrDivisors = dividersOf(ac);
63
+ a = random(arrDivisors);
64
+ c = ac / a;
65
+ //delta = 4n^2 => sqrt(delta) = 2n
66
+ const x1 = (-(2 * b) - 2 * n) / (2 * (3 * a));
67
+ const x2 = (-(2 * b) + 2 * n) / (2 * (3 * a));
68
+ if (isIntegerRoots) {
69
+ isValid = Number.isInteger(x1) && Number.isInteger(x2);
70
+ }
71
+ }
72
+ }
73
+ if (!isValid) {
74
+ [c, b, a] = [1, 3, 3];
75
+ }
76
+ return [c, b, a];
77
+ }
78
+ const [c, b, a] = getNiceCBA();
79
+ const [nodeC, nodeB, nodeA] = [c, b, a].map((v) => v.toTree());
80
+ const nodeD = randint(-10, 10, [0]).toTree();
81
+ const nodeF = createNodeFPolynomialFromCoeffs([
82
+ nodeD,
83
+ nodeC,
84
+ nodeB,
85
+ nodeA,
86
+ ]);
87
+ return nodeF;
88
+ }
89
+ case "$\\frac{dx+m}{ax^2+bx+c}$": {
90
+ //f(x)=(ax^2+bx+c)/(dx+m)
91
+ //f'(x) = ((2ax+b)(dx+m)-(ax^2+bx+c)d)/((dx+m)^2)
92
+ //f'(x) = 0 <=>
93
+ //(2ad)x^2+(2am+bd)x+(bm)-(ad)x^2-(bd)x -(cd) = 0
94
+ //(ad)x^2+(2am)x+(bm-cd)=0
95
+ //delta = (2am)^2 - 4(ad)(bm-cd)
96
+ //=> smooth if bm-cd = 0
97
+ function getNiceMDCBA() {
98
+ let [m, d, c, b, a] = [];
99
+ let isValid = false;
100
+ let counter = -1;
101
+ while (!isValid && counter < 1000) {
102
+ counter++;
103
+ b = randint(1, 20);
104
+ m = randint(1, 50);
105
+ const bm = b * m;
106
+ const arrDivisors = dividersOf(bm);
107
+ c = random(arrDivisors);
108
+ d = bm / c;
109
+ if (isIntegerRoots) {
110
+ isValid = Number.isInteger(m / d);
111
+ }
112
+ else {
113
+ isValid = true;
114
+ }
115
+ a = randint(-10, 11, [0]);
116
+ isValid = b * b - 4 * a * c < 0; //ensure no forbidden values
117
+ return [m, d, c, b, a];
118
+ }
119
+ if (!isValid) {
120
+ [m, d, c, b, a] = [19, 19, 2, 2, -8];
121
+ }
122
+ return [m, d, c, b, a];
123
+ }
124
+ const nodeF = (() => {
125
+ let nodeF;
126
+ let isValid = false;
127
+ let counter = -1;
128
+ while (!isValid && counter < 1000) {
129
+ counter++;
130
+ const [m, d, c, b, a] = getNiceMDCBA();
131
+ const [nodeM, nodeD, nodeC, nodeB, nodeA] = [m, d, c, b, a].map((v) => v.toTree());
132
+ const nodeG = createNodeFPolynomialFromCoeffs([nodeC, nodeB, nodeA]);
133
+ const nodeH = createNodeFPolynomialFromCoeffs([nodeM, nodeD]);
134
+ const { arrNodeX: arrNodeRootH } = getAnswerStuffSolveSecondDegreePolynomial(nodeG);
135
+ isValid = arrNodeRootH.every((node) => Number.isInteger(node.evaluate()));
136
+ nodeF = frac(nodeH, nodeG);
137
+ }
138
+ if (!isValid) {
139
+ const [m, d, c, b, a] = [19, 19, 2, 2, -8];
140
+ const [nodeM, nodeD, nodeC, nodeB, nodeA] = [m, d, c, b, a].map((v) => v.toTree());
141
+ const nodeG = createNodeFPolynomialFromCoeffs([nodeC, nodeB, nodeA]);
142
+ const nodeH = createNodeFPolynomialFromCoeffs([nodeM, nodeD]);
143
+ nodeF = frac(nodeH, nodeG);
144
+ }
145
+ return nodeF;
146
+ })();
147
+ return nodeF;
148
+ }
149
+ default:
150
+ throw new Error("Unsupported typeF: " + typeF);
151
+ }
152
+ };
153
+ const getPrettyNode = (node) => {
154
+ if (isFractionNode(node)) {
155
+ const nodeNumSimplified = node.leftChild.simplify({
156
+ towardsDistribute: true,
157
+ forbidFactorize: true,
158
+ });
159
+ const nodeDenSimplified = node.rightChild.simplify();
160
+ return frac(nodeNumSimplified, nodeDenSimplified);
161
+ }
162
+ else {
163
+ return node;
164
+ }
165
+ };
166
+ const getInstruction = (identifiers) => {
167
+ const { nodeIdsF } = identifiers;
168
+ const [nodeF] = [nodeIdsF].map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds));
169
+ const nodeFPretty = getPrettyNode(nodeF);
170
+ return `Soit $f$ la fonction définie sur $\\mathbb{R}$ par :
171
+
172
+ $$
173
+ f(x) = ${nodeFPretty.toTex()}
174
+ $$
175
+
176
+ Dresser le tableau de signes de $f'$ et de variations de $f$.
177
+
178
+ `;
179
+ };
180
+ const getInitTable = (identifiers) => {
181
+ const { arrNodeX } = getAnswerStuff(identifiers);
182
+ const nbExtrema = arrNodeX.length;
183
+ return [
184
+ [
185
+ "$x$",
186
+ "-\\infty",
187
+ ...[...Array(nbExtrema).keys()].flatMap(() => ["\\ ", ""]),
188
+ "\\ ",
189
+ "+\\infty",
190
+ ],
191
+ [
192
+ "$f'(x)$",
193
+ "\\ ",
194
+ ...[...Array(2 * nbExtrema + 1).keys()].map(() => ""),
195
+ "\\ ",
196
+ ],
197
+ [
198
+ "$\\ $",
199
+ "\\ ",
200
+ ...[...Array(2 * nbExtrema + 1).keys()].map(() => "\\ "),
201
+ "\\ ",
202
+ ],
203
+ [
204
+ "$f(x)$",
205
+ "\\ ",
206
+ ...[...Array(2 * nbExtrema + 1).keys()].map(() => ""),
207
+ "\\ ",
208
+ ],
209
+ [
210
+ "$\\ $",
211
+ "\\ ",
212
+ ...[...Array(2 * nbExtrema + 1).keys()].map(() => "\\ "),
213
+ "\\ ",
214
+ ],
215
+ ];
216
+ };
217
+ const getAnswerStuff = (identifiers) => {
218
+ const { nodeIdsF } = identifiers;
219
+ const nodeF = NodeConstructor.fromIdentifiers(nodeIdsF);
220
+ const nodeFPretty = getPrettyNode(nodeF);
221
+ const nodeDerivativeRaw = nodeFPretty.derivative().simplify();
222
+ const nodeDerivativePretty = getPrettyNode(nodeDerivativeRaw);
223
+ const nodePolynomial = (() => {
224
+ if (isFractionNode(nodeDerivativePretty)) {
225
+ return nodeDerivativePretty.leftChild;
226
+ }
227
+ else {
228
+ return nodeDerivativePretty;
229
+ }
230
+ })();
231
+ const { arrNodeX } = getAnswerStuffSolveSecondDegreePolynomial(nodePolynomial);
232
+ const arrNodeValueFunction = arrNodeX.map((nodeX) => nodeBySubstitutingVar(nodeFPretty, nodeX, "x".toTree()).simplify());
233
+ const arrNodeXNonRoot = [
234
+ add(arrNodeX[0], -1),
235
+ ...zip(arrNodeX.slice(0, -1), arrNodeX.slice(1)).map(([nodeX1, nodeX2]) => frac(add(nodeX1, nodeX2), 2)),
236
+ add(arrNodeX[arrNodeX.length - 1], 1),
237
+ ];
238
+ const arrSignOutsideRoots = arrNodeXNonRoot.map((nodeXNonRoot) => nodeDerivativePretty.evaluate({ x: nodeXNonRoot.evaluate() }) > 0 ? +1 : -1);
239
+ return { arrNodeX, arrNodeValueFunction, arrSignOutsideRoots };
240
+ };
241
+ const getAnswerTable = (identifiers) => {
242
+ const { arrNodeX, arrNodeValueFunction, arrSignOutsideRoots } = getAnswerStuff(identifiers);
243
+ // return [
244
+ // ["$x$", "-\\infty", "\\ ", root.toTex(), "\\ ", "+\\infty"],
245
+ // ["$f'(x)$", "\\ ", a > 0 ? "-" : "+", "0", a > 0 ? "+" : "-", "\\ "],
246
+ // ["$\\ $", "\\ ", "\\ ", a < 0 ? img.toTex() : "\\ ", "\\ ", "\\ "],
247
+ // [
248
+ // "$f(x)$",
249
+ // "\\ ",
250
+ // a > 0 ? "\\searrow" : "\\nearrow",
251
+ // "\\ ",
252
+ // a < 0 ? "\\searrow" : "\\nearrow",
253
+ // "\\ ",
254
+ // ],
255
+ // ["$\\ $", "\\ ", "\\ ", a > 0 ? img.toTex() : "\\ ", "\\ ", "\\ "],
256
+ // ];
257
+ return [
258
+ [
259
+ "$x$",
260
+ "-\\infty",
261
+ ...arrNodeX.flatMap((nodeX) => ["\\ ", nodeX.toTex()]),
262
+ "\\ ",
263
+ "+\\infty",
264
+ ],
265
+ [
266
+ "$f'(x)$",
267
+ "\\ ",
268
+ ...arrSignOutsideRoots.flatMap((sign) => [sign > 0 ? "+" : "-", "\\ "]),
269
+ ],
270
+ [
271
+ "$\\ $",
272
+ "\\ ",
273
+ ...zip(arrSignOutsideRoots.slice(0, -1), arrNodeValueFunction).flatMap(([sign, nodeValueFunction]) => [
274
+ "\\ ",
275
+ sign > 0 ? nodeValueFunction.toTex() : "\\ ",
276
+ ]),
277
+ "\\ ",
278
+ "\\ ",
279
+ ],
280
+ [
281
+ "$f(x)$",
282
+ "\\ ",
283
+ ...arrSignOutsideRoots.flatMap((sign) => [
284
+ sign > 0 ? "\\nearrow" : "\\searrow",
285
+ "\\ ",
286
+ ]),
287
+ ],
288
+ [
289
+ "$\\ $",
290
+ "\\ ",
291
+ ...zip(arrSignOutsideRoots.slice(0, -1), arrNodeValueFunction).flatMap(([sign, nodeValueFunction]) => [
292
+ "\\ ",
293
+ sign < 0 ? nodeValueFunction.toTex() : "\\ ",
294
+ ]),
295
+ "\\ ",
296
+ "\\ ",
297
+ ],
298
+ ];
299
+ };
300
+ const getHint = () => {
301
+ return `Commence par déterminer la fonction dérivée $f'$ de $f$. Puis, étudie le signe de $f'$ en résolvant l'inéquation $f'(x)\\geq 0$.
302
+
303
+ Enfin, sers-toi de la propriété suivante :
304
+
305
+ - si $f'$ est positive sur un intervalle $I$, alors $f$ est croissante sur $I$;
306
+ - si $f'$ est négative sur un intervalle $I$, alors $f$ est décroissante sur $I$.`;
307
+ };
308
+ const getCorrection = (identifiers) => {
309
+ const { nodeIdsF } = identifiers;
310
+ const [nodeF] = [nodeIdsF].map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds));
311
+ const nodeFPretty = getPrettyNode(nodeF);
312
+ const nodeDerivativeRaw = nodeFPretty.derivative().simplify();
313
+ const nodeDerivativePretty = getPrettyNode(nodeDerivativeRaw);
314
+ const nodePolynomial = (() => {
315
+ if (isFractionNode(nodeDerivativePretty)) {
316
+ return nodeDerivativePretty.leftChild;
317
+ }
318
+ else {
319
+ return nodeDerivativePretty;
320
+ }
321
+ })();
322
+ const { arrNodeX } = getAnswerStuff(identifiers);
323
+ return `Les abscisses recherchées sont les abscisses $a$ telles que $f'(a)=0$.
324
+
325
+ Pour $x$ appartenant à l'ensemble de dérivation de $f$, on calcule :
326
+
327
+ ${alignTex([
328
+ ...[
329
+ ...new Set([
330
+ nodeFPretty.derivative().simplify().toTex(),
331
+ nodeDerivativePretty.toTex(),
332
+ ]),
333
+ ].map((tex) => [`f'(x)`, "=", tex]),
334
+ ])}
335
+
336
+ On résout $f'(x)=0$ :
337
+
338
+ ${getTexSolveSecondDegreeEquation(nodePolynomial)}
339
+
340
+ Les extremums sont donc :
341
+
342
+ ${alignTex([
343
+ ...arrNodeX.flatMap((nodeX) => {
344
+ const nodeExtremum = nodeBySubstitutingVar(nodeFPretty, nodeX, "x".toTree());
345
+ return [
346
+ [`f(${nodeX.toTex()})`, "=", nodeExtremum.toTex()],
347
+ [``, "=", nodeExtremum.simplify().toTex()],
348
+ ];
349
+ }),
350
+ ])}
351
+
352
+ On remplit le tableau en calculant le signe de $f'(x)$ pour $x$ qui n'est pas l'abscisse d'un extremum.
353
+
354
+ `;
355
+ };
356
+ const getKeys = () => {
357
+ return ["infty"];
358
+ };
359
+ const isAnswerTableValid = (ans, { answerTable }) => {
360
+ try {
361
+ return varSignTableVEA(ans, answerTable);
362
+ }
363
+ catch (err) {
364
+ return handleVEAError(err);
365
+ }
366
+ };
367
+ const createRandomIdentifiers = (typeF, typeRoots) => {
368
+ const nodeF = getNodeFForTypeF(typeF, typeRoots);
369
+ const identifiers = {
370
+ nodeIdsF: nodeF.toIdentifiers(),
371
+ typeF,
372
+ typeRoots,
373
+ };
374
+ return identifiers;
375
+ };
376
+ const getSignVarTableFromFunctionExpressionQuestion = (optsIn) => {
377
+ const arrayedOptions = optsIn ?? arrayedOptsDefault;
378
+ const typeF = random(arrayedOptions.typeF);
379
+ const typeRoots = random(arrayedOptions.typeRoots);
380
+ let identifiers;
381
+ let isValid = false;
382
+ let counter = -1;
383
+ while (!isValid && counter < 100) {
384
+ counter++;
385
+ const identifiersCandidate = createRandomIdentifiers(typeF, typeRoots);
386
+ const isSolutionPrettyAndNotExploding = (identifiers) => {
387
+ try {
388
+ const { arrNodeX } = getAnswerStuff(identifiers);
389
+ return arrNodeX.every((node) => NodeUtils.getDepth(node) < 2);
390
+ }
391
+ catch (_) {
392
+ return false;
393
+ }
394
+ };
395
+ isValid = isSolutionPrettyAndNotExploding(identifiersCandidate);
396
+ if (isValid) {
397
+ identifiers = identifiersCandidate;
398
+ }
399
+ }
400
+ if (!isValid) {
401
+ const identifiersDefault = {
402
+ nodeIdsF: {
403
+ id: 3,
404
+ leftChild: {
405
+ id: 0,
406
+ leftChild: {
407
+ id: 2,
408
+ leftChild: {
409
+ id: 7,
410
+ value: 30,
411
+ },
412
+ rightChild: {
413
+ id: 10,
414
+ name: "x",
415
+ },
416
+ },
417
+ rightChild: {
418
+ id: 7,
419
+ value: 10,
420
+ },
421
+ },
422
+ rightChild: {
423
+ id: 0,
424
+ leftChild: {
425
+ id: 0,
426
+ leftChild: {
427
+ id: 2,
428
+ leftChild: {
429
+ id: 7,
430
+ value: 6,
431
+ },
432
+ rightChild: {
433
+ id: 5,
434
+ leftChild: {
435
+ id: 10,
436
+ name: "x",
437
+ },
438
+ rightChild: {
439
+ id: 7,
440
+ value: 2,
441
+ },
442
+ },
443
+ },
444
+ rightChild: {
445
+ id: 2,
446
+ leftChild: {
447
+ id: 7,
448
+ value: 3,
449
+ },
450
+ rightChild: {
451
+ id: 10,
452
+ name: "x",
453
+ },
454
+ },
455
+ },
456
+ rightChild: {
457
+ id: 7,
458
+ value: 1,
459
+ },
460
+ },
461
+ },
462
+ typeF: "$\\frac{dx+m}{ax^2+bx+c}$",
463
+ typeRoots: "entières",
464
+ };
465
+ identifiers = identifiersDefault;
466
+ }
467
+ return getQuestionFromIdentifiers(identifiers);
468
+ };
469
+ const getQuestionFromIdentifiers = (identifiers) => {
470
+ return {
471
+ answerTable: getAnswerTable(identifiers),
472
+ instruction: getInstruction(identifiers),
473
+ keys: getKeys(identifiers),
474
+ answerFormat: "tex",
475
+ identifiers,
476
+ hint: getHint(identifiers),
477
+ correction: getCorrection(identifiers),
478
+ initTable: getInitTable(identifiers),
479
+ };
480
+ };
481
+ const arrayedOptsDefault = {
482
+ typeF: [
483
+ "polynôme (degré $2$)",
484
+ // "polynôme (degré $3$)",
485
+ // "$\\frac{ax^2+bx+c}{dx+m}$",
486
+ "$\\frac{dx+m}{ax^2+bx+c}$",
487
+ ],
488
+ typeRoots: ["entières", "rationnelles"],
489
+ };
490
+ const options = [
491
+ {
492
+ id: "typeF",
493
+ label: "Type de fonction",
494
+ target: GeneratorOptionTarget.generation,
495
+ type: GeneratorOptionType.multiselect,
496
+ values: [
497
+ "polynôme (degré $2$)",
498
+ // "polynôme (degré $3$)", //sometimes it does f'(x) : + 0 + (unhandled for now)
499
+ // "$\\frac{ax^2+bx+c}{dx+m}$", //forbidden value (unhandled for now)
500
+ "$\\frac{dx+m}{ax^2+bx+c}$",
501
+ ],
502
+ defaultValue: arrayedOptsDefault.typeF,
503
+ },
504
+ {
505
+ id: "typeRoots",
506
+ label: "Type d'abscisses",
507
+ target: GeneratorOptionTarget.generation,
508
+ type: GeneratorOptionType.multiselect,
509
+ values: ["entières", "rationnelles"],
510
+ defaultValue: arrayedOptsDefault.typeRoots,
511
+ },
512
+ ];
513
+ export const signVarTableFromFunctionExpression = {
514
+ id: "signVarTableFromFunctionExpression",
515
+ label: "Dresser le tableau de signes de $f'$ et de variations de $f$ à partir de l'expression de $f$",
516
+ isSingleStep: true,
517
+ generator: (nb, opts) => getDistinctQuestions(() => getSignVarTableFromFunctionExpressionQuestion(opts), nb),
518
+ options,
519
+ qcmTimer: 60,
520
+ freeTimer: 60,
521
+ isAnswerTableValid,
522
+ subject: "Mathématiques",
523
+ getInstruction,
524
+ getHint,
525
+ getCorrection,
526
+ getAnswerTable,
527
+ getQuestionFromIdentifiers,
528
+ hasHintAndCorrection: true,
529
+ answerType: "signVarTable",
530
+ };
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ coeffsF: number[];
4
+ };
5
+ type Options = {
6
+ typeF: string;
7
+ };
8
+ export declare const signVarTableProductFExp: Exercise<Identifiers, Options>;
9
+ export {};
10
+ //# sourceMappingURL=signVarTableProductFExp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signVarTableProductFExp.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/derivation/variations/signVarTableProductFExp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AA4HrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAmXF,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAiBF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAkBlE,CAAC"}