math-exercises 3.0.158 → 3.0.160

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 (268) hide show
  1. package/lib/exercises/math/calculLitteral/equation/exp/expOfFEqualsExpOfGEquation.js +7 -6
  2. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.d.ts.map +1 -1
  3. package/lib/exercises/math/calculLitteral/equation/exp/expOfTrinomEquals1Equation.js +88 -9
  4. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts.map +1 -1
  5. package/lib/exercises/math/calculLitteral/equation/factorizeEquation.js +8 -2
  6. package/lib/exercises/math/calculLitteral/equation/index.d.ts +1 -0
  7. package/lib/exercises/math/calculLitteral/equation/index.d.ts.map +1 -1
  8. package/lib/exercises/math/calculLitteral/equation/index.js +1 -0
  9. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -1
  10. package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.js +27 -2
  11. package/lib/exercises/math/calculLitteral/equation/solveByFactorizingWithIdRmq3.d.ts.map +1 -1
  12. package/lib/exercises/math/calculLitteral/equation/solveByFactorizingWithIdRmq3.js +1 -3
  13. package/lib/exercises/math/calculLitteral/equation/square/equationSquareWithSteps.d.ts.map +1 -1
  14. package/lib/exercises/math/calculLitteral/equation/square/equationSquareWithSteps.js +0 -1
  15. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.d.ts.map +1 -1
  16. package/lib/exercises/math/calculLitteral/inequations/exp/expOfFEqualsExpOfGInequation.js +11 -4
  17. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.d.ts.map +1 -1
  18. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.js +11 -5
  19. package/lib/exercises/math/calculLitteral/inequations/index.d.ts +1 -0
  20. package/lib/exercises/math/calculLitteral/inequations/index.d.ts.map +1 -1
  21. package/lib/exercises/math/calculLitteral/inequations/index.js +1 -0
  22. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.d.ts.map +1 -1
  23. package/lib/exercises/math/derivation/derivative/exp/expDerivativeFour.js +91 -21
  24. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.d.ts.map +1 -1
  25. package/lib/exercises/math/derivation/derivative/exp/expDerivativeOne.js +63 -43
  26. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.d.ts.map +1 -1
  27. package/lib/exercises/math/derivation/derivative/exp/expDerivativeThree.js +72 -49
  28. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.d.ts.map +1 -1
  29. package/lib/exercises/math/derivation/derivative/exp/expDerivativeTwo.js +19 -19
  30. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.d.ts.map +1 -1
  31. package/lib/exercises/math/derivation/derivative/exp/expOverExpDerivative.js +26 -14
  32. package/lib/exercises/math/derivation/derivative/exp/index.d.ts +1 -0
  33. package/lib/exercises/math/derivation/derivative/exp/index.d.ts.map +1 -1
  34. package/lib/exercises/math/derivation/derivative/exp/index.js +1 -0
  35. package/lib/exercises/math/derivation/variations/index.d.ts +1 -0
  36. package/lib/exercises/math/derivation/variations/index.d.ts.map +1 -1
  37. package/lib/exercises/math/derivation/variations/index.js +1 -0
  38. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.d.ts +7 -0
  39. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.d.ts.map +1 -0
  40. package/lib/exercises/math/derivation/variations/readExtremaAbscissFromDerivativeCurve.js +174 -0
  41. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.d.ts.map +1 -1
  42. package/lib/exercises/math/functions/exponential/algebraic/approxExpAPlusB.js +30 -3
  43. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.d.ts.map +1 -1
  44. package/lib/exercises/math/functions/exponential/algebraic/approxExpKa.js +12 -7
  45. package/lib/exercises/math/functions/exponential/algebraic/approxExpN.js +1 -1
  46. package/lib/exercises/math/functions/exponential/algebraic/rewriteExpUsingExpA.js +2 -2
  47. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.d.ts.map +1 -1
  48. package/lib/exercises/math/functions/exponential/definition/approxExpAPlusH.js +33 -44
  49. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.d.ts.map +1 -1
  50. package/lib/exercises/math/functions/exponential/definition/expAntecedentFromGraph.js +80 -8
  51. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.d.ts.map +1 -1
  52. package/lib/exercises/math/functions/exponential/definition/expImageFromGraph.js +80 -25
  53. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.d.ts.map +1 -1
  54. package/lib/exercises/math/functions/exponential/definition/isPlausibleExpFromGraph.js +6 -15
  55. package/lib/exercises/math/functions/exponential/expFactorization.d.ts.map +1 -1
  56. package/lib/exercises/math/functions/exponential/expFactorization.js +54 -42
  57. package/lib/exercises/math/functions/exponential/index.d.ts +2 -0
  58. package/lib/exercises/math/functions/exponential/index.d.ts.map +1 -1
  59. package/lib/exercises/math/functions/exponential/index.js +2 -0
  60. package/lib/exercises/math/functions/trinoms/equation/secondDegreeInequation.js +3 -0
  61. package/lib/exercises/math/functions/trinoms/factoForm/index.d.ts +1 -0
  62. package/lib/exercises/math/functions/trinoms/factoForm/index.d.ts.map +1 -1
  63. package/lib/exercises/math/functions/trinoms/factoForm/index.js +1 -0
  64. package/lib/exercises/math/functions/trinoms/factoForm/trinomDevelopFactorizedForm.d.ts +13 -0
  65. package/lib/exercises/math/functions/trinoms/factoForm/trinomDevelopFactorizedForm.d.ts.map +1 -0
  66. package/lib/exercises/math/functions/trinoms/factoForm/trinomDevelopFactorizedForm.js +147 -0
  67. package/lib/exercises/math/functions/trinoms/roots/niceRootsFromDevForm.d.ts.map +1 -1
  68. package/lib/exercises/math/functions/trinoms/roots/niceRootsFromDevForm.js +96 -0
  69. package/lib/exercises/math/functions/trinoms/roots/rootsFromDevForm.d.ts.map +1 -1
  70. package/lib/exercises/math/functions/trinoms/roots/rootsFromDevForm.js +95 -1
  71. package/lib/exercises/math/functions/trinoms/summitAndCanonical/devFormFromSummitAndPoint.d.ts +9 -0
  72. package/lib/exercises/math/functions/trinoms/summitAndCanonical/devFormFromSummitAndPoint.d.ts.map +1 -0
  73. package/lib/exercises/math/functions/trinoms/summitAndCanonical/devFormFromSummitAndPoint.js +173 -0
  74. package/lib/exercises/math/functions/trinoms/summitAndCanonical/index.d.ts +2 -0
  75. package/lib/exercises/math/functions/trinoms/summitAndCanonical/index.d.ts.map +1 -1
  76. package/lib/exercises/math/functions/trinoms/summitAndCanonical/index.js +2 -0
  77. package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitAbscissFromRoots.js +1 -1
  78. package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitAbscissFromSymetricPoints.d.ts +9 -0
  79. package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitAbscissFromSymetricPoints.d.ts.map +1 -0
  80. package/lib/exercises/math/functions/trinoms/summitAndCanonical/summitAbscissFromSymetricPoints.js +97 -0
  81. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.d.ts.map +1 -1
  82. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusB.js +18 -23
  83. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.d.ts.map +1 -1
  84. package/lib/exercises/math/functions/variations/exp/varOfAEXPlusBOverCEXPlusD.js +24 -26
  85. package/lib/exercises/math/functions/variations/index.d.ts +1 -0
  86. package/lib/exercises/math/functions/variations/index.d.ts.map +1 -1
  87. package/lib/exercises/math/functions/variations/index.js +1 -0
  88. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.d.ts +12 -0
  89. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.d.ts.map +1 -0
  90. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPerpendicularLine.js +230 -0
  91. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.d.ts +10 -0
  92. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.d.ts.map +1 -0
  93. package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLineFromPointAndNormalVector.js +167 -0
  94. package/lib/exercises/math/geometry/cartesian/index.d.ts +3 -0
  95. package/lib/exercises/math/geometry/cartesian/index.d.ts.map +1 -1
  96. package/lib/exercises/math/geometry/cartesian/index.js +3 -0
  97. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.d.ts +10 -0
  98. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.d.ts.map +1 -0
  99. package/lib/exercises/math/geometry/cartesian/normalVectorFromCartesianLineEquation.js +131 -0
  100. package/lib/exercises/math/geometry/circles/circleCanonicalEquationFromDevEquation.d.ts +10 -0
  101. package/lib/exercises/math/geometry/circles/circleCanonicalEquationFromDevEquation.d.ts.map +1 -0
  102. package/lib/exercises/math/geometry/circles/circleCanonicalEquationFromDevEquation.js +174 -0
  103. package/lib/exercises/math/geometry/circles/circleCenterAndRadiusFromEquation.d.ts +12 -0
  104. package/lib/exercises/math/geometry/circles/circleCenterAndRadiusFromEquation.d.ts.map +1 -0
  105. package/lib/exercises/math/geometry/circles/circleCenterAndRadiusFromEquation.js +161 -0
  106. package/lib/exercises/math/geometry/circles/circleEquationFromDiameter.d.ts +9 -0
  107. package/lib/exercises/math/geometry/circles/circleEquationFromDiameter.d.ts.map +1 -0
  108. package/lib/exercises/math/geometry/circles/circleEquationFromDiameter.js +145 -0
  109. package/lib/exercises/math/geometry/circles/circleEquationFromPointAndRadius.d.ts +13 -0
  110. package/lib/exercises/math/geometry/circles/circleEquationFromPointAndRadius.d.ts.map +1 -0
  111. package/lib/exercises/math/geometry/circles/circleEquationFromPointAndRadius.js +181 -0
  112. package/lib/exercises/math/geometry/circles/circleRadiusOrCenterFromDevEquation.d.ts +11 -0
  113. package/lib/exercises/math/geometry/circles/circleRadiusOrCenterFromDevEquation.d.ts.map +1 -0
  114. package/lib/exercises/math/geometry/circles/circleRadiusOrCenterFromDevEquation.js +191 -0
  115. package/lib/exercises/math/geometry/circles/index.d.ts +7 -0
  116. package/lib/exercises/math/geometry/circles/index.d.ts.map +1 -0
  117. package/lib/exercises/math/geometry/circles/index.js +6 -0
  118. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.d.ts +11 -0
  119. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.d.ts.map +1 -0
  120. package/lib/exercises/math/geometry/circles/isPointOnCircleFromCartesianEquation.js +131 -0
  121. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.d.ts.map +1 -1
  122. package/lib/exercises/math/geometry/euclidian/pinSegmentFromRotation.js +0 -2
  123. package/lib/exercises/math/geometry/index.d.ts +1 -0
  124. package/lib/exercises/math/geometry/index.d.ts.map +1 -1
  125. package/lib/exercises/math/geometry/index.js +1 -0
  126. package/lib/exercises/math/geometry/lines/cartesianEquationOfTriangleHeight.d.ts +10 -0
  127. package/lib/exercises/math/geometry/lines/cartesianEquationOfTriangleHeight.d.ts.map +1 -0
  128. package/lib/exercises/math/geometry/lines/cartesianEquationOfTriangleHeight.js +181 -0
  129. package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.d.ts +4 -1
  130. package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.d.ts.map +1 -1
  131. package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.js +23 -3
  132. package/lib/exercises/math/geometry/lines/index.d.ts +1 -0
  133. package/lib/exercises/math/geometry/lines/index.d.ts.map +1 -1
  134. package/lib/exercises/math/geometry/lines/index.js +1 -0
  135. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.d.ts +4 -0
  136. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.d.ts.map +1 -0
  137. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/index.js +3 -0
  138. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.d.ts +9 -0
  139. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.d.ts.map +1 -0
  140. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiAngle.js +247 -0
  141. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts +13 -0
  142. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts.map +1 -0
  143. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.js +452 -0
  144. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.d.ts +9 -0
  145. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.d.ts.map +1 -0
  146. package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.js +253 -0
  147. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.d.ts +4 -0
  148. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.d.ts.map +1 -0
  149. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/index.js +3 -0
  150. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.d.ts +10 -0
  151. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.d.ts.map +1 -0
  152. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductIdentities.js +174 -0
  153. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.d.ts +9 -0
  154. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.d.ts.map +1 -0
  155. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductInOrthonormalBasisIJ.js +231 -0
  156. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.d.ts +14 -0
  157. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.d.ts.map +1 -0
  158. package/lib/exercises/math/geometry/vectors/scalarProduct/alg/scalarProductLamdbaULambdaV.js +292 -0
  159. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.d.ts +6 -0
  160. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.d.ts.map +1 -0
  161. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/index.js +5 -0
  162. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.d.ts +9 -0
  163. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.d.ts.map +1 -0
  164. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsBasisIJ.js +202 -0
  165. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.d.ts +9 -0
  166. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.d.ts.map +1 -0
  167. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsOrthogonalVecsUsingCoords.js +127 -0
  168. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.d.ts +12 -0
  169. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.d.ts.map +1 -0
  170. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnCircle.js +167 -0
  171. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.d.ts +12 -0
  172. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.d.ts.map +1 -0
  173. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsPointOnPerpendicularBisector.js +180 -0
  174. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.d.ts +12 -0
  175. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.d.ts.map +1 -0
  176. package/lib/exercises/math/geometry/vectors/scalarProduct/orth/scalarProductIsRightTriangleUsingPointCoords.js +235 -0
  177. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts +12 -0
  178. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts.map +1 -0
  179. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.js +423 -0
  180. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.d.ts +17 -0
  181. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.d.ts.map +1 -0
  182. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductOfVectsOnGrid1.js +347 -0
  183. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.d.ts +8 -0
  184. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.d.ts.map +1 -0
  185. package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductParallelogramDiagonalPlus.js +301 -0
  186. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.d.ts +9 -0
  187. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.d.ts.map +1 -0
  188. package/lib/exercises/math/probaStat/randomVariable/findValueForFairRandomVariable.js +141 -0
  189. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.d.ts +10 -0
  190. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.d.ts.map +1 -0
  191. package/lib/exercises/math/probaStat/randomVariable/findValueToMatchRandomVariableAverage.js +174 -0
  192. package/lib/exercises/math/probaStat/randomVariable/index.d.ts +1 -0
  193. package/lib/exercises/math/probaStat/randomVariable/index.d.ts.map +1 -1
  194. package/lib/exercises/math/probaStat/randomVariable/index.js +2 -0
  195. package/lib/exercises/math/sequences/generation/index.d.ts +2 -0
  196. package/lib/exercises/math/sequences/generation/index.d.ts.map +1 -0
  197. package/lib/exercises/math/sequences/generation/index.js +1 -0
  198. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.d.ts +8 -0
  199. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.d.ts.map +1 -0
  200. package/lib/exercises/math/sequences/generation/recognizeRecurrenceOrExplicit.js +63 -0
  201. package/lib/exercises/math/sequences/graph/index.d.ts +2 -0
  202. package/lib/exercises/math/sequences/graph/index.d.ts.map +1 -0
  203. package/lib/exercises/math/sequences/graph/index.js +1 -0
  204. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.d.ts +11 -0
  205. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.d.ts.map +1 -0
  206. package/lib/exercises/math/sequences/graph/placeFirstSequencePoints.js +113 -0
  207. package/lib/exercises/math/sequences/index.d.ts +2 -0
  208. package/lib/exercises/math/sequences/index.d.ts.map +1 -1
  209. package/lib/exercises/math/sequences/index.js +2 -0
  210. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.d.ts +12 -0
  211. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.d.ts.map +1 -0
  212. package/lib/exercises/math/sequences/notation/identifyRankInSequenceTermsList.js +114 -0
  213. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.d.ts +12 -0
  214. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.d.ts.map +1 -0
  215. package/lib/exercises/math/sequences/notation/identifySequenceTermInList.js +111 -0
  216. package/lib/exercises/math/sequences/notation/index.d.ts +3 -0
  217. package/lib/exercises/math/sequences/notation/index.d.ts.map +1 -0
  218. package/lib/exercises/math/sequences/notation/index.js +2 -0
  219. package/lib/exercises/math/spaceGeometry/basis/findSpacePointOnRectangularPrism.d.ts.map +1 -1
  220. package/lib/exercises/math/spaceGeometry/basis/findSpacePointOnRectangularPrism.js +0 -1
  221. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.d.ts.map +1 -1
  222. package/lib/exercises/math/spaceGeometry/sphere/sphereLatLonReading.2d.js +0 -2
  223. package/lib/exercises/vea/cartesianLineVEA.d.ts +2 -0
  224. package/lib/exercises/vea/cartesianLineVEA.d.ts.map +1 -0
  225. package/lib/exercises/vea/cartesianLineVEA.js +1 -0
  226. package/lib/exercises/vea/pointVEA.d.ts +2 -0
  227. package/lib/exercises/vea/pointVEA.d.ts.map +1 -0
  228. package/lib/exercises/vea/pointVEA.js +7 -0
  229. package/lib/index.d.ts +164 -1
  230. package/lib/index.d.ts.map +1 -1
  231. package/lib/math/geometry/circle.d.ts +6 -0
  232. package/lib/math/geometry/circle.d.ts.map +1 -1
  233. package/lib/math/geometry/circle.js +16 -0
  234. package/lib/math/geometry/line.d.ts +2 -0
  235. package/lib/math/geometry/line.d.ts.map +1 -1
  236. package/lib/math/geometry/line.js +7 -0
  237. package/lib/math/geometry/point.d.ts +1 -0
  238. package/lib/math/geometry/point.d.ts.map +1 -1
  239. package/lib/math/geometry/point.js +5 -0
  240. package/lib/math/geometry/polygons/relationPP.d.ts +8 -0
  241. package/lib/math/geometry/polygons/relationPP.d.ts.map +1 -0
  242. package/lib/math/geometry/polygons/relationPP.js +41 -0
  243. package/lib/math/polynomials/trinom.d.ts +1 -1
  244. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  245. package/lib/math/polynomials/trinom.js +15 -6
  246. package/lib/math/utils/arithmetic/primeFactors.js +1 -1
  247. package/lib/math/utils/geometry/randomVecs2.d.ts +6 -0
  248. package/lib/math/utils/geometry/randomVecs2.d.ts.map +1 -0
  249. package/lib/math/utils/geometry/randomVecs2.js +34 -0
  250. package/lib/tests/questionTest.d.ts.map +1 -1
  251. package/lib/tests/questionTest.js +2 -2
  252. package/lib/tree/nodes/equations/equationSolutionNode.d.ts +1 -0
  253. package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
  254. package/lib/tree/nodes/equations/equationSolutionNode.js +3 -0
  255. package/lib/tree/nodes/functions/expNode.d.ts +1 -1
  256. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  257. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +1 -0
  258. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  259. package/lib/tree/nodes/inequations/inequationSolutionNode.js +3 -0
  260. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -1
  261. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  262. package/lib/tree/nodes/operators/fractionNode.js +6 -4
  263. package/lib/tree/nodes/sets/intervalNode.d.ts +6 -0
  264. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  265. package/lib/tree/nodes/sets/namedIntervalNode.d.ts +31 -0
  266. package/lib/tree/nodes/sets/namedIntervalNode.d.ts.map +1 -0
  267. package/lib/tree/nodes/sets/namedIntervalNode.js +77 -0
  268. package/package.json +1 -1
