math-exercises 3.0.157 → 3.0.159

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 (444) 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 +445 -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 +371 -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/equation/factorizeEquation.d.ts.map +1 -1
  16. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.js +8 -2
  17. package/lib/exercises/math/calculLitteral/equation/index.d.ts +1 -0
  18. package/lib/exercises/math/calculLitteral/equation/index.d.ts.map +1 -1
  19. package/lib/exercises/math/calculLitteral/equation/index.js +1 -0
  20. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -1
  21. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.js +27 -2
  22. package/lib/exercises/math/calculLitteral/equation/solveByFactorizingWithIdRmq3.d.ts.map +1 -1
  23. package/lib/exercises/math/calculLitteral/equation/solveByFactorizingWithIdRmq3.js +0 -1
  24. package/lib/exercises/math/calculLitteral/equation/square/equationSquareWithSteps.d.ts.map +1 -1
  25. package/lib/exercises/math/calculLitteral/equation/square/equationSquareWithSteps.js +0 -1
  26. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts +18 -0
  27. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts.map +1 -0
  28. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.js +444 -0
  29. package/lib/exercises/math/calculLitteral/inequations/exp/index.d.ts +2 -0
  30. package/lib/exercises/math/calculLitteral/inequations/exp/index.d.ts.map +1 -0
  31. package/lib/exercises/math/calculLitteral/inequations/exp/index.js +1 -0
  32. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.d.ts.map +1 -1
  33. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.js +11 -5
  34. package/lib/exercises/math/calculLitteral/inequations/index.d.ts +1 -0
  35. package/lib/exercises/math/calculLitteral/inequations/index.d.ts.map +1 -1
  36. package/lib/exercises/math/calculLitteral/inequations/index.js +1 -0
  37. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.d.ts.map +1 -1
  38. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.js +91 -21
  39. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.d.ts.map +1 -1
  40. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.js +64 -15
  41. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.d.ts.map +1 -1
  42. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.js +71 -15
  43. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.d.ts.map +1 -1
  44. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.js +36 -17
  45. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts +10 -0
  46. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts.map +1 -0
  47. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.js +294 -0
  48. package/lib/exercises/math/derivation/derivative/exp/index.d.ts +1 -0
  49. package/lib/exercises/math/derivation/derivative/exp/index.d.ts.map +1 -1
  50. package/lib/exercises/math/derivation/derivative/exp/index.js +1 -0
  51. package/lib/exercises/math/derivation/derivative/inverseFunctionDerivative.d.ts.map +1 -1
  52. package/lib/exercises/math/derivation/derivative/inverseFunctionDerivative.js +30 -2
  53. package/lib/exercises/math/derivation/derivative/productDerivative.d.ts.map +1 -1
  54. package/lib/exercises/math/derivation/derivative/productDerivative.js +68 -1
  55. package/lib/exercises/math/derivation/derivative/quotientDerivative.d.ts.map +1 -1
  56. package/lib/exercises/math/derivation/derivative/quotientDerivative.js +40 -4
  57. package/lib/exercises/math/derivation/derivative/sqrt/sqrtCompositionDerivation.d.ts.map +1 -1
  58. package/lib/exercises/math/derivation/derivative/sqrt/sqrtCompositionDerivation.js +30 -3
  59. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts +12 -0
  60. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.d.ts.map +1 -0
  61. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeAlgebraicExpression.js +127 -0
  62. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.d.ts +13 -0
  63. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.d.ts.map +1 -0
  64. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromAlgebraic.js +161 -0
  65. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.d.ts +11 -0
  66. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.d.ts.map +1 -0
  67. package/lib/exercises/math/derivation/derivativeNumber/averageRateOfChangeFromImages.js +116 -0
  68. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.d.ts +8 -0
  69. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.d.ts.map +1 -0
  70. package/lib/exercises/math/derivation/derivativeNumber/derivativeNumberCalcul.js +142 -0
  71. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts +4 -0
  72. package/lib/exercises/math/derivation/derivativeNumber/index.d.ts.map +1 -0
  73. package/lib/exercises/math/derivation/derivativeNumber/index.js +4 -0
  74. package/lib/exercises/math/derivation/index.d.ts +1 -1
  75. package/lib/exercises/math/derivation/index.js +1 -1
  76. package/lib/exercises/math/derivation/variations/index.d.ts +1 -0
  77. package/lib/exercises/math/derivation/variations/index.d.ts.map +1 -1
  78. package/lib/exercises/math/derivation/variations/index.js +1 -0
  79. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.d.ts +7 -0
  80. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.d.ts.map +1 -0
  81. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.js +174 -0
  82. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts +13 -0
  83. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts.map +1 -0
  84. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.js +305 -0
  85. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts +11 -0
  86. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts.map +1 -0
  87. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.js +216 -0
  88. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.d.ts +9 -0
  89. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.d.ts.map +1 -0
  90. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.js +142 -0
  91. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts +5 -0
  92. package/lib/exercises/math/functions/exponential/algebraic/index.d.ts.map +1 -0
  93. package/lib/exercises/math/functions/exponential/algebraic/index.js +4 -0
  94. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.d.ts +14 -0
  95. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.d.ts.map +1 -0
  96. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.js +337 -0
  97. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts +11 -0
  98. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts.map +1 -0
  99. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.js +223 -0
  100. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts +9 -0
  101. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts.map +1 -0
  102. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.js +262 -0
  103. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts +9 -0
  104. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts.map +1 -0
  105. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.js +245 -0
  106. package/lib/exercises/math/functions/exponential/definition/index.d.ts +5 -0
  107. package/lib/exercises/math/functions/exponential/definition/index.d.ts.map +1 -0
  108. package/lib/exercises/math/functions/exponential/definition/index.js +4 -0
  109. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts +13 -0
  110. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts.map +1 -0
  111. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.js +366 -0
  112. package/lib/exercises/math/functions/exponential/expFactorization.d.ts.map +1 -1
  113. package/lib/exercises/math/functions/exponential/expFactorization.js +54 -42
  114. package/lib/exercises/math/functions/exponential/index.d.ts +2 -0
  115. package/lib/exercises/math/functions/exponential/index.d.ts.map +1 -1
  116. package/lib/exercises/math/functions/exponential/index.js +2 -0
  117. package/lib/exercises/math/functions/trinoms/devForm/coefficientsIdentification.d.ts.map +1 -1
  118. package/lib/exercises/math/functions/trinoms/devForm/coefficientsIdentification.js +30 -3
  119. package/lib/exercises/math/functions/trinoms/equation/deltaTrinom.d.ts.map +1 -1
  120. package/lib/exercises/math/functions/trinoms/equation/deltaTrinom.js +35 -1
  121. package/lib/exercises/math/functions/trinoms/equation/secondDegreeInequation.js +3 -0
  122. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.d.ts.map +1 -1
  123. package/lib/exercises/math/functions/trinoms/parabole/paraboleExpressionReading.js +1 -1
  124. package/lib/exercises/math/functions/trinoms/summitAndCanonical/alphaBetaInCanonicalForm.d.ts.map +1 -1
  125. package/lib/exercises/math/functions/trinoms/summitAndCanonical/alphaBetaInCanonicalForm.js +23 -1
  126. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.d.ts.map +1 -1
  127. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.js +29 -0
  128. package/lib/exercises/math/functions/variations/exp/index.d.ts +3 -0
  129. package/lib/exercises/math/functions/variations/exp/index.d.ts.map +1 -0
  130. package/lib/exercises/math/functions/variations/exp/index.js +2 -0
  131. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts +9 -0
  132. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts.map +1 -0
  133. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.js +96 -0
  134. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts +11 -0
  135. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts.map +1 -0
  136. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.js +190 -0
  137. package/lib/exercises/math/functions/variations/index.d.ts +1 -0
  138. package/lib/exercises/math/functions/variations/index.d.ts.map +1 -1
  139. package/lib/exercises/math/functions/variations/index.js +1 -0
  140. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.d.ts +12 -0
  141. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.d.ts.map +1 -0
  142. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.js +230 -0
  143. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.d.ts +10 -0
  144. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.d.ts.map +1 -0
  145. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.js +167 -0
  146. package/lib/exercises/math/geometry/cartesian/index.d.ts +3 -0
  147. package/lib/exercises/math/geometry/cartesian/index.d.ts.map +1 -1
  148. package/lib/exercises/math/geometry/cartesian/index.js +3 -0
  149. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.d.ts +10 -0
  150. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.d.ts.map +1 -0
  151. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.js +131 -0
  152. package/lib/exercises/math/geometry/circles/index.d.ts +2 -0
  153. package/lib/exercises/math/geometry/circles/index.d.ts.map +1 -0
  154. package/lib/exercises/math/geometry/circles/index.js +1 -0
  155. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.d.ts +11 -0
  156. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.d.ts.map +1 -0
  157. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.js +131 -0
  158. package/lib/exercises/math/geometry/euclidian/pinPointFromAxialOrCentralSymmetry.js +2 -2
  159. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.d.ts.map +1 -1
  160. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.js +0 -2
  161. package/lib/exercises/math/geometry/index.d.ts +1 -0
  162. package/lib/exercises/math/geometry/index.d.ts.map +1 -1
  163. package/lib/exercises/math/geometry/index.js +1 -0
  164. package/lib/exercises/math/geometry/thales/thales.js +1 -1
  165. package/lib/exercises/math/geometry/thales/thalesCalcul.js +1 -1
  166. package/lib/exercises/math/geometry/vectors/colinearity/determinant.js +1 -1
  167. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.d.ts +4 -0
  168. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.d.ts.map +1 -0
  169. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.js +3 -0
  170. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.d.ts +9 -0
  171. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.d.ts.map +1 -0
  172. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.js +247 -0
  173. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts +13 -0
  174. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts.map +1 -0
  175. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.js +452 -0
  176. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.d.ts +9 -0
  177. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.d.ts.map +1 -0
  178. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.js +253 -0
  179. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.d.ts +4 -0
  180. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.d.ts.map +1 -0
  181. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.js +3 -0
  182. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.d.ts +10 -0
  183. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.d.ts.map +1 -0
  184. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.js +174 -0
  185. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.d.ts +9 -0
  186. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.d.ts.map +1 -0
  187. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.js +231 -0
  188. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.d.ts +14 -0
  189. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.d.ts.map +1 -0
  190. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.js +292 -0
  191. package/lib/exercises/math/geometry/vectors/scalarProduct/angleFromScalarProduct.js +1 -1
  192. package/lib/exercises/math/geometry/vectors/scalarProduct/findCoordinatesToOrthogonalize.d.ts.map +1 -1
  193. package/lib/exercises/math/geometry/vectors/scalarProduct/findCoordinatesToOrthogonalize.js +33 -7
  194. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.d.ts +6 -0
  195. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.d.ts.map +1 -0
  196. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.js +5 -0
  197. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.d.ts +9 -0
  198. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.d.ts.map +1 -0
  199. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.js +202 -0
  200. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.d.ts +9 -0
  201. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.d.ts.map +1 -0
  202. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.js +127 -0
  203. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.d.ts +12 -0
  204. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.d.ts.map +1 -0
  205. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.js +167 -0
  206. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.d.ts +12 -0
  207. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.d.ts.map +1 -0
  208. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.js +180 -0
  209. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.d.ts +12 -0
  210. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.d.ts.map +1 -0
  211. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.js +235 -0
  212. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts +12 -0
  213. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts.map +1 -0
  214. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.js +423 -0
  215. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.d.ts +17 -0
  216. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.d.ts.map +1 -0
  217. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.js +347 -0
  218. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.d.ts +8 -0
  219. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.d.ts.map +1 -0
  220. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.js +301 -0
  221. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCoords.js +1 -1
  222. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.d.ts.map +1 -1
  223. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductViaCos.js +38 -1
  224. package/lib/exercises/math/probaStat/conditionalProbability.d.ts +4 -1
  225. package/lib/exercises/math/probaStat/conditionalProbability.d.ts.map +1 -1
  226. package/lib/exercises/math/probaStat/conditionalProbability.js +38 -5
  227. package/lib/exercises/math/probaStat/independancy/independancy.d.ts +9 -0
  228. package/lib/exercises/math/probaStat/independancy/independancy.d.ts.map +1 -0
  229. package/lib/exercises/math/probaStat/independancy/independancy.js +114 -0
  230. package/lib/exercises/math/probaStat/independancy/independancyFindCap.d.ts +9 -0
  231. package/lib/exercises/math/probaStat/independancy/independancyFindCap.d.ts.map +1 -0
  232. package/lib/exercises/math/probaStat/independancy/independancyFindCap.js +101 -0
  233. package/lib/exercises/math/probaStat/independancy/independancyFindCup.d.ts +9 -0
  234. package/lib/exercises/math/probaStat/independancy/independancyFindCup.d.ts.map +1 -0
  235. package/lib/exercises/math/probaStat/independancy/independancyFindCup.js +118 -0
  236. package/lib/exercises/math/probaStat/independancy/index.d.ts +5 -0
  237. package/lib/exercises/math/probaStat/independancy/index.d.ts.map +1 -0
  238. package/lib/exercises/math/probaStat/independancy/index.js +4 -0
  239. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.d.ts +10 -0
  240. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.d.ts.map +1 -0
  241. package/lib/exercises/math/probaStat/independancy/isIndependantFromDefinition.js +106 -0
  242. package/lib/exercises/math/probaStat/index.d.ts +1 -1
  243. package/lib/exercises/math/probaStat/index.d.ts.map +1 -1
  244. package/lib/exercises/math/probaStat/index.js +1 -1
  245. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.d.ts +9 -0
  246. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.d.ts.map +1 -0
  247. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.js +141 -0
  248. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.d.ts +10 -0
  249. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.d.ts.map +1 -0
  250. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.js +174 -0
  251. package/lib/exercises/math/probaStat/randomVariable/index.d.ts +1 -0
  252. package/lib/exercises/math/probaStat/randomVariable/index.d.ts.map +1 -1
  253. package/lib/exercises/math/probaStat/randomVariable/index.js +2 -0
  254. package/lib/exercises/math/probaStat/randomVariable/randomVariableStandardDeviation.js +1 -1
  255. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.d.ts.map +1 -1
  256. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceOutcomes.js +7 -0
  257. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.d.ts.map +1 -1
  258. package/lib/exercises/math/probaStat/twoStepExperiments/headsOrTailsTwiceProbas.js +7 -0
  259. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.d.ts.map +1 -1
  260. package/lib/exercises/math/probaStat/twoStepExperiments/numberPoolTwiceProbas.js +7 -0
  261. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.d.ts.map +1 -1
  262. package/lib/exercises/math/probaStat/twoStepExperiments/twoStepExperimentProbas.js +7 -0
  263. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.d.ts +9 -0
  264. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.d.ts.map +1 -0
  265. package/lib/exercises/math/sequences/arithmetic/arithmeticFindExplicitFormulaFirstTermRandom.js +118 -0
  266. package/lib/exercises/math/sequences/arithmetic/arithmeticFindRandomTermFromTwoTerms.d.ts.map +1 -1
  267. package/lib/exercises/math/sequences/arithmetic/arithmeticFindRandomTermFromTwoTerms.js +55 -6
  268. package/lib/exercises/math/sequences/arithmetic/arithmeticFindReasonRandomRange.d.ts.map +1 -1
  269. package/lib/exercises/math/sequences/arithmetic/arithmeticFindReasonRandomRange.js +42 -1
  270. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.d.ts +4 -1
  271. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.d.ts.map +1 -1
  272. package/lib/exercises/math/sequences/arithmetic/arithmeticFirstTermsSum.js +57 -7
  273. package/lib/exercises/math/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.d.ts.map +1 -1
  274. package/lib/exercises/math/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.js +24 -2
  275. package/lib/exercises/math/sequences/arithmetic/arithmeticThresholdFind.d.ts.map +1 -1
  276. package/lib/exercises/math/sequences/arithmetic/arithmeticThresholdFind.js +31 -8
  277. package/lib/exercises/math/sequences/arithmetic/index.d.ts +1 -1
  278. package/lib/exercises/math/sequences/arithmetic/index.d.ts.map +1 -1
  279. package/lib/exercises/math/sequences/arithmetic/index.js +1 -1
  280. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.d.ts.map +1 -1
  281. package/lib/exercises/math/sequences/arithmetic/recognizeArithmeticFromGraph.js +11 -1
  282. package/lib/exercises/math/sequences/generation/index.d.ts +2 -0
  283. package/lib/exercises/math/sequences/generation/index.d.ts.map +1 -0
  284. package/lib/exercises/math/sequences/generation/index.js +1 -0
  285. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.d.ts +8 -0
  286. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.d.ts.map +1 -0
  287. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.js +63 -0
  288. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstRankOne.js +5 -5
  289. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstTermRandom.d.ts.map +1 -1
  290. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstTermRandom.js +3 -1
  291. package/lib/exercises/math/sequences/geometric/geometricFindReason.d.ts.map +1 -1
  292. package/lib/exercises/math/sequences/geometric/geometricFindReason.js +41 -2
  293. package/lib/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.d.ts.map +1 -1
  294. package/lib/exercises/math/sequences/geometric/geometricRecurrenceFormulaUsage.js +28 -2
  295. package/lib/exercises/math/sequences/graph/index.d.ts +2 -0
  296. package/lib/exercises/math/sequences/graph/index.d.ts.map +1 -0
  297. package/lib/exercises/math/sequences/graph/index.js +1 -0
  298. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.d.ts +11 -0
  299. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.d.ts.map +1 -0
  300. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.js +113 -0
  301. package/lib/exercises/math/sequences/index.d.ts +2 -0
  302. package/lib/exercises/math/sequences/index.d.ts.map +1 -1
  303. package/lib/exercises/math/sequences/index.js +2 -0
  304. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.d.ts +12 -0
  305. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.d.ts.map +1 -0
  306. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.js +114 -0
  307. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.d.ts +12 -0
  308. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.d.ts.map +1 -0
  309. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.js +111 -0
  310. package/lib/exercises/math/sequences/notation/index.d.ts +3 -0
  311. package/lib/exercises/math/sequences/notation/index.d.ts.map +1 -0
  312. package/lib/exercises/math/sequences/notation/index.js +2 -0
  313. package/lib/exercises/math/sequences/sequenceEvaluation.d.ts.map +1 -1
  314. package/lib/exercises/math/sequences/sequenceEvaluation.js +22 -2
  315. package/lib/exercises/math/spaceGeometry/basis/findSpacePointOnRectangularPrism.d.ts.map +1 -1
  316. package/lib/exercises/math/spaceGeometry/basis/findSpacePointOnRectangularPrism.js +0 -1
  317. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts.map +1 -1
  318. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.js +0 -2
  319. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.d.ts +9 -0
  320. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.d.ts.map +1 -0
  321. package/lib/exercises/math/trigonometry/circle/areReelsOnTheSameTrigoCirclePoint.js +107 -0
  322. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts +10 -0
  323. package/lib/exercises/math/trigonometry/circle/associatePoint.d.ts.map +1 -0
  324. package/lib/exercises/math/trigonometry/circle/associatePoint.js +86 -0
  325. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.d.ts +10 -0
  326. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.d.ts.map +1 -0
  327. package/lib/exercises/math/trigonometry/circle/associateReelToTrigoCirclePoint.js +205 -0
  328. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts +7 -0
  329. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.d.ts.map +1 -0
  330. package/lib/exercises/math/trigonometry/circle/findAngleFromCosAndSin.js +121 -0
  331. package/lib/exercises/math/trigonometry/circle/index.d.ts +7 -0
  332. package/lib/exercises/math/trigonometry/circle/index.d.ts.map +1 -0
  333. package/lib/exercises/math/trigonometry/circle/index.js +7 -0
  334. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts +10 -0
  335. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.d.ts.map +1 -0
  336. package/lib/exercises/math/trigonometry/circle/mainAngleMeasure.js +100 -0
  337. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.d.ts +8 -0
  338. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.d.ts.map +1 -0
  339. package/lib/exercises/math/trigonometry/circle/mainRemarkableValues.js +97 -0
  340. package/lib/exercises/math/trigonometry/circle/remarkableValues.d.ts +10 -0
  341. package/lib/exercises/math/trigonometry/circle/remarkableValues.d.ts.map +1 -0
  342. package/lib/exercises/math/trigonometry/circle/remarkableValues.js +112 -0
  343. package/lib/exercises/math/trigonometry/functions/basicEquationCos.d.ts +7 -0
  344. package/lib/exercises/math/trigonometry/functions/basicEquationCos.d.ts.map +1 -0
  345. package/lib/exercises/math/trigonometry/functions/basicEquationCos.js +92 -0
  346. package/lib/exercises/math/trigonometry/functions/basicEquationSin.d.ts +7 -0
  347. package/lib/exercises/math/trigonometry/functions/basicEquationSin.d.ts.map +1 -0
  348. package/lib/exercises/math/trigonometry/functions/basicEquationSin.js +104 -0
  349. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.d.ts +7 -0
  350. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.d.ts.map +1 -0
  351. package/lib/exercises/math/trigonometry/functions/basicTrigoSystemEquation.js +83 -0
  352. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts +8 -0
  353. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.d.ts.map +1 -0
  354. package/lib/exercises/math/trigonometry/functions/equationCosOnRandomInterval.js +111 -0
  355. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.d.ts +8 -0
  356. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.d.ts.map +1 -0
  357. package/lib/exercises/math/trigonometry/functions/equationSinOnRandomInterval.js +101 -0
  358. package/lib/exercises/math/trigonometry/functions/index.d.ts +6 -0
  359. package/lib/exercises/math/trigonometry/functions/index.d.ts.map +1 -0
  360. package/lib/exercises/math/trigonometry/functions/index.js +6 -0
  361. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.d.ts +9 -0
  362. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.d.ts.map +1 -0
  363. package/lib/exercises/math/trigonometry/functions/trigoAssociateAngle.js +151 -0
  364. package/lib/exercises/math/trigonometry/index.d.ts +3 -14
  365. package/lib/exercises/math/trigonometry/index.d.ts.map +1 -1
  366. package/lib/exercises/math/trigonometry/index.js +3 -14
  367. package/lib/exercises/math/trigonometry/triangle/index.d.ts +7 -0
  368. package/lib/exercises/math/trigonometry/triangle/index.d.ts.map +1 -0
  369. package/lib/exercises/math/trigonometry/triangle/index.js +6 -0
  370. package/lib/exercises/math/trigonometry/triangle/trigonometry.d.ts +10 -0
  371. package/lib/exercises/math/trigonometry/triangle/trigonometry.d.ts.map +1 -0
  372. package/lib/exercises/math/trigonometry/triangle/trigonometry.js +207 -0
  373. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.d.ts +10 -0
  374. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.d.ts.map +1 -0
  375. package/lib/exercises/math/trigonometry/triangle/trigonometryAngleCalcul.js +174 -0
  376. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.d.ts +11 -0
  377. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.d.ts.map +1 -0
  378. package/lib/exercises/math/trigonometry/triangle/trigonometrySideCalcul.js +224 -0
  379. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.d.ts +13 -0
  380. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.d.ts.map +1 -0
  381. package/lib/exercises/math/trigonometry/triangle/trigonometrySideName.js +189 -0
  382. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.d.ts +13 -0
  383. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.d.ts.map +1 -0
  384. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.js +290 -0
  385. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.d.ts +18 -0
  386. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.d.ts.map +1 -0
  387. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaUse.js +386 -0
  388. package/lib/exercises/pc/mathExosInPC.d.ts +2 -2
  389. package/lib/exercises/pc/mathExosInPC.d.ts.map +1 -1
  390. package/lib/exercises/pc/mathExosInPC.js +2 -2
  391. package/lib/exercises/vea/cartesianLineVEA.d.ts +2 -0
  392. package/lib/exercises/vea/cartesianLineVEA.d.ts.map +1 -0
  393. package/lib/exercises/vea/cartesianLineVEA.js +1 -0
  394. package/lib/index.d.ts +186 -27
  395. package/lib/index.d.ts.map +1 -1
  396. package/lib/math/geometry/line.d.ts +2 -0
  397. package/lib/math/geometry/line.d.ts.map +1 -1
  398. package/lib/math/geometry/line.js +7 -0
  399. package/lib/math/geometry/point.d.ts +1 -0
  400. package/lib/math/geometry/point.d.ts.map +1 -1
  401. package/lib/math/geometry/point.js +5 -0
  402. package/lib/math/geometry/polygons/relationPP.d.ts +8 -0
  403. package/lib/math/geometry/polygons/relationPP.d.ts.map +1 -0
  404. package/lib/math/geometry/polygons/relationPP.js +41 -0
  405. package/lib/math/geometry/segment.d.ts +1 -1
  406. package/lib/math/geometry/vector.d.ts +2 -1
  407. package/lib/math/geometry/vector.d.ts.map +1 -1
  408. package/lib/math/geometry/vector.js +1 -1
  409. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  410. package/lib/math/numbers/reals/real.js +2 -0
  411. package/lib/math/polynomials/trinom.d.ts +1 -1
  412. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  413. package/lib/math/polynomials/trinom.js +15 -6
  414. package/lib/math/utils/arithmetic/primeFactors.js +1 -1
  415. package/lib/math/utils/geometry/randomVecs2.d.ts +6 -0
  416. package/lib/math/utils/geometry/randomVecs2.d.ts.map +1 -0
  417. package/lib/math/utils/geometry/randomVecs2.js +34 -0
  418. package/lib/playground.d.ts.map +1 -1
  419. package/lib/playground.js +3 -1
  420. package/lib/tests/questionTest.d.ts.map +1 -1
  421. package/lib/tests/questionTest.js +2 -2
  422. package/lib/tree/nodes/algebraicNode.d.ts +1 -0
  423. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  424. package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
  425. package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
  426. package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
  427. package/lib/tree/nodes/functions/expNode.d.ts +1 -1
  428. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  429. package/lib/tree/nodes/functions/sqrtNode.d.ts +2 -1
  430. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  431. package/lib/tree/nodes/functions/sqrtNode.js +17 -6
  432. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
  433. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  434. package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
  435. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -1
  436. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  437. package/lib/tree/nodes/operators/fractionNode.js +6 -4
  438. package/lib/tree/nodes/operators/multiplyNode.js +1 -1
  439. package/lib/tree/nodes/sets/intervalNode.d.ts +6 -0
  440. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  441. package/lib/tree/nodes/sets/namedIntervalNode.d.ts +31 -0
  442. package/lib/tree/nodes/sets/namedIntervalNode.d.ts.map +1 -0
  443. package/lib/tree/nodes/sets/namedIntervalNode.js +77 -0
  444. package/package.json +1 -1
