math-exercises 3.0.157 → 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 (260) 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/calculLitteral/equation/exp/expOfAffineEquals1Equation.d.ts +14 -0
  4. package/lib/exercises/math/calculLitteral/equation/exp/expOfAffineEquals1Equation.d.ts.map +1 -0
  5. package/lib/exercises/math/calculLitteral/equation/exp/expOfAffineEquals1Equation.js +145 -0
  6. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.d.ts +16 -0
  7. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.d.ts.map +1 -0
  8. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.js +444 -0
  9. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.d.ts +15 -0
  10. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.d.ts.map +1 -0
  11. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.js +292 -0
  12. package/lib/exercises/math/calculLitteral/equation/exp/index.d.ts +4 -0
  13. package/lib/exercises/math/calculLitteral/equation/exp/index.d.ts.map +1 -0
  14. package/lib/exercises/math/calculLitteral/equation/exp/index.js +3 -0
  15. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts +18 -0
  16. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts.map +1 -0
  17. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.js +437 -0
  18. package/lib/exercises/math/calculLitteral/inequations/exp/index.d.ts +2 -0
  19. package/lib/exercises/math/calculLitteral/inequations/exp/index.d.ts.map +1 -0
  20. package/lib/exercises/math/calculLitteral/inequations/exp/index.js +1 -0
  21. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.d.ts.map +1 -1
  22. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.js +29 -0
  23. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.d.ts.map +1 -1
  24. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.js +35 -2
  25. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.d.ts.map +1 -1
  26. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.js +19 -0
  27. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts +10 -0
  28. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts.map +1 -0
  29. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.js +282 -0
  30. package/lib/exercises/math/derivation/derivative/inverseFunctionDerivative.d.ts.map +1 -1
  31. package/lib/exercises/math/derivation/derivative/inverseFunctionDerivative.js +30 -2
  32. package/lib/exercises/math/derivation/derivative/productDerivative.d.ts.map +1 -1
  33. package/lib/exercises/math/derivation/derivative/productDerivative.js +68 -1
  34. package/lib/exercises/math/derivation/derivative/quotientDerivative.d.ts.map +1 -1
  35. package/lib/exercises/math/derivation/derivative/quotientDerivative.js +40 -4
  36. package/lib/exercises/math/derivation/derivative/sqrt/sqrtCompositionDerivation.d.ts.map +1 -1
  37. package/lib/exercises/math/derivation/derivative/sqrt/sqrtCompositionDerivation.js +30 -3
  38. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts +12 -0
  39. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts.map +1 -0
  40. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.js +127 -0
  41. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.d.ts +13 -0
  42. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.d.ts.map +1 -0
  43. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.js +161 -0
  44. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.d.ts +11 -0
  45. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.d.ts.map +1 -0
  46. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.js +116 -0
  47. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.d.ts +8 -0
  48. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.d.ts.map +1 -0
  49. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.js +142 -0
  50. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts +4 -0
  51. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts.map +1 -0
  52. package/lib/exercises/math/derivation/derivativeNumber/index.js +4 -0
  53. package/lib/exercises/math/derivation/index.d.ts +1 -1
  54. package/lib/exercises/math/derivation/index.js +1 -1
  55. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts +13 -0
  56. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts.map +1 -0
  57. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.js +278 -0
  58. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts +11 -0
  59. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts.map +1 -0
  60. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.js +211 -0
  61. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.d.ts +9 -0
  62. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.d.ts.map +1 -0
  63. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.js +142 -0
  64. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts +5 -0
  65. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts.map +1 -0
  66. package/lib/exercises/math/functions/exponential/algebraic/index.js +4 -0
  67. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.d.ts +14 -0
  68. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.d.ts.map +1 -0
  69. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.js +337 -0
  70. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts +11 -0
  71. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts.map +1 -0
  72. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.js +234 -0
  73. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts +9 -0
  74. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts.map +1 -0
  75. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.js +190 -0
  76. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts +9 -0
  77. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts.map +1 -0
  78. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.js +190 -0
  79. package/lib/exercises/math/functions/exponential/definition/index.d.ts +5 -0
  80. package/lib/exercises/math/functions/exponential/definition/index.d.ts.map +1 -0
  81. package/lib/exercises/math/functions/exponential/definition/index.js +4 -0
  82. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts +13 -0
  83. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts.map +1 -0
  84. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.js +375 -0
  85. package/lib/exercises/math/functions/trinoms/devForm/coefficientsIdentification.d.ts.map +1 -1
  86. package/lib/exercises/math/functions/trinoms/devForm/coefficientsIdentification.js +30 -3
  87. package/lib/exercises/math/functions/trinoms/equation/deltaTrinom.d.ts.map +1 -1
  88. package/lib/exercises/math/functions/trinoms/equation/deltaTrinom.js +35 -1
  89. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.d.ts.map +1 -1
  90. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.js +1 -1
  91. package/lib/exercises/math/functions/trinoms/summitAndCanonical/alphaBetaInCanonicalForm.d.ts.map +1 -1
  92. package/lib/exercises/math/functions/trinoms/summitAndCanonical/alphaBetaInCanonicalForm.js +23 -1
  93. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.d.ts.map +1 -1
  94. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.js +29 -0
  95. package/lib/exercises/math/functions/variations/exp/index.d.ts +3 -0
  96. package/lib/exercises/math/functions/variations/exp/index.d.ts.map +1 -0
  97. package/lib/exercises/math/functions/variations/exp/index.js +2 -0
  98. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts +9 -0
  99. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts.map +1 -0
  100. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.js +101 -0
  101. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts +11 -0
  102. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts.map +1 -0
  103. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.js +192 -0
  104. package/lib/exercises/math/geometry/euclidian/pinPointFromAxialOrCentralSymmetry.js +2 -2
  105. package/lib/exercises/math/geometry/thales/thales.js +1 -1
  106. package/lib/exercises/math/geometry/thales/thalesCalcul.js +1 -1
  107. package/lib/exercises/math/geometry/vectors/colinearity/determinant.js +1 -1
  108. package/lib/exercises/math/geometry/vectors/scalarProduct/angleFromScalarProduct.js +1 -1
  109. package/lib/exercises/math/geometry/vectors/scalarProduct/findCoordinatesToOrthogonalize.d.ts.map +1 -1
  110. package/lib/exercises/math/geometry/vectors/scalarProduct/findCoordinatesToOrthogonalize.js +33 -7
  111. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCoords.js +1 -1
  112. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.d.ts.map +1 -1
  113. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.js +38 -1
  114. package/lib/exercises/math/probaStat/conditionalProbability.d.ts +4 -1
  115. package/lib/exercises/math/probaStat/conditionalProbability.d.ts.map +1 -1
  116. package/lib/exercises/math/probaStat/conditionalProbability.js +38 -5
  117. package/lib/exercises/math/probaStat/independancy/independancy.d.ts +9 -0
  118. package/lib/exercises/math/probaStat/independancy/independancy.d.ts.map +1 -0
  119. package/lib/exercises/math/probaStat/independancy/independancy.js +114 -0
  120. package/lib/exercises/math/probaStat/independancy/independancyFindCap.d.ts +9 -0
  121. package/lib/exercises/math/probaStat/independancy/independancyFindCap.d.ts.map +1 -0
  122. package/lib/exercises/math/probaStat/independancy/independancyFindCap.js +101 -0
  123. package/lib/exercises/math/probaStat/independancy/independancyFindCup.d.ts +9 -0
  124. package/lib/exercises/math/probaStat/independancy/independancyFindCup.d.ts.map +1 -0
  125. package/lib/exercises/math/probaStat/independancy/independancyFindCup.js +118 -0
  126. package/lib/exercises/math/probaStat/independancy/index.d.ts +5 -0
  127. package/lib/exercises/math/probaStat/independancy/index.d.ts.map +1 -0
  128. package/lib/exercises/math/probaStat/independancy/index.js +4 -0
  129. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.d.ts +10 -0
  130. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.d.ts.map +1 -0
  131. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.js +106 -0
  132. package/lib/exercises/math/probaStat/index.d.ts +1 -1
  133. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  134. package/lib/exercises/math/probaStat/index.js +1 -1
  135. package/lib/exercises/math/probaStat/randomVariable/randomVariableStandardDeviation.js +1 -1
  136. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.d.ts.map +1 -1
  137. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.js +7 -0
  138. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.d.ts.map +1 -1
  139. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.js +7 -0
  140. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.d.ts.map +1 -1
  141. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.js +7 -0
  142. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.d.ts.map +1 -1
  143. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.js +7 -0
  144. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.d.ts +9 -0
  145. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.d.ts.map +1 -0
  146. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.js +118 -0
  147. package/lib/exercises/math/sequences/arithmetic/arithmeticFindRandomTermFromTwoTerms.d.ts.map +1 -1
  148. package/lib/exercises/math/sequences/arithmetic/arithmeticFindRandomTermFromTwoTerms.js +55 -6
  149. package/lib/exercises/math/sequences/arithmetic/arithmeticFindReasonRandomRange.d.ts.map +1 -1
  150. package/lib/exercises/math/sequences/arithmetic/arithmeticFindReasonRandomRange.js +42 -1
  151. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.d.ts +4 -1
  152. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.d.ts.map +1 -1
  153. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.js +57 -7
  154. package/lib/exercises/math/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.d.ts.map +1 -1
  155. package/lib/exercises/math/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.js +24 -2
  156. package/lib/exercises/math/sequences/arithmetic/arithmeticThresholdFind.d.ts.map +1 -1
  157. package/lib/exercises/math/sequences/arithmetic/arithmeticThresholdFind.js +31 -8
  158. package/lib/exercises/math/sequences/arithmetic/index.d.ts +1 -1
  159. package/lib/exercises/math/sequences/arithmetic/index.d.ts.map +1 -1
  160. package/lib/exercises/math/sequences/arithmetic/index.js +1 -1
  161. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts.map +1 -1
  162. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.js +11 -1
  163. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstRankOne.js +5 -5
  164. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstTermRandom.d.ts.map +1 -1
  165. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstTermRandom.js +3 -1
  166. package/lib/exercises/math/sequences/geometric/geometricFindReason.d.ts.map +1 -1
  167. package/lib/exercises/math/sequences/geometric/geometricFindReason.js +41 -2
  168. package/lib/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.d.ts.map +1 -1
  169. package/lib/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.js +28 -2
  170. package/lib/exercises/math/sequences/sequenceEvaluation.d.ts.map +1 -1
  171. package/lib/exercises/math/sequences/sequenceEvaluation.js +22 -2
  172. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.d.ts +9 -0
  173. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.d.ts.map +1 -0
  174. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.js +107 -0
  175. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts +10 -0
  176. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts.map +1 -0
  177. package/lib/exercises/math/trigonometry/circle/associatePoint.js +86 -0
  178. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.d.ts +10 -0
  179. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.d.ts.map +1 -0
  180. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.js +205 -0
  181. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts +7 -0
  182. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts.map +1 -0
  183. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.js +121 -0
  184. package/lib/exercises/math/trigonometry/circle/index.d.ts +7 -0
  185. package/lib/exercises/math/trigonometry/circle/index.d.ts.map +1 -0
  186. package/lib/exercises/math/trigonometry/circle/index.js +7 -0
  187. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts +10 -0
  188. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts.map +1 -0
  189. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.js +100 -0
  190. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.d.ts +8 -0
  191. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.d.ts.map +1 -0
  192. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.js +97 -0
  193. package/lib/exercises/math/trigonometry/circle/remarkableValues.d.ts +10 -0
  194. package/lib/exercises/math/trigonometry/circle/remarkableValues.d.ts.map +1 -0
  195. package/lib/exercises/math/trigonometry/circle/remarkableValues.js +112 -0
  196. package/lib/exercises/math/trigonometry/functions/basicEquationCos.d.ts +7 -0
  197. package/lib/exercises/math/trigonometry/functions/basicEquationCos.d.ts.map +1 -0
  198. package/lib/exercises/math/trigonometry/functions/basicEquationCos.js +92 -0
  199. package/lib/exercises/math/trigonometry/functions/basicEquationSin.d.ts +7 -0
  200. package/lib/exercises/math/trigonometry/functions/basicEquationSin.d.ts.map +1 -0
  201. package/lib/exercises/math/trigonometry/functions/basicEquationSin.js +104 -0
  202. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.d.ts +7 -0
  203. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.d.ts.map +1 -0
  204. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.js +83 -0
  205. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts +8 -0
  206. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts.map +1 -0
  207. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.js +111 -0
  208. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.d.ts +8 -0
  209. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.d.ts.map +1 -0
  210. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.js +101 -0
  211. package/lib/exercises/math/trigonometry/functions/index.d.ts +6 -0
  212. package/lib/exercises/math/trigonometry/functions/index.d.ts.map +1 -0
  213. package/lib/exercises/math/trigonometry/functions/index.js +6 -0
  214. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.d.ts +9 -0
  215. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.d.ts.map +1 -0
  216. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.js +151 -0
  217. package/lib/exercises/math/trigonometry/index.d.ts +3 -14
  218. package/lib/exercises/math/trigonometry/index.d.ts.map +1 -1
  219. package/lib/exercises/math/trigonometry/index.js +3 -14
  220. package/lib/exercises/math/trigonometry/triangle/index.d.ts +7 -0
  221. package/lib/exercises/math/trigonometry/triangle/index.d.ts.map +1 -0
  222. package/lib/exercises/math/trigonometry/triangle/index.js +6 -0
  223. package/lib/exercises/math/trigonometry/triangle/trigonometry.d.ts +10 -0
  224. package/lib/exercises/math/trigonometry/triangle/trigonometry.d.ts.map +1 -0
  225. package/lib/exercises/math/trigonometry/triangle/trigonometry.js +207 -0
  226. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.d.ts +10 -0
  227. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.d.ts.map +1 -0
  228. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.js +174 -0
  229. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.d.ts +11 -0
  230. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.d.ts.map +1 -0
  231. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.js +224 -0
  232. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.d.ts +13 -0
  233. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.d.ts.map +1 -0
  234. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.js +189 -0
  235. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.d.ts +13 -0
  236. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.d.ts.map +1 -0
  237. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.js +290 -0
  238. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.d.ts +18 -0
  239. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.d.ts.map +1 -0
  240. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.js +386 -0
  241. package/lib/exercises/pc/mathExosInPC.d.ts +2 -2
  242. package/lib/exercises/pc/mathExosInPC.d.ts.map +1 -1
  243. package/lib/exercises/pc/mathExosInPC.js +2 -2
  244. package/lib/index.d.ts +63 -27
  245. package/lib/index.d.ts.map +1 -1
  246. package/lib/math/geometry/segment.d.ts +1 -1
  247. package/lib/math/geometry/vector.d.ts +2 -1
  248. package/lib/math/geometry/vector.d.ts.map +1 -1
  249. package/lib/math/geometry/vector.js +1 -1
  250. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  251. package/lib/math/numbers/reals/real.js +2 -0
  252. package/lib/playground.d.ts.map +1 -1
  253. package/lib/playground.js +3 -1
  254. package/lib/tree/nodes/algebraicNode.d.ts +1 -0
  255. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  256. package/lib/tree/nodes/functions/sqrtNode.d.ts +2 -1
  257. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  258. package/lib/tree/nodes/functions/sqrtNode.js +17 -6
  259. package/lib/tree/nodes/operators/multiplyNode.js +1 -1
  260. package/package.json +1 -1