@@ -0,0 +1,452 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, GeneratorOptionTarget, GeneratorOptionType, } from "../../../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { greenMain, 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, TriangleConstructor, } from "../../../../../../math/geometry/triangles/triangle.js";
10
+ import { VectorConstructor } from "../../../../../../math/geometry/vector.js";
11
+ import { randfloat } from "../../../../../../math/utils/random/randfloat.js";
12
+ import { round } from "../../../../../../math/utils/round.js";
13
+ import { abs } from "../../../../../../tree/nodes/functions/absNode.js";
14
+ import { arccos } from "../../../../../../tree/nodes/functions/arccosNode.js";
15
+ import { sin } from "../../../../../../tree/nodes/functions/sinNode.js";
16
+ import { sqrt } from "../../../../../../tree/nodes/functions/sqrtNode.js";
17
+ import { add } from "../../../../../../tree/nodes/operators/addNode.js";
18
+ import { frac } from "../../../../../../tree/nodes/operators/fractionNode.js";
19
+ import { multiply } from "../../../../../../tree/nodes/operators/multiplyNode.js";
20
+ import { power } from "../../../../../../tree/nodes/operators/powerNode.js";
21
+ import { substract } from "../../../../../../tree/nodes/operators/substractNode.js";
22
+ import { parseAlgebraic } from "../../../../../../tree/parsers/latexParser.js";
23
+ import { probaFlip } from "../../../../../../utils/alea/probaFlip.js";
24
+ import { random } from "../../../../../../utils/alea/random.js";
25
+ import { zip } from "../../../../../../utils/arrays/arrayZip.js";
26
+ import { arrayRotation } from "../../../../../../utils/arrays/rotation.js";
27
+ import { handleVEAError } from "../../../../../../utils/errors/handleVEAError.js";
28
+ const precision = 2;
29
+ const getHydrated = (identifiers) => {
30
+ const { triangleIds, pointIdsH } = identifiers;
31
+ const triangle = TriangleConstructor.fromIdentifiers(triangleIds);
32
+ const indexAngle = 1; //B
33
+ const sides = arrayRotation(triangle.sides, indexAngle);
34
+ const sideLengths = sides.map((segment) => round(segment.getLengthNode().evaluate(), precision));
35
+ const angleNames = arrayRotation(triangle.angles, indexAngle).map((angle) => angle.toTexMini());
36
+ const pointH = PointConstructor.fromIdentifiers(pointIdsH);
37
+ return {
38
+ triangle,
39
+ sides,
40
+ sideLengths,
41
+ angleNames,
42
+ pointH,
43
+ };
44
+ };
45
+ const getInstruction = (identifiers) => {
46
+ const { triangle, sides, sideLengths } = getHydrated(identifiers);
47
+ return `Soit $${triangle.name}$ un triangle dont on connaît les longueurs des côtés :
48
+
49
+ ${zip(sides, sideLengths).map(([segment, valueLength]) => `- $${segment.toInsideName()} = ${valueLength.frenchify()}$`).join(`
50
+
51
+ `)}
52
+
53
+ Combien le segment $BH$ mesure-t-il ?
54
+ Donner une valeur approchée en degrés avec $${precision}$ décimales.`;
55
+ };
56
+ const getAnswerStuff = (identifiers) => {
57
+ const { sideLengths } = getHydrated(identifiers);
58
+ const nodeCosAngle = frac(substract(add(power(sideLengths[1], 2), power(sideLengths[2], 2)), power(sideLengths[0], 2)), multiply(2, multiply(sideLengths[1], sideLengths[2])));
59
+ const nodeLengthBA = sideLengths[1];
60
+ const nodeLengthBH = multiply(nodeLengthBA, abs(nodeCosAngle));
61
+ return {
62
+ nodeCosAngle,
63
+ nodeLengthBH,
64
+ };
65
+ };
66
+ const getAnswerNode = (identifiers) => {
67
+ return getAnswerStuff(identifiers).nodeLengthBH;
68
+ };
69
+ const getAnswer = (identifiers) => {
70
+ return round(getAnswerNode(identifiers).evaluate(), precision).frenchify();
71
+ };
72
+ const getHint = () => {
73
+ return `Applique le théorème d'Al Kashi dans le triangle $ABC$ pour l'angle $\\widehat{B}$.
74
+
75
+ Ensuite, calcule $\\overrightarrow{BA} \\cdot \\overrightarrow{BC}$ de deux manières différentes.`;
76
+ };
77
+ const getCorrection = (identifiers) => {
78
+ const { sides, angleNames } = getHydrated(identifiers);
79
+ const sideNames = sides
80
+ .map((segment) => segment.toInsideName())
81
+ .map((name) => {
82
+ return {
83
+ AB: "c",
84
+ AC: "b",
85
+ BC: "a",
86
+ }[name];
87
+ });
88
+ const nodeCosAngle = frac(substract(add(power(sideNames[1], 2), power(sideNames[2], 2)), power(sideNames[0], 2)), multiply(2, multiply(sideNames[1], sideNames[2])));
89
+ const { nodeLengthBH } = getAnswerStuff(identifiers);
90
+ return `On applique le théorème d'Al Kashi dans le triangle $ABC$.
91
+
92
+ On utilise les notations suivantes :
93
+
94
+ $$
95
+ a \\ = \\ BC \\ ; \\ b \\ = \\ AC \\ ; \\ c \\ = \\ AB \\
96
+ $$
97
+
98
+ $$
99
+ ${sideNames[0]}^2 = ${sideNames[1]}^2 + ${sideNames[2]}^2 - 2 ${sideNames[1]} ${sideNames[2]} \\cos(${angleNames[0]})
100
+ $$
101
+
102
+ $$
103
+ \\cos(${angleNames[0]}) = ${nodeCosAngle.toTex()}
104
+ $$
105
+
106
+ D'une part, par définition du produit scalaire :
107
+
108
+ $$
109
+ \\overrightarrow{BA} \\cdot \\overrightarrow{BC} = BA \\times BC \\times \\cos(${angleNames[0]})
110
+ $$
111
+
112
+ D'autre part, puisque $B$,$C$ et $H$ sont alignés :
113
+
114
+ $$
115
+ \\lvert \\overrightarrow{BH} \\cdot \\overrightarrow{BC} \\rvert = BH \\times BC
116
+ $$
117
+
118
+ On a donc :
119
+
120
+ $$
121
+ BH = BA \\times \\lvert \\cos(${angleNames[0]}) \\rvert
122
+ $$
123
+
124
+ $$
125
+ BH = ${nodeLengthBH.toTex()}
126
+ $$
127
+
128
+ On arrondit à la toute fin :
129
+
130
+ $$
131
+ BH \\approx ${getAnswer(identifiers)}
132
+ $$
133
+
134
+ `;
135
+ };
136
+ const getCorrectionGGBOptions = (identifiers) => {
137
+ const { triangle, pointH: H } = getHydrated(identifiers);
138
+ const [A, B, C] = triangle.points;
139
+ const ggb = new GeogebraConstructor({
140
+ commands: [
141
+ //triangle
142
+ ...triangle.commands,
143
+ //AH
144
+ ...H.toGGBCommand({ isFixed: true, showLabel: true }),
145
+ ...new Segment(A, H).toGGBCommands(false, {
146
+ isFixed: true,
147
+ style: 2,
148
+ color: `${orange}`,
149
+ }),
150
+ //BH
151
+ ...new Segment(B, H).toGGBCommands(false, {
152
+ isFixed: true,
153
+ style: 2,
154
+ }),
155
+ //angle
156
+ ...new Angle([A, H, C]).toCommands(),
157
+ //angle
158
+ ...new Angle([A, B, C]).toCommands({ color: greenMain }),
159
+ ],
160
+ hideAxes: true,
161
+ });
162
+ return ggb.getOptions({
163
+ coords: ggb.getCoordsForPoints([B, A, C, H]),
164
+ });
165
+ };
166
+ const getGGBOptions = (identifiers) => {
167
+ const { triangle, pointH: H } = getHydrated(identifiers);
168
+ const [A, B, C] = triangle.points;
169
+ const ggb = new GeogebraConstructor({
170
+ commands: [
171
+ //triangle
172
+ ...triangle.commands,
173
+ //AH
174
+ ...H.toGGBCommand({ isFixed: true, showLabel: true }),
175
+ ...new Segment(A, H).toGGBCommands(false, {
176
+ isFixed: true,
177
+ style: 2,
178
+ color: `${orange}`,
179
+ }),
180
+ //BH
181
+ ...new Segment(B, H).toGGBCommands(false, {
182
+ isFixed: true,
183
+ style: 2,
184
+ }),
185
+ //angle
186
+ ...new Angle([A, H, C]).toCommands(),
187
+ ],
188
+ hideAxes: true,
189
+ });
190
+ return ggb.getOptions({
191
+ coords: ggb.getCoordsForPoints([B, A, C, H]),
192
+ });
193
+ };
194
+ const getPropositions = (n, { answer, ...identifiers }) => {
195
+ const propositions = [];
196
+ addValidProp(propositions, answer);
197
+ const { sideLengths } = getHydrated(identifiers);
198
+ const [BC, BA, _] = sideLengths;
199
+ const arrValueWrong = [];
200
+ //student: sign error
201
+ {
202
+ const nodeCosAngle = frac(substract(add(power(sideLengths[1], 2), power(sideLengths[2], 2)), power(sideLengths[0], 2)), multiply(-2, multiply(sideLengths[1], sideLengths[2])));
203
+ const nodeLengthBA = sideLengths[1];
204
+ const nodeLengthBH = multiply(nodeLengthBA, abs(nodeCosAngle));
205
+ const vWrong = nodeLengthBH.evaluate();
206
+ arrValueWrong.push(vWrong);
207
+ tryToAddWrongProp(propositions, round(vWrong, precision).frenchify());
208
+ }
209
+ //student: computes AH instead of BH
210
+ {
211
+ const nodeCosAngle = frac(substract(add(power(sideLengths[1], 2), power(sideLengths[2], 2)), power(sideLengths[0], 2)), multiply(-2, multiply(sideLengths[1], sideLengths[2])));
212
+ const nodeLengthBA = sideLengths[1];
213
+ const nodeLengthAH = multiply(nodeLengthBA, abs(sin(arccos(nodeCosAngle))));
214
+ const vWrong = nodeLengthAH.evaluate();
215
+ arrValueWrong.push(vWrong);
216
+ tryToAddWrongProp(propositions, round(vWrong, precision).frenchify());
217
+ }
218
+ //student: pythagore with BA and BC
219
+ {
220
+ if (BA >= BC) {
221
+ const nodeWrong = sqrt(substract(power(BA, 2), power(BC, 2)));
222
+ const vWrong = nodeWrong.evaluate();
223
+ arrValueWrong.push(vWrong);
224
+ tryToAddWrongProp(propositions, round(vWrong, precision).frenchify());
225
+ }
226
+ }
227
+ //terror: around answer, _most of the time_
228
+ {
229
+ const value = (() => {
230
+ const vAnswer = getAnswerStuff(identifiers).nodeLengthBH.evaluate();
231
+ if (probaFlip(0.6)) {
232
+ return vAnswer;
233
+ }
234
+ else {
235
+ return random([...arrValueWrong, vAnswer]);
236
+ }
237
+ })();
238
+ [...Array(2).keys()].forEach(() => {
239
+ const valueAnswerOffsetted = value + randfloat(-1.2, 1.2, 2, [0]);
240
+ if (valueAnswerOffsetted > 0) {
241
+ tryToAddWrongProp(propositions, round(valueAnswerOffsetted, precision).frenchify());
242
+ }
243
+ });
244
+ }
245
+ propWhile(propositions, n, () => {
246
+ tryToAddWrongProp(propositions, randfloat(2, 20, 2, [0, 20]).frenchify());
247
+ });
248
+ return shuffleProps(propositions, n);
249
+ };
250
+ const getKeys = () => {
251
+ return [];
252
+ };
253
+ const isAnswerValid = (ans, { answer }) => {
254
+ try {
255
+ const parsed = parseAlgebraic(ans);
256
+ return parsed.simplify().toTex() === answer;
257
+ }
258
+ catch (err) {
259
+ return handleVEAError(err);
260
+ }
261
+ };
262
+ const getScalarProductAlKashiBHQuestion = (optsIn) => {
263
+ const arrayedOptions = optsIn ?? optsDefault;
264
+ const opts = {
265
+ sectorOfPointH: random(arrayedOptions.sectorOfPointH),
266
+ };
267
+ const { sectorOfPointH } = opts;
268
+ function createRandomPoints() {
269
+ const offsetBtoC = 10;
270
+ const pointB = new Point("B", randfloat(0, 10), randfloat(0, 10));
271
+ const pointC = new Point("C", pointB.x.evaluate() + offsetBtoC + randfloat(-2, 8), randfloat(0, 10));
272
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
273
+ const nodeLengthBC = vecBC.getNorm();
274
+ const vecBCUnited = vecBC.times(frac(1, nodeLengthBC));
275
+ const vecOrthUnited = vecBCUnited.getOrthogonal().times((-1).toTree());
276
+ //rect PQRS will contain A, D is Proj(P,(BC)), E is Proj(S,(BC))
277
+ const nodeOffsetDtoE = (10).toTree();
278
+ const nodeOffsetBtoD = (() => {
279
+ switch (sectorOfPointH) {
280
+ case "Entre $B$ et $C$":
281
+ return (0).toTree();
282
+ case "Après $C$":
283
+ return nodeLengthBC;
284
+ case "Avant $B$":
285
+ return multiply((-1).toTree(), nodeOffsetDtoE);
286
+ default:
287
+ throw new Error("Unsupported opts.sectorOfPointH: " + opts.sectorOfPointH);
288
+ }
289
+ })();
290
+ const pointD = vecBCUnited.times(nodeOffsetBtoD).getEndPoint(pointB);
291
+ const pointE = vecBCUnited.times(nodeOffsetDtoE).getEndPoint(pointD);
292
+ const minOffsetBCtoA = 3;
293
+ const maxOffsetBCtoA = minOffsetBCtoA + 10;
294
+ const pointP = vecOrthUnited
295
+ .times(minOffsetBCtoA.toTree())
296
+ .getEndPoint(pointD);
297
+ const pointQ = vecOrthUnited
298
+ .times((maxOffsetBCtoA - minOffsetBCtoA).toTree())
299
+ .getEndPoint(pointP);
300
+ const pointS = vecOrthUnited
301
+ .times(minOffsetBCtoA.toTree())
302
+ .getEndPoint(pointE);
303
+ const pointR = vecOrthUnited
304
+ .times((maxOffsetBCtoA - minOffsetBCtoA).toTree())
305
+ .getEndPoint(pointS);
306
+ function getCoordsForPoints(points) {
307
+ const xMin = Math.min(...points.map((p) => p.x.evaluate()));
308
+ const xMax = Math.max(...points.map((p) => p.x.evaluate()));
309
+ const yMin = Math.min(...points.map((p) => p.y.evaluate()));
310
+ const yMax = Math.max(...points.map((p) => p.y.evaluate()));
311
+ return [xMin, xMax, yMin, yMax];
312
+ }
313
+ function getRandomPointInside(points) {
314
+ const [xMin, xMax, yMin, yMax] = getCoordsForPoints(points);
315
+ let point;
316
+ let counter = -1;
317
+ let isValid = false;
318
+ while (!isValid && counter < 1000) {
319
+ counter++;
320
+ const x = randfloat(Math.ceil(xMin), Math.floor(xMax));
321
+ const y = randfloat(Math.ceil(yMin), Math.floor(yMax));
322
+ const pointCandidate = new Point("RIP", x, y);
323
+ isValid = relationPP(pointCandidate, points) !== -1;
324
+ if (isValid) {
325
+ point = pointCandidate;
326
+ }
327
+ }
328
+ if (!isValid) {
329
+ throw new Error("getRandomPointInside: too many iterations");
330
+ }
331
+ return point;
332
+ }
333
+ const pointRand = getRandomPointInside([pointP, pointQ, pointR, pointS]);
334
+ const pointA = new Point("A", pointRand.x, pointRand.y);
335
+ const vecBA = VectorConstructor.fromPoints(pointB, pointA);
336
+ const vecBH = vecBCUnited.times(frac(vecBA.scalarProduct(vecBC), nodeLengthBC));
337
+ const pointHRaw = vecBH.getEndPoint(pointB, "H");
338
+ const pointH = new Point("H", pointHRaw.x.evaluate(), pointHRaw.y.evaluate());
339
+ return [pointB, pointA, pointC, pointH];
340
+ }
341
+ function isValidPoints(points) {
342
+ const [B, _, C, H] = points;
343
+ const minDistance = 2;
344
+ const isHFarEnough = () => B.distanceTo(H) > minDistance && C.distanceTo(H) > minDistance;
345
+ return isHFarEnough();
346
+ }
347
+ let identifiers;
348
+ let counter = -1;
349
+ let isValid = false;
350
+ while (!isValid && counter < 100) {
351
+ counter++;
352
+ try {
353
+ const pointsCandidate = createRandomPoints();
354
+ isValid = isValidPoints(pointsCandidate);
355
+ if (isValid) {
356
+ const [B, A, C, H] = pointsCandidate;
357
+ const triangle = new Triangle([A, B, C]);
358
+ identifiers = {
359
+ triangleIds: triangle.toIdentifiers(),
360
+ pointIdsH: H.toIdentifiers(),
361
+ };
362
+ }
363
+ }
364
+ catch (_) {
365
+ (() => { })();
366
+ }
367
+ }
368
+ if (!isValid) {
369
+ const pointB = new Point("B", 10, 0);
370
+ const pointC = new Point("C", 20, 1);
371
+ const pointA = (() => {
372
+ switch (sectorOfPointH) {
373
+ case "Entre $B$ et $C$":
374
+ return new Point("A", 14, 7);
375
+ case "Après $C$":
376
+ return new Point("A", 25, 7);
377
+ case "Avant $B$":
378
+ return new Point("A", 5, 7);
379
+ default:
380
+ throw new Error("Unsupported opts.sectorOfPointH: " + opts.sectorOfPointH);
381
+ }
382
+ })();
383
+ const vecBC = VectorConstructor.fromPoints(pointB, pointC);
384
+ const nodeLengthBC = vecBC.getNorm().evaluate().toTree();
385
+ const vecBCUnited = vecBC.times(frac(1, nodeLengthBC));
386
+ const vecBA = VectorConstructor.fromPoints(pointB, pointA);
387
+ const vecBH = vecBCUnited.times(frac(vecBA.scalarProduct(vecBC), nodeLengthBC));
388
+ const pointHRaw = vecBH.getEndPoint(pointB, "H");
389
+ const pointH = new Point("H", pointHRaw.x.evaluate(), pointHRaw.y.evaluate());
390
+ const [B, A, C, H] = [pointB, pointA, pointC, pointH];
391
+ const triangle = new Triangle([A, B, C]);
392
+ const identifiersDefault = {
393
+ triangleIds: triangle.toIdentifiers(),
394
+ pointIdsH: H.toIdentifiers(),
395
+ };
396
+ identifiers = identifiersDefault;
397
+ }
398
+ return getQuestionFromIdentifiers(identifiers);
399
+ };
400
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
401
+ return {
402
+ answer: getAnswer(identifiers, opts),
403
+ instruction: getInstruction(identifiers, opts),
404
+ keys: getKeys(identifiers, opts),
405
+ answerFormat: "tex",
406
+ identifiers,
407
+ hint: getHint(identifiers, opts),
408
+ correction: getCorrection(identifiers, opts),
409
+ correctionGgbOptions: getCorrectionGGBOptions(identifiers, opts),
410
+ ggbOptions: getGGBOptions(identifiers, opts),
411
+ options: opts,
412
+ };
413
+ };
414
+ const optsDefault = {
415
+ sectorOfPointH: ["Entre $B$ et $C$"],
416
+ };
417
+ const options = [
418
+ {
419
+ id: "sectorOfPointH",
420
+ label: "Position du point $H$",
421
+ target: GeneratorOptionTarget.generation,
422
+ type: GeneratorOptionType.multiselect,
423
+ values: ["Entre $B$ et $C$", "Après $C$", "Avant $B$"],
424
+ defaultValue: optsDefault.sectorOfPointH,
425
+ },
426
+ ];
427
+ export const scalarProductAlKashiBH = {
428
+ id: "scalarProductAlKashiBH",
429
+ connector: "=",
430
+ label: "Connaissant les longueurs de trois côtés d'un triangle $ABC$, calculer $BH$ ($H$ étant le pied de la hauteur issue de $A$)",
431
+ isSingleStep: true,
432
+ generator: (nb, opts) => getDistinctQuestions(() => getScalarProductAlKashiBHQuestion(opts), nb),
433
+ options,
434
+ validateOptions: (opts) => {
435
+ return {
436
+ valid: !!(opts?.sectorOfPointH.length > 0),
437
+ message: "Veuillez choisir au moins un secteur pour le point $H$.",
438
+ };
439
+ },
440
+ qcmTimer: 60,
441
+ freeTimer: 60,
442
+ getPropositions,
443
+ isAnswerValid,
444
+ subject: "Mathématiques",
445
+ getInstruction,
446
+ getHint,
447
+ getCorrection,
448
+ hasHintAndCorrection: true,
449
+ getAnswer,
450
+ getQuestionFromIdentifiers,
451
+ hasGeogebra: true,
452
+ };
@@ -0,0 +1,9 @@
1
+ import { Exercise } from "../../../../../../exercises/exercise.js";
2
+ import { TriangleIdentifiers } from "../../../../../../math/geometry/triangles/triangle.js";
3
+ type Identifiers = {
4
+ triangleIds: TriangleIdentifiers;
5
+ indexSide: number;
6
+ };
7
+ export declare const scalarProductAlKashiSideLength: Exercise<Identifiers>;
8
+ export {};
9
+ //# sourceMappingURL=scalarProductAlKashiSideLength.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalarProductAlKashiSideLength.d.ts","sourceRoot":"","sources":["../../../../../../../src/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiSideLength.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAEL,mBAAmB,EACpB,MAAM,2CAA2C,CAAC;AAoBnD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,mBAAmB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA4SF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,WAAW,CAsBhE,CAAC"}