@@ -0,0 +1,423 @@
1
+ import { addValidProp, shuffleProps, GeneratorOptionType, GeneratorOptionTarget, tryToAddWrongProp, propWhile, } from "../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { orange } from "../../../../../geogebra/colors.js";
4
+ import { GeogebraConstructor } from "../../../../../geogebra/geogebraConstructor.js";
5
+ import { Angle } from "../../../../../math/geometry/angle.js";
6
+ import { Point, PointConstructor, } from "../../../../../math/geometry/point.js";
7
+ import { relationPP } from "../../../../../math/geometry/polygons/relationPP.js";
8
+ import { Segment } from "../../../../../math/geometry/segment.js";
9
+ import { Triangle } from "../../../../../math/geometry/triangles/triangle.js";
10
+ import { VectorConstructor } from "../../../../../math/geometry/vector.js";
11
+ import { randint } from "../../../../../math/utils/random/randint.js";
12
+ import { abs } from "../../../../../tree/nodes/functions/absNode.js";
13
+ import { add } from "../../../../../tree/nodes/operators/addNode.js";
14
+ import { frac, isFractionNode, } from "../../../../../tree/nodes/operators/fractionNode.js";
15
+ import { multiply } from "../../../../../tree/nodes/operators/multiplyNode.js";
16
+ import { substract } from "../../../../../tree/nodes/operators/substractNode.js";
17
+ import { parseAlgebraic } from "../../../../../tree/parsers/latexParser.js";
18
+ import { coinFlip } from "../../../../../utils/alea/coinFlip.js";
19
+ import { random } from "../../../../../utils/alea/random.js";
20
+ import { handleVEAError } from "../../../../../utils/errors/handleVEAError.js";
21
+ const getHydratedPoints = (identifiers) => {
22
+ const { pointIds } = identifiers;
23
+ return pointIds.map((pointIds) => PointConstructor.fromIdentifiers(pointIds));
24
+ };
25
+ const getInstruction = (identifiers) => {
26
+ const [B, A, C, _] = getHydratedPoints(identifiers);
27
+ return `Soient les points :
28
+
29
+ ${[A, B, C].map((point) => `- $${point.toTexWithCoords()}$`).join(`
30
+ `)}
31
+
32
+ Dans $BAC$, $H$ est le pied de la hauteur issue de $A$.
33
+
34
+ Calculer la longueur $BH$.
35
+
36
+ *Donner la valeur exacte.*`;
37
+ };
38
+ const getAnswerNode = (identifiers) => {
39
+ const [pointB, pointA, pointC, _] = getHydratedPoints(identifiers);
40
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
41
+ const nodeLengthBC = vecBC.getNorm();
42
+ const vecBA = VectorConstructor.fromPoints(pointB, pointA);
43
+ return frac(abs(vecBA.scalarProduct(vecBC)), nodeLengthBC);
44
+ };
45
+ const getAnswer = (identifiers) => {
46
+ return getAnswerNode(identifiers).simplify().toTex();
47
+ };
48
+ const getHint = () => {
49
+ return `Combien vaut le produit scalaire $\\overrightarrow{BA} \\cdot \\overrightarrow{BC}$ ?
50
+
51
+ Est-ce qu'il est égal à $\\overrightarrow{BH} \\cdot \\overrightarrow{BC}$ ? Et pourquoi ?`;
52
+ };
53
+ const getCorrection = (identifiers) => {
54
+ const [pointB, pointA, pointC, _] = getHydratedPoints(identifiers);
55
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
56
+ const nodeLengthBC = vecBC.getNorm();
57
+ const vecBA = VectorConstructor.fromPoints(pointB, pointA);
58
+ const nodeScalarProduct = vecBA.scalarProduct(vecBC);
59
+ return `Dans $BAC$, $H$ est le pied de la hauteur issue de $A$.
60
+
61
+ Autrement dit, $H$ est le projeté orthogonal de $A$ sur $(BC)$.
62
+
63
+ Par conséquent :
64
+
65
+ $$
66
+ \\overrightarrow{BA} \\cdot \\overrightarrow{BC} = \\overrightarrow{BH} \\cdot \\overrightarrow{BC}
67
+ $$
68
+
69
+ Or, puisque $B$,$C$ et $H$ sont alignés :
70
+
71
+ $$
72
+ \\lvert \\overrightarrow{BH} \\cdot \\overrightarrow{BC} \\rvert = BH \\times BC
73
+ $$
74
+
75
+ On a donc :
76
+
77
+ $$
78
+ BH = \\frac{\\lvert \\overrightarrow{BA} \\cdot \\overrightarrow{BC} \\rvert}{BC}
79
+ $$
80
+
81
+ Application numérique :
82
+
83
+ $$
84
+ \\overrightarrow{BA} = ${vecBA.toCoords()}
85
+ $$
86
+
87
+ $$
88
+ \\overrightarrow{BC} = ${vecBC.toCoords()}
89
+ $$
90
+
91
+ $$
92
+ \\overrightarrow{BA} \\cdot \\overrightarrow{BC} = ${nodeScalarProduct.toTex()}
93
+ $$
94
+
95
+ $$
96
+ BC = ${nodeLengthBC.toTex()}
97
+ $$
98
+
99
+ $$
100
+ BH = ${getAnswer(identifiers)}
101
+ $$
102
+
103
+ `;
104
+ };
105
+ const getGGBOptions = (identifiers) => {
106
+ const [B, A, C, H] = getHydratedPoints(identifiers);
107
+ const triangle = new Triangle([B, A, C]);
108
+ const ggb = new GeogebraConstructor({
109
+ commands: [
110
+ //triangle
111
+ ...triangle.commands,
112
+ //AH
113
+ ...H.toGGBCommand({ isFixed: true, showLabel: true }),
114
+ ...new Segment(A, H).toGGBCommands(false, {
115
+ isFixed: true,
116
+ style: 2,
117
+ color: `${orange}`,
118
+ }),
119
+ //BH
120
+ ...new Segment(B, H).toGGBCommands(false, {
121
+ isFixed: true,
122
+ style: 2,
123
+ }),
124
+ //angle
125
+ ...new Angle([A, H, C]).toCommands(),
126
+ ],
127
+ hideAxes: true,
128
+ });
129
+ return ggb.getOptions({
130
+ coords: ggb.getCoordsForPoints([B, A, C, H]),
131
+ });
132
+ };
133
+ const getPropositions = (n, { answer, ...identifiers }) => {
134
+ const propositions = [];
135
+ addValidProp(propositions, answer);
136
+ const nodeAnswer = getAnswerNode(identifiers);
137
+ //student does scalarProduct(CA,BC) instead of scalarProduct(BA,BC)
138
+ function createNodeMistakeWrongScalarProduct(identifiers) {
139
+ const [pointB, pointA, pointC, _] = getHydratedPoints(identifiers);
140
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
141
+ const nodeLengthBC = vecBC.getNorm();
142
+ const vecCA = VectorConstructor.fromPoints(pointC, pointA);
143
+ const nodeScalarProduct = vecCA.scalarProduct(vecBC);
144
+ return frac(abs(nodeScalarProduct), nodeLengthBC).simplify();
145
+ }
146
+ const nodeWrongSP = createNodeMistakeWrongScalarProduct(identifiers);
147
+ tryToAddWrongProp(propositions, nodeWrongSP.toTex());
148
+ //student does scalarProduct(CA,BC) instead of scalarProduct(BA,BC) + divides by CA
149
+ function createNodeMistakeWrongScalarProductAndWrongDen(identifiers) {
150
+ const [pointB, pointA, pointC, _] = getHydratedPoints(identifiers);
151
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
152
+ const vecCA = VectorConstructor.fromPoints(pointC, pointA);
153
+ const nodeLengthCA = vecCA.getNorm();
154
+ const nodeScalarProduct = vecCA.scalarProduct(vecBC);
155
+ return frac(abs(nodeScalarProduct), nodeLengthCA).simplify();
156
+ }
157
+ const nodeWrongSPAndDen = createNodeMistakeWrongScalarProductAndWrongDen(identifiers);
158
+ tryToAddWrongProp(propositions, nodeWrongSPAndDen.toTex());
159
+ //terror: wrong sign
160
+ function createNodeTerrorSign(nodeSrc) {
161
+ if (isFractionNode(nodeSrc)) {
162
+ const nodeNum = nodeSrc.leftChild;
163
+ const nodeDen = nodeSrc.rightChild;
164
+ const nodeWrong = frac(multiply(-1, nodeNum).simplify(), nodeDen);
165
+ return nodeWrong;
166
+ }
167
+ }
168
+ const nodeTerrorSign = createNodeTerrorSign(coinFlip() ? nodeAnswer : random([nodeWrongSP, nodeWrongSPAndDen]));
169
+ if (nodeTerrorSign) {
170
+ tryToAddWrongProp(propositions, nodeTerrorSign.simplify().toTex());
171
+ }
172
+ //terror: frac num (related to: student has made a mistake when computing scalarProduct)
173
+ function createNodeTerrorFracNum(nodeSrc) {
174
+ if (isFractionNode(nodeSrc)) {
175
+ const nodeNum = nodeSrc.leftChild;
176
+ const nodeDen = nodeSrc.rightChild;
177
+ const nodeWrong = frac(add(nodeNum, randint(-3, 3, [0])).simplify(), nodeDen);
178
+ return nodeWrong;
179
+ }
180
+ }
181
+ const nodeTerrorFracNum = createNodeTerrorFracNum(coinFlip()
182
+ ? nodeAnswer
183
+ : random([
184
+ nodeWrongSP,
185
+ nodeWrongSPAndDen,
186
+ ...(nodeTerrorSign ? [nodeTerrorSign] : []),
187
+ ]));
188
+ if (nodeTerrorFracNum) {
189
+ tryToAddWrongProp(propositions, nodeTerrorFracNum.simplify().toTex());
190
+ }
191
+ //filler
192
+ propWhile(propositions, n, () => {
193
+ const [B, A, C, H] = getHydratedPoints(identifiers);
194
+ const BWrong = new Point("B", add(B.x, randint(-3, 3, [0])).simplify(), B.y);
195
+ const identifiersWrong = Object.assign({}, identifiers, {
196
+ pointIds: [BWrong, A, C, H].map((point) => point.toIdentifiers()),
197
+ });
198
+ const nodeWrong = getAnswerNode(identifiersWrong);
199
+ tryToAddWrongProp(propositions, nodeWrong.simplify().toTex());
200
+ });
201
+ return shuffleProps(propositions, n);
202
+ };
203
+ const getKeys = () => {
204
+ return [];
205
+ };
206
+ const isAnswerValid = (ans, { answer, ...identifiers }) => {
207
+ try {
208
+ const nodeAns = parseAlgebraic(ans);
209
+ const nodeAnswer = getAnswerNode(identifiers);
210
+ return substract(nodeAns, nodeAnswer).simplify().evaluate() === 0;
211
+ }
212
+ catch (err) {
213
+ return handleVEAError(err);
214
+ }
215
+ };
216
+ const getScalarProductComputeBHQuestion = (optsIn) => {
217
+ const arrayedOptions = optsIn ?? optsDefault;
218
+ const opts = {
219
+ sectorOfPointH: random(arrayedOptions.sectorOfPointH),
220
+ isPositiveCoordsOnly: arrayedOptions.isPositiveCoordsOnly,
221
+ };
222
+ const { sectorOfPointH, isPositiveCoordsOnly } = opts;
223
+ function createRandomIdentifiers() {
224
+ const offsetBtoC = 10;
225
+ const pointB = (() => {
226
+ if (isPositiveCoordsOnly) {
227
+ return new Point("B", randint(0, 10), randint(0, 10));
228
+ }
229
+ else {
230
+ return new Point("B", randint(-10, 0), randint(-10, 0));
231
+ }
232
+ })();
233
+ const pointC = new Point("C", pointB.x.evaluate() + offsetBtoC + randint(-2, 8), randint(0, 10, [pointB.y.evaluate()]));
234
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
235
+ const nodeLengthBC = vecBC.getNorm();
236
+ const vecBCUnited = vecBC.times(frac(1, nodeLengthBC));
237
+ const vecOrthUnited = vecBCUnited.getOrthogonal().times((-1).toTree());
238
+ //rect PQRS will contain A, D is Proj(P,(BC)), E is Proj(S,(BC))
239
+ const nodeOffsetDtoE = (10).toTree();
240
+ const nodeOffsetBtoD = (() => {
241
+ switch (sectorOfPointH) {
242
+ case "Entre $B$ et $C$":
243
+ return (0).toTree();
244
+ case "Après $C$":
245
+ return nodeLengthBC;
246
+ case "Avant $B$":
247
+ return multiply((-1).toTree(), nodeOffsetDtoE);
248
+ default:
249
+ throw new Error("Unsupported opts.sectorOfPointH: " + opts.sectorOfPointH);
250
+ }
251
+ })();
252
+ const pointD = vecBCUnited.times(nodeOffsetBtoD).getEndPoint(pointB);
253
+ const pointE = vecBCUnited.times(nodeOffsetDtoE).getEndPoint(pointD);
254
+ const minOffsetBCtoA = 3;
255
+ const maxOffsetBCtoA = minOffsetBCtoA + 10;
256
+ const pointP = vecOrthUnited
257
+ .times(minOffsetBCtoA.toTree())
258
+ .getEndPoint(pointD);
259
+ const pointQ = vecOrthUnited
260
+ .times((maxOffsetBCtoA - minOffsetBCtoA).toTree())
261
+ .getEndPoint(pointP);
262
+ const pointS = vecOrthUnited
263
+ .times(minOffsetBCtoA.toTree())
264
+ .getEndPoint(pointE);
265
+ const pointR = vecOrthUnited
266
+ .times((maxOffsetBCtoA - minOffsetBCtoA).toTree())
267
+ .getEndPoint(pointS);
268
+ function getCoordsForPoints(points) {
269
+ const xMin = Math.min(...points.map((p) => p.x.evaluate()));
270
+ const xMax = Math.max(...points.map((p) => p.x.evaluate()));
271
+ const yMin = Math.min(...points.map((p) => p.y.evaluate()));
272
+ const yMax = Math.max(...points.map((p) => p.y.evaluate()));
273
+ return [xMin, xMax, yMin, yMax];
274
+ }
275
+ function getRandomIntegerPointInside(points) {
276
+ const [xMin, xMax, yMin, yMax] = getCoordsForPoints(points);
277
+ let point;
278
+ let counter = -1;
279
+ let isValid = false;
280
+ while (!isValid && counter < 1000) {
281
+ counter++;
282
+ const x = randint(Math.ceil(xMin), Math.floor(xMax));
283
+ const y = randint(Math.ceil(yMin), Math.floor(yMax));
284
+ const pointCandidate = new Point("RIP", x, y);
285
+ isValid = relationPP(pointCandidate, points) !== -1;
286
+ if (isValid) {
287
+ point = pointCandidate;
288
+ }
289
+ }
290
+ if (!isValid) {
291
+ throw new Error("getRandomIntegerPointInside: too many iterations");
292
+ }
293
+ return point;
294
+ }
295
+ const pointRand = getRandomIntegerPointInside([
296
+ pointP,
297
+ pointQ,
298
+ pointR,
299
+ pointS,
300
+ ]);
301
+ const pointA = new Point("A", pointRand.x, pointRand.y);
302
+ const vecBA = VectorConstructor.fromPoints(pointB, pointA);
303
+ const vecBH = vecBCUnited.times(frac(vecBA.scalarProduct(vecBC), nodeLengthBC));
304
+ const pointH = vecBH.getEndPoint(pointB, "H");
305
+ return {
306
+ pointIds: [pointB, pointA, pointC, pointH].map((point) => point.toIdentifiers()),
307
+ };
308
+ }
309
+ function isIntegerPoint(point) {
310
+ const isIntegerX = () => point.x.evaluate() % 1 === 0;
311
+ const isIntegerY = () => point.y.evaluate() % 1 === 0;
312
+ return isIntegerX() && isIntegerY();
313
+ }
314
+ function isPositiveCoords(point) {
315
+ const isPositiveX = () => point.x.evaluate() >= 0;
316
+ const isPositiveY = () => point.y.evaluate() >= 0;
317
+ return isPositiveX() && isPositiveY();
318
+ }
319
+ function isValidIdentifiers(identifiersCandidate) {
320
+ const [B, A, C, H] = getHydratedPoints(identifiersCandidate);
321
+ const minDistance = 2;
322
+ const isHFarEnough = () => B.distanceTo(H) > minDistance && C.distanceTo(H) > minDistance;
323
+ const isValidPositivelyWise = () => isPositiveCoordsOnly
324
+ ? isPositiveCoords(B) && isPositiveCoords(A) && isPositiveCoords(C)
325
+ : true;
326
+ return !isIntegerPoint(H) && isHFarEnough() && isValidPositivelyWise();
327
+ }
328
+ let identifiers;
329
+ let counter = -1;
330
+ let isValid = false;
331
+ while (!isValid && counter < 100) {
332
+ counter++;
333
+ try {
334
+ const identifiersCandidate = createRandomIdentifiers();
335
+ isValid = isValidIdentifiers(identifiersCandidate);
336
+ if (isValid) {
337
+ identifiers = identifiersCandidate;
338
+ }
339
+ }
340
+ catch (_) {
341
+ (() => { })();
342
+ }
343
+ }
344
+ if (!isValid) {
345
+ const pointB = new Point("B", 0, 0);
346
+ const pointC = new Point("C", 10, 1);
347
+ const pointA = new Point("A", 4, 7);
348
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
349
+ const nodeLengthBC = vecBC.getNorm();
350
+ const vecBCUnited = vecBC.times(frac(1, nodeLengthBC));
351
+ const vecBA = VectorConstructor.fromPoints(pointB, pointA);
352
+ const vecBH = vecBCUnited.times(frac(vecBA.scalarProduct(vecBC), nodeLengthBC));
353
+ const pointH = vecBH.getEndPoint(pointB);
354
+ const identifiersDefault = {
355
+ pointIds: [pointB, pointA, pointC, pointH].map((point) => point.toIdentifiers()),
356
+ };
357
+ identifiers = identifiersDefault;
358
+ }
359
+ return getQuestionFromIdentifiers(identifiers, opts);
360
+ };
361
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
362
+ const question = {
363
+ answer: getAnswer(identifiers, opts),
364
+ instruction: getInstruction(identifiers, opts),
365
+ keys: getKeys(identifiers, opts),
366
+ answerFormat: "tex",
367
+ identifiers,
368
+ hint: getHint(identifiers, opts),
369
+ correction: getCorrection(identifiers, opts),
370
+ ggbOptions: getGGBOptions(identifiers, opts),
371
+ options: opts,
372
+ };
373
+ return question;
374
+ };
375
+ const optsDefault = {
376
+ sectorOfPointH: ["Entre $B$ et $C$"],
377
+ isPositiveCoordsOnly: true,
378
+ };
379
+ const options = [
380
+ {
381
+ id: "sectorOfPointH",
382
+ label: "Position du point $H$",
383
+ target: GeneratorOptionTarget.generation,
384
+ type: GeneratorOptionType.multiselect,
385
+ values: ["Entre $B$ et $C$", "Après $C$", "Avant $B$"],
386
+ defaultValue: optsDefault.sectorOfPointH,
387
+ },
388
+ {
389
+ id: "isPositiveCoordsOnly",
390
+ label: "Coordonnées positives uniquement",
391
+ target: GeneratorOptionTarget.generation,
392
+ type: GeneratorOptionType.checkbox,
393
+ defaultValue: optsDefault.isPositiveCoordsOnly,
394
+ },
395
+ ];
396
+ export const scalarProductComputeBH = {
397
+ id: "scalarProductComputeBH",
398
+ connector: "=",
399
+ label: "À partir de $A$, $B$ et $C$ ($H$ étant le projeté de $A$ sur $(BC)$), calculer $BH$",
400
+ isSingleStep: true,
401
+ generator: (nb, opts) => getDistinctQuestions(() => getScalarProductComputeBHQuestion(opts), nb),
402
+ options,
403
+ validateOptions: (opts) => {
404
+ return {
405
+ valid: !!(opts?.sectorOfPointH.length > 0),
406
+ message: "Veuillez choisir au moins un secteur pour le point $H$.",
407
+ };
408
+ },
409
+ qcmTimer: 60,
410
+ freeTimer: 60,
411
+ ggbTimer: 60,
412
+ getPropositions,
413
+ isAnswerValid,
414
+ subject: "Mathématiques",
415
+ getAnswer,
416
+ getGGBOptions,
417
+ getInstruction,
418
+ hasGeogebra: true,
419
+ getQuestionFromIdentifiers,
420
+ getHint,
421
+ getCorrection,
422
+ hasHintAndCorrection: true,
423
+ };
@@ -0,0 +1,17 @@
1
+ import { Exercise } from "../../../../../exercises/exercise.js";
2
+ import { PointIdentifiers } from "../../../../../math/geometry/point.js";
3
+ import { VectorIdentifiers } from "../../../../../math/geometry/vector.js";
4
+ type Identifiers = {
5
+ vecIds1: VectorIdentifiers;
6
+ vecIds2: VectorIdentifiers;
7
+ pointIds1A: PointIdentifiers;
8
+ pointIds2A: PointIdentifiers;
9
+ isVec1OnAxis: boolean;
10
+ isOnAxisX: boolean;
11
+ };
12
+ type Options = {
13
+ isSameStartPoint: boolean;
14
+ };
15
+ export declare const scalarProductOfVectsOnGrid1: Exercise<Identifiers, Options>;
16
+ export {};
17
+ //# sourceMappingURL=scalarProductOfVectsOnGrid1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalarProductOfVectsOnGrid1.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAmBT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAGL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGL,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAWvC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAiYF,KAAK,OAAO,GAAG;IACb,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAgBF,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAyBtE,CAAC"}