@@ -10,7 +10,9 @@ import { shuffle } from "../../../../utils/alea/shuffle.js";
10
10
  import { SubstractNode } from "../../../../tree/nodes/operators/substractNode.js";
11
11
  const getInstruction = (identifiers) => {
12
12
  const { firstRank, firstValue, reason } = identifiers;
13
- return `$(u_n)$ est une suite géométrique de premier terme $u_{${firstRank}} = ${firstValue}$ et de raison $q = ${reason}$. $\\\\$ Donner l'expression de $u_n$ en fonction de $n$.`;
13
+ return `$(u_n)$ est une suite géométrique de premier terme $u_{${firstRank}} = ${firstValue}$ et de raison $q = ${reason}$.
14
+
15
+ Donner l'expression de $u_n$ en fonction de $n$.`;
14
16
  };
15
17
  const getAnswer = (identifiers) => {
16
18
  const { firstRank, firstValue, reason } = identifiers;
@@ -1 +1 @@
1
- {"version":3,"file":"geometricFindReason.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/geometricFindReason.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAKrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAwDF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAYrD,CAAC"}
1
+ {"version":3,"file":"geometricFindReason.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/geometricFindReason.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAQrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA0FF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAarD,CAAC"}
@@ -1,12 +1,43 @@
1
1
  import { addValidProp, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
3
4
  import { randint } from "../../../../math/utils/random/randint.js";
4
5
  import { shuffle } from "../../../../utils/alea/shuffle.js";
6
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
7
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
8
+ const getHint = () => {
9
+ return `La raison d'une suite géométrique est le nombre par lequel on multiple un terme pour obtenir le suivant.`;
10
+ };
11
+ const getCorrection = (identifiers) => {
12
+ const { rank1, reason, value1 } = identifiers;
13
+ const rank2 = rank1 + 1;
14
+ const value2 = reason * value1;
15
+ return `Puisque la suite $u$ est géométrique, on sait que :
16
+
17
+ $$
18
+ u_{${rank2}} = u_{${rank1}} \\times q
19
+ $$
20
+
21
+ où $q$ est la raison.
22
+
23
+ On a donc :
24
+
25
+ ${alignTex([
26
+ ["q", "=", `\\frac{u_{${rank2}}}{u_{${rank1}}}`],
27
+ ["", "=", `\\frac{${value2}}{${value1}}`],
28
+ ["", "=", getAnswer(identifiers)],
29
+ ])}
30
+ `;
31
+ };
5
32
  const getInstruction = (identifiers) => {
6
33
  const { rank1, value1, reason } = identifiers;
7
34
  const rank2 = rank1 + 1;
8
35
  const value2 = reason * value1;
9
- return `$(u_n)$ est une suite géométrique. On sait que $u_{${rank1}} = ${value1}$ et $u_{${rank2}} = ${value2}$. Quelle est la raison de la suite $(u_n)$ ?`;
36
+ return `$(u_n)$ est une suite géométrique.
37
+
38
+ On sait que $u_{${rank1}} = ${value1}$ et $u_{${rank2}} = ${value2}$.
39
+
40
+ Quelle est la raison de la suite $(u_n)$ ?`;
10
41
  };
11
42
  const getAnswer = (identifiers) => {
12
43
  const { reason } = identifiers;
@@ -20,6 +51,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
20
51
  answer: getAnswer(identifiers),
21
52
  keys: [],
22
53
  answerFormat: "tex",
54
+ hint: getHint(identifiers),
55
+ correction: getCorrection(identifiers),
23
56
  identifiers,
24
57
  };
25
58
  return question;
@@ -43,7 +76,12 @@ const getPropositions = (n, { answer, value1, reason }) => {
43
76
  return shuffle(propositions);
44
77
  };
45
78
  const isAnswerValid = (ans, { answer }) => {
46
- return ans === answer;
79
+ try {
80
+ return numberVEA(ans, answer);
81
+ }
82
+ catch (err) {
83
+ return handleVEAError(err);
84
+ }
47
85
  };
48
86
  export const geometricFindReason = {
49
87
  id: "geometricFindReason",
@@ -57,4 +95,5 @@ export const geometricFindReason = {
57
95
  isAnswerValid,
58
96
  subject: "Mathématiques",
59
97
  getQuestionFromIdentifiers,
98
+ hasHintAndCorrection: true,
60
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"geometricRecurrenceFormulaUsage.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAKrC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAgFF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAajE,CAAC"}
1
+ {"version":3,"file":"geometricRecurrenceFormulaUsage.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAOrC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAyGF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,CAcjE,CAAC"}
@@ -1,11 +1,34 @@
1
1
  import { tryToAddWrongProp, addValidProp, propWhile, } from "../../../../exercises/exercise.js";
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
3
  import { randint } from "../../../../math/utils/random/randint.js";
4
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
4
5
  import { shuffle } from "../../../../utils/alea/shuffle.js";
6
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
7
+ const getHint = (identifiers) => {
8
+ const { firstRank } = identifiers;
9
+ return `Il suffit de remplacer $n$ par $${firstRank}$ dans la formule de récurrence de la suite $u$.`;
10
+ };
11
+ const getCorrection = (identifiers) => {
12
+ const { firstRank, firstValue, reason } = identifiers;
13
+ const askedRank = firstRank + 1;
14
+ return `On remplace $n$ par $${firstRank}$ dans la formule de récurrence :
15
+
16
+ ${alignTex([
17
+ [
18
+ `u_{${firstRank}+1}`,
19
+ "=",
20
+ multiply(reason, `u_{${firstRank}}`).toTex({ forceTimesSign: true }),
21
+ ],
22
+ [`u_{${askedRank}}`, "=", multiply(reason, firstValue).toTex()],
23
+ ["", "=", getAnswer(identifiers)],
24
+ ])}
25
+
26
+ `;
27
+ };
5
28
  const getInstruction = (identifiers) => {
6
29
  const { firstRank, firstValue, reason } = identifiers;
7
30
  const askedRank = firstRank + 1;
8
- return `$(u_n)$ est une suite définie par :
31
+ return `$(u_n)$ est une suite définie, pour $n\\geq 0$, par :
9
32
 
10
33
  $$
11
34
  u_{n+1} = ${reason}\\times u_n
@@ -30,9 +53,11 @@ const getQuestionFromIdentifiers = (identifiers) => {
30
53
  instruction: getInstruction(identifiers),
31
54
  startStatement: getStartStatement(identifiers),
32
55
  answer: getAnswer(identifiers),
33
- keys: ["u", "underscore", "equal"],
56
+ keys: [],
34
57
  answerFormat: "tex",
35
58
  identifiers,
59
+ hint: getHint(identifiers),
60
+ correction: getCorrection(identifiers),
36
61
  };
37
62
  return question;
38
63
  };
@@ -73,4 +98,5 @@ export const geometricRecurrenceFormulaUsage = {
73
98
  isAnswerValid,
74
99
  subject: "Mathématiques",
75
100
  getQuestionFromIdentifiers,
101
+ hasHintAndCorrection: true,
76
102
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceEvaluation.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/sequenceEvaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAYrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAkOF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAYpD,CAAC"}
1
+ {"version":3,"file":"sequenceEvaluation.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/sequenceEvaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAarC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAqPF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAapD,CAAC"}
@@ -8,6 +8,23 @@ import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode.js";
8
8
  import { substract } from "../../../tree/nodes/operators/substractNode.js";
9
9
  import { VariableNode } from "../../../tree/nodes/variables/variableNode.js";
10
10
  import { parseAlgebraic } from "../../../tree/parsers/latexParser.js";
11
+ import { alignTex } from "../../../utils/latex/alignTex.js";
12
+ const getHint = (identifiers) => {
13
+ const { termeAdd, termeMult } = identifiers;
14
+ const f = new Affine(termeMult, termeAdd, "n").toTree().simplify().toTex();
15
+ return `Il suffit de remplacer $n$ par $${f}$ dans la formule donnant $u_n$. Puis, simplifie et réduis l'expression obtenue.`;
16
+ };
17
+ const getCorrection = (identifiers) => {
18
+ const { termeAdd, termeMult, affine } = identifiers;
19
+ const aff = new Affine(affine[0], affine[1], "n").toTree();
20
+ const f = new Affine(termeMult, termeAdd, "n").toTree().simplify();
21
+ return `On remplace $n$ par $${f.toTex()}$ dans la formule donnant $u_n$ :
22
+
23
+ ${alignTex([
24
+ [`u_{${f.toTex()}}`, "=", aff.toDetailedEvaluation({ n: f }).toTex()],
25
+ ["", "=", getAnswer(identifiers)],
26
+ ])}`;
27
+ };
11
28
  const getInstruction = (identifiers) => {
12
29
  const { termeid, affine, termeAdd, termeMult } = identifiers;
13
30
  const aff = new Affine(affine[0], affine[1], "n");
@@ -27,7 +44,7 @@ $$
27
44
  u_n = ${aff.toTree().toTex()}
28
45
  $$
29
46
 
30
- Exprimer $u_{${terme.toTex()}}$.`;
47
+ Exprimer $u_{${terme.toTex()}}$ en fonction de $n$.`;
31
48
  };
32
49
  const getAnswer = (identifiers) => {
33
50
  const { termeid, affine, termeAdd, termeMult } = identifiers;
@@ -60,6 +77,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
60
77
  keys: ["n"],
61
78
  answerFormat: "tex",
62
79
  identifiers,
80
+ hint: getHint(identifiers),
81
+ correction: getCorrection(identifiers),
63
82
  };
64
83
  return question;
65
84
  };
@@ -70,7 +89,7 @@ const getSequenceEvaluationQuestion = () => {
70
89
  let termeAdd = 0;
71
90
  let termeMult = 1;
72
91
  if (termeid === 1) {
73
- termeAdd = randint(1, 4);
92
+ termeAdd = randint(-4, 4, [0]);
74
93
  }
75
94
  else if (termeid === 2) {
76
95
  termeMult = randint(2, 4);
@@ -179,4 +198,5 @@ export const sequenceEvaluation = {
179
198
  isAnswerValid,
180
199
  subject: "Mathématiques",
181
200
  getQuestionFromIdentifiers,
201
+ hasHintAndCorrection: true,
182
202
  };
@@ -0,0 +1,9 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ aIds: NodeIdentifiers;
5
+ bIds: NodeIdentifiers;
6
+ };
7
+ export declare const areReelsOnTheSameTrigoCirclePoint: Exercise<Identifiers>;
8
+ export {};
9
+ //# sourceMappingURL=areReelsOnTheSameTrigoCirclePoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areReelsOnTheSameTrigoCirclePoint.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAS7C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AA6FF,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,WAAW,CAqBnE,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { mainTrigoValues } from "../../../../math/trigonometry/remarkableValues.js";
4
+ import { randint } from "../../../../math/utils/random/randint.js";
5
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
6
+ import { PiNode } from "../../../../tree/nodes/numbers/piNode.js";
7
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
8
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
9
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
10
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
11
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
12
+ import { random } from "../../../../utils/alea/random.js";
13
+ const getPropositions = (n, { answer }) => {
14
+ const propositions = [];
15
+ addValidProp(propositions, answer);
16
+ tryToAddWrongProp(propositions, "Oui", "raw");
17
+ tryToAddWrongProp(propositions, "Non", "raw");
18
+ tryToAddWrongProp(propositions, "On ne peut pas savoir", "raw");
19
+ return shuffleProps(propositions, n);
20
+ };
21
+ const getAnswer = (identifiers) => {
22
+ const { aIds, bIds } = identifiers;
23
+ const a = reifyAlgebraic(aIds);
24
+ const b = reifyAlgebraic(bIds);
25
+ const diff = frac(substract(a, b), PiNode).simplify();
26
+ return Math.abs(diff.evaluate()) % 2 === 0 ? "Oui" : "Non";
27
+ };
28
+ const getInstruction = (identifiers) => {
29
+ const { aIds, bIds } = identifiers;
30
+ const a = reifyAlgebraic(aIds);
31
+ const b = reifyAlgebraic(bIds);
32
+ return `Les nombres $${a.toTex()}$ et $${b.toTex()}$ ont-ils le même point-image sur le cercle trigonométrique ?`;
33
+ };
34
+ const getHint = () => {
35
+ return `Deux nombres réels ont le même point-image sur le cercle trigonométrique si et seulement si leur différence est un multiple de $2\\pi$.`;
36
+ };
37
+ const getCorrection = (identifiers) => {
38
+ const { aIds, bIds } = identifiers;
39
+ const a = reifyAlgebraic(aIds);
40
+ const b = reifyAlgebraic(bIds);
41
+ const sub = substract(a, b);
42
+ const subSimp = sub.simplify();
43
+ const k = frac(sub, multiply(2, PiNode)).simplify();
44
+ const isSamePoint = getAnswer(identifiers) === "Oui";
45
+ return `On calcule la différence de $${a.toTex()}$ et $${b.toTex()}$ :
46
+
47
+ $$
48
+ ${substract(a, b).toTex()} = ${subSimp.toTex()}
49
+ $$
50
+
51
+ ${isSamePoint
52
+ ? k.evaluate() === 1
53
+ ? `Puisqu'on obtient $2\\pi$, les nombres ont bien le même point-image sur le cercle trigonométrique.`
54
+ : `On obtient bien un multiple de $2\\pi$, car
55
+
56
+ $$
57
+ ${subSimp.toTex()} = ${k.toTex()}\\times (2\\pi)
58
+ $$
59
+
60
+ Les nombres ont donc bien le même point-image sur le cercle trigonométrique.`
61
+ : `On n'obtient pas un multiple de $2\\pi$ : les nombres n'ont donc pas le même point-image sur le cercle trigonométrique.`}
62
+ `;
63
+ };
64
+ const getAreReelsOnTheSameTrigoCirclePointQuestion = () => {
65
+ const isSamePoint = coinFlip();
66
+ const value = random(mainTrigoValues);
67
+ const a = value.angle;
68
+ const b = isSamePoint
69
+ ? add(a, multiply(2 * randint(-4, 4, [0]), PiNode)).simplify()
70
+ : random([
71
+ add(a, multiply(2 * randint(-4, 4, [0]) + 1, PiNode)).simplify(),
72
+ random(mainTrigoValues.filter((m) => m.point !== value.point)).angle,
73
+ ]);
74
+ const identifiers = {
75
+ aIds: a.toIdentifiers(),
76
+ bIds: b.toIdentifiers(),
77
+ };
78
+ return getQuestionFromIdentifiers(identifiers);
79
+ };
80
+ const getQuestionFromIdentifiers = (identifiers) => {
81
+ return {
82
+ answer: getAnswer(identifiers),
83
+ instruction: getInstruction(identifiers),
84
+ keys: [],
85
+ answerFormat: "tex",
86
+ identifiers,
87
+ hint: getHint(identifiers),
88
+ correction: getCorrection(identifiers),
89
+ };
90
+ };
91
+ export const areReelsOnTheSameTrigoCirclePoint = {
92
+ id: "areReelsOnTheSameTrigoCirclePoint",
93
+ label: "Déterminer si deux réels ont le même point image sur le cercle trigonométrique",
94
+ isSingleStep: true,
95
+ generator: (nb, opts) => getDistinctQuestions(() => getAreReelsOnTheSameTrigoCirclePointQuestion(opts), nb),
96
+ qcmTimer: 60,
97
+ freeTimer: 60,
98
+ getPropositions,
99
+ subject: "Mathématiques",
100
+ getInstruction,
101
+ getHint,
102
+ getCorrection,
103
+ getAnswer,
104
+ getQuestionFromIdentifiers,
105
+ hasHintAndCorrection: true,
106
+ answerType: "QCU",
107
+ };
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ angleValue: number;
5
+ angleIdentifiers: NodeIdentifiers;
6
+ point: string;
7
+ };
8
+ export declare const associatePoint: Exercise<Identifiers>;
9
+ export {};
10
+ //# sourceMappingURL=associatePoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"associatePoint.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/trigonometry/circle/associatePoint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,eAAe,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAgFF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAahD,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { addValidProp, propWhile, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { RemarkableValueConstructor } from "../../../../math/trigonometry/remarkableValue.js";
4
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
5
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
6
+ import { random } from "../../../../utils/alea/random.js";
7
+ const points = [
8
+ "I",
9
+ "A",
10
+ "B",
11
+ "C",
12
+ "J",
13
+ "D",
14
+ "E",
15
+ "F",
16
+ "G",
17
+ "H",
18
+ "K",
19
+ "L",
20
+ "M",
21
+ "N",
22
+ "P",
23
+ "Q",
24
+ ];
25
+ const getInstruction = (identifiers) => {
26
+ const { angleIdentifiers } = identifiers;
27
+ return `À quel point du cercle trigonométrique ci-dessous le réel $${reifyAlgebraic(angleIdentifiers).toTex()}$ est-il associé ?
28
+ ![](https://heureuxhasarddocsbucket.s3.eu-west-3.amazonaws.com/mathliveV2/activities/quizzes/generator/piCircle.png)
29
+ `;
30
+ };
31
+ const getAnswer = (identifiers) => {
32
+ const { point } = identifiers;
33
+ return point;
34
+ };
35
+ // const getHint: GetHint<Identifiers> = (identifiers) => {
36
+ // return ``;
37
+ // };
38
+ // const getCorrection: GetCorrection<Identifiers> = (identifiers) => {
39
+ // return ``;
40
+ // };
41
+ const getQuestionFromIdentifiers = (identifiers) => {
42
+ const question = {
43
+ answer: getAnswer(identifiers),
44
+ instruction: getInstruction(identifiers),
45
+ keys: points,
46
+ answerFormat: "tex",
47
+ identifiers,
48
+ };
49
+ return question;
50
+ };
51
+ const getAssociatePointQuestion = () => {
52
+ const remarkableValue = coinFlip()
53
+ ? RemarkableValueConstructor.simplifiable()
54
+ : RemarkableValueConstructor.mainInterval();
55
+ const identifiers = {
56
+ angleValue: remarkableValue.angle.evaluate({}),
57
+ point: remarkableValue.point,
58
+ angleIdentifiers: remarkableValue.angle.toIdentifiers(),
59
+ };
60
+ return getQuestionFromIdentifiers(identifiers);
61
+ };
62
+ const getPropositions = (n, { answer }) => {
63
+ const propositions = [];
64
+ addValidProp(propositions, answer);
65
+ propWhile(propositions, n, () => {
66
+ const rand = random(points);
67
+ tryToAddWrongProp(propositions, rand);
68
+ });
69
+ return shuffleProps(propositions, n);
70
+ };
71
+ const isAnswerValid = (ans, { answer }) => {
72
+ return answer === ans;
73
+ };
74
+ export const associatePoint = {
75
+ id: "associatePoint",
76
+ connector: "=",
77
+ label: "Associer un point du cercle trigonométrique à un réel",
78
+ isSingleStep: true,
79
+ generator: (nb) => getDistinctQuestions(getAssociatePointQuestion, nb),
80
+ qcmTimer: 60,
81
+ freeTimer: 60,
82
+ getPropositions,
83
+ isAnswerValid,
84
+ subject: "Mathématiques",
85
+ getQuestionFromIdentifiers,
86
+ };
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ pointIndex: number;
4
+ };
5
+ type Options = {
6
+ solutionInterval: string;
7
+ };
8
+ export declare const associateReelToTrigoCirclePoint: Exercise<Identifiers, Options>;
9
+ export {};
10
+ //# sourceMappingURL=associateReelToTrigoCirclePoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"associateReelToTrigoCirclePoint.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAmBT,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA+NF,KAAK,OAAO,GAAG;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAWF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CA0B1E,CAAC"}
@@ -0,0 +1,205 @@
1
+ import { addValidProp, shuffleProps, propWhile, GeneratorOptionTarget, GeneratorOptionType, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
4
+ import { Point } from "../../../../math/geometry/point.js";
5
+ import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { cos } from "../../../../tree/nodes/functions/cosNode.js";
7
+ import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
8
+ import { sin } from "../../../../tree/nodes/functions/sinNode.js";
9
+ import { PiNode } from "../../../../tree/nodes/numbers/piNode.js";
10
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
11
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
12
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
13
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
14
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
15
+ import { pluralize } from "../../../../utils/strings/pluralize.js";
16
+ const getPropositions = (n, { answer }, opts) => {
17
+ const propositions = [];
18
+ addValidProp(propositions, answer);
19
+ propWhile(propositions, n, () => {
20
+ if (opts?.solutionInterval === "$[0; 2\\pi[$") {
21
+ tryToAddWrongProp(propositions, multiply(randint(0, 24), frac(PiNode, 12)).simplify().toTex());
22
+ }
23
+ else {
24
+ tryToAddWrongProp(propositions, add(opposite(PiNode), multiply(randint(0, 24), frac(PiNode, 12)))
25
+ .simplify()
26
+ .toTex());
27
+ }
28
+ });
29
+ return shuffleProps(propositions, n);
30
+ };
31
+ const getAnswerNode = (identifiers, opts) => {
32
+ const { pointIndex } = identifiers;
33
+ if (opts?.solutionInterval === "$[0; 2\\pi[$") {
34
+ return multiply(pointIndex, frac(PiNode, 12)).simplify();
35
+ }
36
+ else {
37
+ //]-pi; pi]
38
+ if (pointIndex === 12)
39
+ return PiNode;
40
+ if (pointIndex > 12) {
41
+ return add(opposite(PiNode), multiply(pointIndex - 12, frac(PiNode, 12))).simplify();
42
+ }
43
+ return multiply(pointIndex, frac(PiNode, 12)).simplify();
44
+ }
45
+ };
46
+ const getAnswer = (identifiers, opts) => {
47
+ return getAnswerNode(identifiers, opts).toTex();
48
+ };
49
+ const getInstruction = (_identifiers, opts) => {
50
+ const int = opts?.solutionInterval === "$]-\\pi; \\pi]$"
51
+ ? "$]-\\pi; \\pi]$"
52
+ : opts?.solutionInterval === "$[0; 2\\pi[$"
53
+ ? "$[0; 2\\pi[$"
54
+ : undefined;
55
+ return `Le cercle trigonométrique ci-dessous est divisé en $24$ parts égales.
56
+
57
+ Donner un nombre réel associé au point $A$.
58
+
59
+ ${int ? `Le nombre donné doit se trouver dans l'intervalle ${int}.` : ""}`;
60
+ };
61
+ const getHint = () => {
62
+ return `Puisque le cercle est divisé en $24$ parts égales, chaque secteur représente un angle de $\\frac{2\\pi}{24} = \\frac{\\pi}{12}$ radians.`;
63
+ };
64
+ const getCorrection = (identifiers, opts) => {
65
+ const { pointIndex } = identifiers;
66
+ if (pointIndex === 0)
67
+ return `Le point de coordonnées $(1;0)$ est associé au nombre $0$.`;
68
+ const corr = `Puisque le cercle est divisé en $24$ parts égales, chaque secteur représente un angle de $\\frac{2\\pi}{24} = \\frac{\\pi}{12}$ radians.
69
+
70
+ `;
71
+ if (opts?.solutionInterval === "$[0; 2\\pi[$")
72
+ return (corr +
73
+ `
74
+ À partir du point de coordonnées $(1;0)$, qui est associé au nombre $0$, on compte $${pointIndex}$ ${pluralize("part", pointIndex)} pour arriver jusqu'au point $A$, dans le sens trigonométrique (sens inverse des aiguilles d'une montre).
75
+
76
+ Un nombre réel de l'intervalle $[0; 2\\pi[$ associé au point $A$ est donc :
77
+
78
+ $$
79
+ ${multiply(pointIndex, frac(PiNode, 12)).toSimplificationTex()}
80
+ $$
81
+ `);
82
+ else {
83
+ if (pointIndex > 12)
84
+ return (corr +
85
+ `
86
+ À partir du point de coordonnées $(1;0)$, qui est associé au nombre $0$, on compte $${24 - pointIndex}$ ${pluralize("part", 24 - pointIndex)} pour arriver jusqu'au point $A$, et ce dans le sens anti-trigonométrique (sens des aiguilles d'une montre).
87
+
88
+ Un nombre réel de l'intervalle $]-\\pi; \\pi[$ associé au point $A$ est donc :
89
+
90
+ $$
91
+ ${multiply(opposite(24 - pointIndex), frac(PiNode, 12)).toSimplificationTex()}
92
+ $$
93
+ `);
94
+ return (corr +
95
+ `
96
+ À partir du point de coordonnées $(1;0)$, qui est associé au nombre $0$, on compte $${pointIndex}$ ${pluralize("part", pointIndex)} pour arriver jusqu'au point $A$, et ce dans le sens trigonométrique (sens inverse des aiguilles d'une montre).
97
+
98
+ Un nombre réel de l'intervalle $]-\\pi; \\pi[$ associé au point $A$ est donc :
99
+
100
+ $$
101
+ ${multiply(pointIndex, frac(PiNode, 12)).toSimplificationTex()}
102
+ $$`);
103
+ }
104
+ };
105
+ const getGGBOptions = (identifiers) => {
106
+ const { pointIndex } = identifiers;
107
+ const A = new Point("A", cos(multiply(pointIndex, frac(PiNode, 12))), sin(multiply(pointIndex, frac(PiNode, 12))));
108
+ const commands = [
109
+ ...A.toGGBCommand({
110
+ showLabel: true,
111
+ }),
112
+ `C = Circle((0,0), 1)`,
113
+ `SetFixed(C, true, false)`,
114
+ ];
115
+ for (let i = 0; i < 24; i++) {
116
+ commands.push(`S_{${i}} = Segment( (0,0), (cos(${i}*pi/12), sin(${i}*pi/12)))`);
117
+ commands.push(`SetFilling(S_{${i}}, 0)`);
118
+ commands.push(`SetFixed(S_{${i}}, true, false)`);
119
+ commands.push(`SetLineStyle(S_{${i}}, 3)`);
120
+ }
121
+ const ggb = new GeogebraConstructor({
122
+ commands,
123
+ hideGrid: true,
124
+ xAxis: {
125
+ hideNumbers: true,
126
+ },
127
+ yAxis: {
128
+ hideNumbers: true,
129
+ },
130
+ });
131
+ return ggb.getOptions({ coords: [-1.1, 1.1, -1.1, 1.1] });
132
+ };
133
+ const getKeys = () => {
134
+ return ["pi"];
135
+ };
136
+ const isAnswerValid = (ans, { answer: _answer, pointIndex }, opts) => {
137
+ const parsed = parseAlgebraic(ans);
138
+ const ansNode = getAnswerNode({ pointIndex }, opts);
139
+ if (opts?.solutionInterval === "$[0; 2\\pi[$") {
140
+ const parsedEv = parsed.evaluate();
141
+ return (parsedEv >= 0 &&
142
+ parsedEv < 2 * Math.PI &&
143
+ Math.abs(parsed.evaluate() - ansNode.evaluate()) < 0.001);
144
+ }
145
+ else if (opts?.solutionInterval === "$]-\\pi; \\pi]$") {
146
+ const parsedEv = parsed.evaluate();
147
+ return (parsedEv > -Math.PI - 0.005 &&
148
+ parsedEv <= Math.PI + 0.005 &&
149
+ Math.abs(parsed.evaluate() - ansNode.evaluate()) < 0.001);
150
+ }
151
+ else {
152
+ const diff = frac(substract(ansNode, parsed), PiNode).simplify();
153
+ return Math.abs(diff.evaluate()) % 2 === 0;
154
+ }
155
+ };
156
+ const getAssociateReelToTrigoCirclePointQuestion = (opts) => {
157
+ const identifiers = {
158
+ pointIndex: randint(0, 24),
159
+ };
160
+ return getQuestionFromIdentifiers(identifiers, opts);
161
+ };
162
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
163
+ return {
164
+ answer: getAnswer(identifiers, opts),
165
+ instruction: getInstruction(identifiers, opts),
166
+ keys: getKeys(identifiers),
167
+ answerFormat: "tex",
168
+ identifiers,
169
+ hint: getHint(identifiers, opts),
170
+ correction: getCorrection(identifiers, opts),
171
+ ggbOptions: getGGBOptions(identifiers, opts),
172
+ };
173
+ };
174
+ const options = [
175
+ {
176
+ id: "solutionInterval",
177
+ label: "Intervalle pour la réponse",
178
+ target: GeneratorOptionTarget.answer,
179
+ type: GeneratorOptionType.select,
180
+ defaultValue: "Peu importe",
181
+ values: ["Peu importe", "$]-\\pi; \\pi]$", "$[0; 2\\pi[$"],
182
+ },
183
+ ];
184
+ export const associateReelToTrigoCirclePoint = {
185
+ id: "associateReelToTrigoCirclePoint",
186
+ connector: "=",
187
+ label: "Donner un réel correspondant à un point du cercle trigonométrique",
188
+ isSingleStep: true,
189
+ generator: (nb, opts) => getDistinctQuestions(() => getAssociateReelToTrigoCirclePointQuestion(opts), nb, 20),
190
+ qcmTimer: 60,
191
+ freeTimer: 60,
192
+ getPropositions,
193
+ isAnswerValid,
194
+ subject: "Mathématiques",
195
+ getHint,
196
+ getCorrection,
197
+ getInstruction,
198
+ getAnswer,
199
+ getGGBOptions,
200
+ options,
201
+ hasGeogebra: true,
202
+ getQuestionFromIdentifiers,
203
+ maxAllowedQuestions: 20,
204
+ hasHintAndCorrection: true,
205
+ };
@@ -0,0 +1,7 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type Identifiers = {
3
+ point: string;
4
+ };
5
+ export declare const findAngleFromCosAndSin: Exercise<Identifiers>;
6
+ export {};
7
+ //# sourceMappingURL=findAngleFromCosAndSin.d.ts.map