math-exercises 3.0.214 → 3.0.215

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 (266) hide show
  1. package/lib/exercises/math/arithmetic/findLeftInHugeNumberDivision.d.ts +9 -0
  2. package/lib/exercises/math/arithmetic/findLeftInHugeNumberDivision.d.ts.map +1 -0
  3. package/lib/exercises/math/arithmetic/findLeftInHugeNumberDivision.js +194 -0
  4. package/lib/exercises/math/arithmetic/findMissingNumberToMakeNumberDivisibleBy9.d.ts +8 -0
  5. package/lib/exercises/math/arithmetic/findMissingNumberToMakeNumberDivisibleBy9.d.ts.map +1 -0
  6. package/lib/exercises/math/arithmetic/findMissingNumberToMakeNumberDivisibleBy9.js +121 -0
  7. package/lib/exercises/math/arithmetic/index.d.ts +7 -0
  8. package/lib/exercises/math/arithmetic/index.d.ts.map +1 -1
  9. package/lib/exercises/math/arithmetic/index.js +7 -0
  10. package/lib/exercises/math/arithmetic/isBigNumberPrime.d.ts +7 -0
  11. package/lib/exercises/math/arithmetic/isBigNumberPrime.d.ts.map +1 -0
  12. package/lib/exercises/math/arithmetic/isBigNumberPrime.js +107 -0
  13. package/lib/exercises/math/arithmetic/numberOfEndingZerosOfBigProduct.d.ts +8 -0
  14. package/lib/exercises/math/arithmetic/numberOfEndingZerosOfBigProduct.d.ts.map +1 -0
  15. package/lib/exercises/math/arithmetic/numberOfEndingZerosOfBigProduct.js +139 -0
  16. package/lib/exercises/math/arithmetic/pgcdFromEuclid.d.ts +8 -0
  17. package/lib/exercises/math/arithmetic/pgcdFromEuclid.d.ts.map +1 -0
  18. package/lib/exercises/math/arithmetic/pgcdFromEuclid.js +123 -0
  19. package/lib/exercises/math/arithmetic/solveDiophantianEquationByUsingPrimality.d.ts +7 -0
  20. package/lib/exercises/math/arithmetic/solveDiophantianEquationByUsingPrimality.d.ts.map +1 -0
  21. package/lib/exercises/math/arithmetic/solveDiophantianEquationByUsingPrimality.js +117 -0
  22. package/lib/exercises/math/arithmetic/whichDayInXDays.d.ts +8 -0
  23. package/lib/exercises/math/arithmetic/whichDayInXDays.d.ts.map +1 -0
  24. package/lib/exercises/math/arithmetic/whichDayInXDays.js +81 -0
  25. package/lib/exercises/math/calcul/fractions/fractionsSumFillInTheBlank.d.ts +15 -0
  26. package/lib/exercises/math/calcul/fractions/fractionsSumFillInTheBlank.d.ts.map +1 -0
  27. package/lib/exercises/math/calcul/fractions/fractionsSumFillInTheBlank.js +256 -0
  28. package/lib/exercises/math/calcul/fractions/index.d.ts +1 -0
  29. package/lib/exercises/math/calcul/fractions/index.d.ts.map +1 -1
  30. package/lib/exercises/math/calcul/fractions/index.js +1 -0
  31. package/lib/exercises/math/calcul/index.d.ts +1 -0
  32. package/lib/exercises/math/calcul/index.d.ts.map +1 -1
  33. package/lib/exercises/math/calcul/index.js +1 -0
  34. package/lib/exercises/math/calcul/mentalCaluls/index.d.ts +3 -0
  35. package/lib/exercises/math/calcul/mentalCaluls/index.d.ts.map +1 -1
  36. package/lib/exercises/math/calcul/mentalCaluls/index.js +3 -0
  37. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication101AndFriends.d.ts +10 -0
  38. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication101AndFriends.d.ts.map +1 -0
  39. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication101AndFriends.js +264 -0
  40. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication11AndFriends.d.ts +10 -0
  41. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication11AndFriends.d.ts.map +1 -0
  42. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication11AndFriends.js +264 -0
  43. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplicationTable.d.ts +11 -0
  44. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplicationTable.d.ts.map +1 -0
  45. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplicationTable.js +141 -0
  46. package/lib/exercises/math/calcul/ratio/index.d.ts +1 -0
  47. package/lib/exercises/math/calcul/ratio/index.d.ts.map +1 -1
  48. package/lib/exercises/math/calcul/ratio/index.js +1 -0
  49. package/lib/exercises/math/calcul/ratio/partsUsingRatio.d.ts +13 -0
  50. package/lib/exercises/math/calcul/ratio/partsUsingRatio.d.ts.map +1 -0
  51. package/lib/exercises/math/calcul/ratio/partsUsingRatio.js +237 -0
  52. package/lib/exercises/math/calcul/relatives/index.d.ts +2 -0
  53. package/lib/exercises/math/calcul/relatives/index.d.ts.map +1 -0
  54. package/lib/exercises/math/calcul/relatives/index.js +1 -0
  55. package/lib/exercises/math/calcul/relatives/relativesAddAndSub.d.ts +17 -0
  56. package/lib/exercises/math/calcul/relatives/relativesAddAndSub.d.ts.map +1 -0
  57. package/lib/exercises/math/calcul/relatives/relativesAddAndSub.js +448 -0
  58. package/lib/exercises/math/calculLitteral/factorisation/factoByXK.d.ts +10 -0
  59. package/lib/exercises/math/calculLitteral/factorisation/factoByXK.d.ts.map +1 -0
  60. package/lib/exercises/math/calculLitteral/factorisation/factoByXK.js +190 -0
  61. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts +1 -0
  62. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts.map +1 -1
  63. package/lib/exercises/math/calculLitteral/factorisation/index.js +1 -0
  64. package/lib/exercises/math/complex/algebraic/addComplex.d.ts +10 -0
  65. package/lib/exercises/math/complex/algebraic/addComplex.d.ts.map +1 -0
  66. package/lib/exercises/math/complex/algebraic/addComplex.js +125 -0
  67. package/lib/exercises/math/complex/algebraic/conjugateComplex.d.ts +8 -0
  68. package/lib/exercises/math/complex/algebraic/conjugateComplex.d.ts.map +1 -0
  69. package/lib/exercises/math/complex/algebraic/conjugateComplex.js +105 -0
  70. package/lib/exercises/math/complex/algebraic/conjugateDivideComplex.d.ts +8 -0
  71. package/lib/exercises/math/complex/algebraic/conjugateDivideComplex.d.ts.map +1 -0
  72. package/lib/exercises/math/complex/algebraic/conjugateDivideComplex.js +137 -0
  73. package/lib/exercises/math/complex/algebraic/conjugateMultiplyComplex.d.ts +8 -0
  74. package/lib/exercises/math/complex/algebraic/conjugateMultiplyComplex.d.ts.map +1 -0
  75. package/lib/exercises/math/complex/algebraic/conjugateMultiplyComplex.js +116 -0
  76. package/lib/exercises/math/complex/algebraic/divideComplex.d.ts +8 -0
  77. package/lib/exercises/math/complex/algebraic/divideComplex.d.ts.map +1 -0
  78. package/lib/exercises/math/complex/algebraic/divideComplex.js +128 -0
  79. package/lib/exercises/math/complex/algebraic/index.d.ts +11 -0
  80. package/lib/exercises/math/complex/algebraic/index.d.ts.map +1 -0
  81. package/lib/exercises/math/complex/algebraic/index.js +10 -0
  82. package/lib/exercises/math/complex/algebraic/inverseComplex.d.ts +8 -0
  83. package/lib/exercises/math/complex/algebraic/inverseComplex.d.ts.map +1 -0
  84. package/lib/exercises/math/complex/algebraic/inverseComplex.js +95 -0
  85. package/lib/exercises/math/complex/algebraic/linearCombinaisonComplex.d.ts +10 -0
  86. package/lib/exercises/math/complex/algebraic/linearCombinaisonComplex.d.ts.map +1 -0
  87. package/lib/exercises/math/complex/algebraic/linearCombinaisonComplex.js +105 -0
  88. package/lib/exercises/math/complex/algebraic/moduloFromAlgebraicComplex.d.ts +8 -0
  89. package/lib/exercises/math/complex/algebraic/moduloFromAlgebraicComplex.d.ts.map +1 -0
  90. package/lib/exercises/math/complex/algebraic/moduloFromAlgebraicComplex.js +93 -0
  91. package/lib/exercises/math/complex/algebraic/mutiplyComplex.d.ts +8 -0
  92. package/lib/exercises/math/complex/algebraic/mutiplyComplex.d.ts.map +1 -0
  93. package/lib/exercises/math/complex/algebraic/mutiplyComplex.js +106 -0
  94. package/lib/exercises/math/complex/algebraic/reAndIm.d.ts +9 -0
  95. package/lib/exercises/math/complex/algebraic/reAndIm.d.ts.map +1 -0
  96. package/lib/exercises/math/complex/algebraic/reAndIm.js +92 -0
  97. package/lib/exercises/math/complex/geometric/complexAlgebraicFromModuloAndArg.d.ts +9 -0
  98. package/lib/exercises/math/complex/geometric/complexAlgebraicFromModuloAndArg.d.ts.map +1 -0
  99. package/lib/exercises/math/complex/geometric/complexAlgebraicFromModuloAndArg.js +151 -0
  100. package/lib/exercises/math/complex/geometric/complexDistance.d.ts +11 -0
  101. package/lib/exercises/math/complex/geometric/complexDistance.d.ts.map +1 -0
  102. package/lib/exercises/math/complex/geometric/complexDistance.js +125 -0
  103. package/lib/exercises/math/complex/geometric/complexGeomAffixAlgFromPoint.d.ts +9 -0
  104. package/lib/exercises/math/complex/geometric/complexGeomAffixAlgFromPoint.d.ts.map +1 -0
  105. package/lib/exercises/math/complex/geometric/complexGeomAffixAlgFromPoint.js +326 -0
  106. package/lib/exercises/math/complex/geometric/complexGeomAffixExpFromCenteredRegularPolygon.d.ts +10 -0
  107. package/lib/exercises/math/complex/geometric/complexGeomAffixExpFromCenteredRegularPolygon.d.ts.map +1 -0
  108. package/lib/exercises/math/complex/geometric/complexGeomAffixExpFromCenteredRegularPolygon.js +459 -0
  109. package/lib/exercises/math/complex/geometric/complexGeomAffixExpFromPoint.d.ts +14 -0
  110. package/lib/exercises/math/complex/geometric/complexGeomAffixExpFromPoint.d.ts.map +1 -0
  111. package/lib/exercises/math/complex/geometric/complexGeomAffixExpFromPoint.js +539 -0
  112. package/lib/exercises/math/complex/geometric/complexGeomAffixTrigFromPoint.d.ts +13 -0
  113. package/lib/exercises/math/complex/geometric/complexGeomAffixTrigFromPoint.d.ts.map +1 -0
  114. package/lib/exercises/math/complex/geometric/complexGeomAffixTrigFromPoint.js +485 -0
  115. package/lib/exercises/math/complex/geometric/complexGeomApproxOfCosArgOrSinArgFromPointAndAffixTrig.d.ts +12 -0
  116. package/lib/exercises/math/complex/geometric/complexGeomApproxOfCosArgOrSinArgFromPointAndAffixTrig.d.ts.map +1 -0
  117. package/lib/exercises/math/complex/geometric/complexGeomApproxOfCosArgOrSinArgFromPointAndAffixTrig.js +224 -0
  118. package/lib/exercises/math/complex/geometric/complexGeomArgumentOfFracCBABFromFigure.d.ts +11 -0
  119. package/lib/exercises/math/complex/geometric/complexGeomArgumentOfFracCBABFromFigure.d.ts.map +1 -0
  120. package/lib/exercises/math/complex/geometric/complexGeomArgumentOfFracCBABFromFigure.js +448 -0
  121. package/lib/exercises/math/complex/geometric/complexGeomFindPointFromAffixExp.d.ts +11 -0
  122. package/lib/exercises/math/complex/geometric/complexGeomFindPointFromAffixExp.d.ts.map +1 -0
  123. package/lib/exercises/math/complex/geometric/complexGeomFindPointFromAffixExp.js +223 -0
  124. package/lib/exercises/math/complex/geometric/complexGeomFindPointFromPowerOfUnitRootFromFigure.d.ts +11 -0
  125. package/lib/exercises/math/complex/geometric/complexGeomFindPointFromPowerOfUnitRootFromFigure.d.ts.map +1 -0
  126. package/lib/exercises/math/complex/geometric/complexGeomFindPointFromPowerOfUnitRootFromFigure.js +348 -0
  127. package/lib/exercises/math/complex/geometric/complexGeomPlaceAffixPoint.d.ts +8 -0
  128. package/lib/exercises/math/complex/geometric/complexGeomPlaceAffixPoint.d.ts.map +1 -0
  129. package/lib/exercises/math/complex/geometric/complexGeomPlaceAffixPoint.js +86 -0
  130. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZAPlusZ.d.ts +11 -0
  131. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZAPlusZ.d.ts.map +1 -0
  132. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZAPlusZ.js +311 -0
  133. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZATimesZ.d.ts +11 -0
  134. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZATimesZ.d.ts.map +1 -0
  135. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZATimesZ.js +345 -0
  136. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZATransformed.d.ts +16 -0
  137. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZATransformed.d.ts.map +1 -0
  138. package/lib/exercises/math/complex/geometric/complexGeomPlacePointFromZATransformed.js +729 -0
  139. package/lib/exercises/math/complex/geometric/complexGeomPlacePointWithAffixInU.d.ts +11 -0
  140. package/lib/exercises/math/complex/geometric/complexGeomPlacePointWithAffixInU.d.ts.map +1 -0
  141. package/lib/exercises/math/complex/geometric/complexGeomPlacePointWithAffixInU.js +253 -0
  142. package/lib/exercises/math/complex/geometric/index.d.ts +12 -0
  143. package/lib/exercises/math/complex/geometric/index.d.ts.map +1 -0
  144. package/lib/exercises/math/complex/geometric/index.js +19 -0
  145. package/lib/exercises/math/complex/index.d.ts +4 -10
  146. package/lib/exercises/math/complex/index.d.ts.map +1 -1
  147. package/lib/exercises/math/complex/index.js +4 -11
  148. package/lib/exercises/math/complex/polynomials/factorizePolynomialInC.d.ts +10 -0
  149. package/lib/exercises/math/complex/polynomials/factorizePolynomialInC.d.ts.map +1 -0
  150. package/lib/exercises/math/complex/polynomials/factorizePolynomialInC.js +176 -0
  151. package/lib/exercises/math/complex/polynomials/index.d.ts +4 -0
  152. package/lib/exercises/math/complex/polynomials/index.d.ts.map +1 -0
  153. package/lib/exercises/math/complex/polynomials/index.js +3 -0
  154. package/lib/exercises/math/complex/polynomials/solveSecondDegreeInComplex.d.ts +10 -0
  155. package/lib/exercises/math/complex/polynomials/solveSecondDegreeInComplex.d.ts.map +1 -0
  156. package/lib/exercises/math/complex/polynomials/solveSecondDegreeInComplex.js +190 -0
  157. package/lib/exercises/math/complex/polynomials/solveZSquareEqualsA.d.ts +11 -0
  158. package/lib/exercises/math/complex/polynomials/solveZSquareEqualsA.d.ts.map +1 -0
  159. package/lib/exercises/math/complex/polynomials/solveZSquareEqualsA.js +158 -0
  160. package/lib/exercises/math/complex/unitRoots/giveNUnitRoot.d.ts +7 -0
  161. package/lib/exercises/math/complex/unitRoots/giveNUnitRoot.d.ts.map +1 -0
  162. package/lib/exercises/math/complex/unitRoots/giveNUnitRoot.js +122 -0
  163. package/lib/exercises/math/complex/unitRoots/giveOneSolutionToComplexPowNEqualsOne.d.ts +8 -0
  164. package/lib/exercises/math/complex/unitRoots/giveOneSolutionToComplexPowNEqualsOne.d.ts.map +1 -0
  165. package/lib/exercises/math/complex/unitRoots/giveOneSolutionToComplexPowNEqualsOne.js +138 -0
  166. package/lib/exercises/math/complex/unitRoots/index.d.ts +3 -0
  167. package/lib/exercises/math/complex/unitRoots/index.d.ts.map +1 -0
  168. package/lib/exercises/math/complex/unitRoots/index.js +2 -0
  169. package/lib/exercises/math/conversion/clock/clockReading.d.ts +12 -0
  170. package/lib/exercises/math/conversion/clock/clockReading.d.ts.map +1 -0
  171. package/lib/exercises/math/conversion/clock/clockReading.js +385 -0
  172. package/lib/exercises/math/conversion/clock/clockReadingPlusTimeOperation.d.ts +2 -0
  173. package/lib/exercises/math/conversion/clock/clockReadingPlusTimeOperation.d.ts.map +1 -0
  174. package/lib/exercises/math/conversion/clock/clockReadingPlusTimeOperation.js +521 -0
  175. package/lib/exercises/math/conversion/clock/clockWritingByManipulatingNeedles.d.ts +2 -0
  176. package/lib/exercises/math/conversion/clock/clockWritingByManipulatingNeedles.d.ts.map +1 -0
  177. package/lib/exercises/math/conversion/clock/clockWritingByManipulatingNeedles.js +359 -0
  178. package/lib/exercises/math/conversion/clock/dateTimeOperationAdd.d.ts +16 -0
  179. package/lib/exercises/math/conversion/clock/dateTimeOperationAdd.d.ts.map +1 -0
  180. package/lib/exercises/math/conversion/clock/dateTimeOperationAdd.js +319 -0
  181. package/lib/exercises/math/conversion/clock/index.d.ts +3 -0
  182. package/lib/exercises/math/conversion/clock/index.d.ts.map +1 -0
  183. package/lib/exercises/math/conversion/clock/index.js +4 -0
  184. package/lib/exercises/math/conversion/index.d.ts +1 -0
  185. package/lib/exercises/math/conversion/index.d.ts.map +1 -1
  186. package/lib/exercises/math/conversion/index.js +1 -0
  187. package/lib/exercises/math/geometry/angles/angleNatureFromFigure.d.ts +11 -0
  188. package/lib/exercises/math/geometry/angles/angleNatureFromFigure.d.ts.map +1 -0
  189. package/lib/exercises/math/geometry/angles/angleNatureFromFigure.js +233 -0
  190. package/lib/exercises/math/geometry/angles/angleNatureFromMeasure.d.ts +10 -0
  191. package/lib/exercises/math/geometry/angles/angleNatureFromMeasure.d.ts.map +1 -0
  192. package/lib/exercises/math/geometry/angles/angleNatureFromMeasure.js +137 -0
  193. package/lib/exercises/math/geometry/angles/index.d.ts +2 -0
  194. package/lib/exercises/math/geometry/angles/index.d.ts.map +1 -1
  195. package/lib/exercises/math/geometry/angles/index.js +2 -0
  196. package/lib/exercises/math/geometry/circles/buildCircleFromRadius.d.ts +9 -0
  197. package/lib/exercises/math/geometry/circles/buildCircleFromRadius.d.ts.map +1 -0
  198. package/lib/exercises/math/geometry/circles/buildCircleFromRadius.js +187 -0
  199. package/lib/exercises/math/geometry/circles/index.d.ts +1 -0
  200. package/lib/exercises/math/geometry/circles/index.d.ts.map +1 -1
  201. package/lib/exercises/math/geometry/circles/index.js +1 -0
  202. package/lib/exercises/math/geometry/lines/buildParallelFromLineAndPoint.d.ts +11 -0
  203. package/lib/exercises/math/geometry/lines/buildParallelFromLineAndPoint.d.ts.map +1 -0
  204. package/lib/exercises/math/geometry/lines/buildParallelFromLineAndPoint.js +154 -0
  205. package/lib/exercises/math/geometry/lines/buildPerpendicularFromLineAndPoint.d.ts +11 -0
  206. package/lib/exercises/math/geometry/lines/buildPerpendicularFromLineAndPoint.d.ts.map +1 -0
  207. package/lib/exercises/math/geometry/lines/buildPerpendicularFromLineAndPoint.js +157 -0
  208. package/lib/exercises/math/geometry/lines/index.d.ts +2 -0
  209. package/lib/exercises/math/geometry/lines/index.d.ts.map +1 -1
  210. package/lib/exercises/math/geometry/lines/index.js +2 -0
  211. package/lib/exercises/math/geometry/triangles/index.d.ts +2 -0
  212. package/lib/exercises/math/geometry/triangles/index.d.ts.map +1 -1
  213. package/lib/exercises/math/geometry/triangles/index.js +2 -1
  214. package/lib/exercises/math/geometry/triangles/traceHeightInTriangle.d.ts +13 -0
  215. package/lib/exercises/math/geometry/triangles/traceHeightInTriangle.d.ts.map +1 -0
  216. package/lib/exercises/math/geometry/triangles/traceHeightInTriangle.js +271 -0
  217. package/lib/exercises/math/geometry/triangles/traceMedianInTriangle.d.ts +8 -0
  218. package/lib/exercises/math/geometry/triangles/traceMedianInTriangle.d.ts.map +1 -1
  219. package/lib/exercises/math/geometry/triangles/traceMedianInTriangle.js +284 -53
  220. package/lib/exercises/math/geometry/vectors/constructions/index.d.ts +1 -0
  221. package/lib/exercises/math/geometry/vectors/constructions/index.d.ts.map +1 -1
  222. package/lib/exercises/math/geometry/vectors/constructions/index.js +1 -0
  223. package/lib/exercises/math/geometry/vectors/constructions/traceVectorSumFromVecs.d.ts +8 -0
  224. package/lib/exercises/math/geometry/vectors/constructions/traceVectorSumFromVecs.d.ts.map +1 -0
  225. package/lib/exercises/math/geometry/vectors/constructions/traceVectorSumFromVecs.js +165 -0
  226. package/lib/exercises/math/geometry/volumes/index.d.ts +1 -0
  227. package/lib/exercises/math/geometry/volumes/index.d.ts.map +1 -1
  228. package/lib/exercises/math/geometry/volumes/index.js +1 -0
  229. package/lib/exercises/math/geometry/volumes/volumeOfCylinder.d.ts +8 -0
  230. package/lib/exercises/math/geometry/volumes/volumeOfCylinder.d.ts.map +1 -0
  231. package/lib/exercises/math/geometry/volumes/volumeOfCylinder.js +157 -0
  232. package/lib/exercises/math/spaceGeometry/basis/index.d.ts +1 -0
  233. package/lib/exercises/math/spaceGeometry/basis/index.d.ts.map +1 -1
  234. package/lib/exercises/math/spaceGeometry/basis/index.js +1 -0
  235. package/lib/exercises/math/spaceGeometry/basis/spaceSegmentLengthInRectangularPrism.d.ts +18 -0
  236. package/lib/exercises/math/spaceGeometry/basis/spaceSegmentLengthInRectangularPrism.d.ts.map +1 -0
  237. package/lib/exercises/math/spaceGeometry/basis/spaceSegmentLengthInRectangularPrism.js +538 -0
  238. package/lib/exercises/math/trigonometry/formulas/trigoAdditionFormulaUsage.d.ts.map +1 -1
  239. package/lib/exercises/math/trigonometry/formulas/trigoAdditionFormulaUsage.js +6 -5
  240. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.js +1 -1
  241. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts +1 -0
  242. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts.map +1 -1
  243. package/lib/exercises/utils/geogebra/toolBarConstructor.js +2 -0
  244. package/lib/geogebra/parsers/geogebraParser.d.ts +3 -0
  245. package/lib/geogebra/parsers/geogebraParser.d.ts.map +1 -1
  246. package/lib/geogebra/parsers/geogebraParser.js +27 -0
  247. package/lib/index.d.ts +213 -23
  248. package/lib/index.d.ts.map +1 -1
  249. package/lib/latexTester.js +2 -0
  250. package/lib/math/geometry/angle.d.ts.map +1 -1
  251. package/lib/math/geometry/angle.js +3 -0
  252. package/lib/math/geometry/segment.d.ts +1 -1
  253. package/lib/math/geometry/segment.d.ts.map +1 -1
  254. package/lib/math/geometry/segment.js +5 -2
  255. package/lib/math/utils/geometry/angleBetweenPoints.d.ts +4 -0
  256. package/lib/math/utils/geometry/angleBetweenPoints.d.ts.map +1 -0
  257. package/lib/math/utils/geometry/angleBetweenPoints.js +58 -0
  258. package/lib/math/utils/geometry/angleNWSE.d.ts +3 -0
  259. package/lib/math/utils/geometry/angleNWSE.d.ts.map +1 -0
  260. package/lib/math/utils/geometry/angleNWSE.js +56 -0
  261. package/lib/tests/singleExo.test.d.ts.map +1 -1
  262. package/lib/tests/singleExo.test.js +2 -2
  263. package/lib/utils/strings/frenchDays.d.ts +2 -0
  264. package/lib/utils/strings/frenchDays.d.ts.map +1 -0
  265. package/lib/utils/strings/frenchDays.js +9 -0
  266. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ nodeIdsModuleA: NodeIdentifiers;
5
+ nodeIdsArgumentA: NodeIdentifiers;
6
+ nodeIdsModuleB: NodeIdentifiers;
7
+ nodeIdsArgumentB: NodeIdentifiers;
8
+ };
9
+ export declare const complexGeomPlacePointWithAffixInU: Exercise<Identifiers>;
10
+ export {};
11
+ //# sourceMappingURL=complexGeomPlacePointWithAffixInU.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complexGeomPlacePointWithAffixInU.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/complex/geometric/complexGeomPlacePointWithAffixInU.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AAerC,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAiF7C,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,eAAe,CAAC;IAChC,gBAAgB,EAAE,eAAe,CAAC;IAClC,cAAc,EAAE,eAAe,CAAC;IAChC,gBAAgB,EAAE,eAAe,CAAC;CACnC,CAAC;AAkRF,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,WAAW,CAgBnE,CAAC"}
@@ -0,0 +1,253 @@
1
+ import { toolBarConstructor } from "../../../../exercises/utils/geogebra/toolBarConstructor.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { greenMain } from "../../../../geogebra/colors.js";
4
+ import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
5
+ import { ggbPointToCoords } from "../../../../geogebra/parsers/ggbPointToCoords.js";
6
+ import { parseGGBPoints } from "../../../../geogebra/parsers/parseGGBPoints.js";
7
+ import { Point, PointConstructor } from "../../../../math/geometry/point.js";
8
+ import { Vector } from "../../../../math/geometry/vector.js";
9
+ import { valueAngleBetweenPoints } from "../../../../math/utils/geometry/angleBetweenPoints.js";
10
+ import { randfloat } from "../../../../math/utils/random/randfloat.js";
11
+ import { round } from "../../../../math/utils/round.js";
12
+ import { cos } from "../../../../tree/nodes/functions/cosNode.js";
13
+ import { sin } from "../../../../tree/nodes/functions/sinNode.js";
14
+ import { NodeConstructor, } from "../../../../tree/nodes/nodeConstructor.js";
15
+ import { PiNode } from "../../../../tree/nodes/numbers/piNode.js";
16
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
17
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
18
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
19
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
20
+ import { random, randomMany } from "../../../../utils/alea/random.js";
21
+ import { shuffle } from "../../../../utils/alea/shuffle.js";
22
+ const pointO = new Point("O", 0, 0);
23
+ const _degreesToRadians = (angleInDegrees, precision) => {
24
+ const oneOver180 = 0.00555555555555555;
25
+ return round(multiply(multiply(angleInDegrees, PiNode), oneOver180).evaluate(), precision);
26
+ };
27
+ const rotateVector = (vec, angle, name) => {
28
+ //x' = cos(t)*x -sin(t)*y
29
+ //y' = sin(t)*x + cos(t)*y
30
+ const cos = Math.cos(angle);
31
+ const sin = Math.sin(angle);
32
+ return new Vector(name, substract(multiply(cos, vec.x), multiply(sin, vec.y)).evaluate().toTree(), add(multiply(sin, vec.x), multiply(cos, vec.y)).evaluate().toTree());
33
+ };
34
+ const _rotatePoint = (target, angle, center, name, precision = 2) => {
35
+ const vSrc = createVector(center, target, "vSrc", precision);
36
+ const vRotated = rotateVector(vSrc, angle, "vRotated");
37
+ return createPoint(add(center.x, vRotated.x).evaluate(), add(center.y, vRotated.y).evaluate(), name, precision);
38
+ };
39
+ const createVector = (from, to, name, precision = 5) => {
40
+ return new Vector(name, round(substract(to.x, from.x).evaluate(), precision).toTree(), round(substract(to.y, from.y).evaluate(), precision).toTree());
41
+ };
42
+ const createPoint = (x, y, name, precision = 5) => {
43
+ return new Point(name, round(x, precision), round(y, precision));
44
+ };
45
+ const createPointForModuleAndArgument = (nodeModule, nodeArgument, name) => new Point(name, multiply(nodeModule, cos(nodeArgument)), multiply(nodeModule, sin(nodeArgument)));
46
+ const getHydrated = (identifiers) => {
47
+ const { nodeIdsModuleA, nodeIdsArgumentA, nodeIdsModuleB, nodeIdsArgumentB } = identifiers;
48
+ const [nodeModuleA, nodeArgumentA, nodeModuleB, nodeArgumentB] = [
49
+ nodeIdsModuleA,
50
+ nodeIdsArgumentA,
51
+ nodeIdsModuleB,
52
+ nodeIdsArgumentB,
53
+ ].map((nodeIds) => NodeConstructor.fromIdentifiers(nodeIds));
54
+ const pointA = createPointForModuleAndArgument(nodeModuleA, nodeArgumentA, "A");
55
+ const pointB = createPointForModuleAndArgument(nodeModuleB, nodeArgumentB, "B");
56
+ const pointAU = createPointForModuleAndArgument((1).toTree(), nodeArgumentA, "A");
57
+ const pointBU = createPointForModuleAndArgument((1).toTree(), nodeArgumentB, "B");
58
+ return {
59
+ nodeModuleA,
60
+ nodeArgumentA,
61
+ nodeModuleB,
62
+ nodeArgumentB,
63
+ pointA,
64
+ pointB,
65
+ pointAU,
66
+ pointBU,
67
+ };
68
+ };
69
+ const getInstruction = () => {
70
+ return `Sur la figure ci-dessous, le point $A$ a pour affixe $z_{A}$.
71
+ Le point $B$ a pour affixe $z_{B}$.
72
+
73
+ Placer un point $M$ d'affixe $z$ tel que :
74
+
75
+ $$
76
+ z \\in \\mathbb{U}
77
+ $$
78
+
79
+ et
80
+
81
+ $$
82
+ \\arg(a) < \\arg(z) < \\arg(b)
83
+ $$
84
+
85
+ `;
86
+ };
87
+ const getGGBAnswer = (identifiers) => {
88
+ const { pointAU, pointBU } = getHydrated(identifiers);
89
+ return [
90
+ `arcAUBU = CircleArc(${pointO.toMathString()}, ${pointAU.toMathString()}, ${pointBU.toMathString()})`,
91
+ ];
92
+ };
93
+ const getHint = () => {
94
+ return `Les points dont l'affixe est dans $\\mathbb{U}$ sont les points dont l'affixe a pour module $1$.`;
95
+ };
96
+ const getCorrection = () => {
97
+ return `Les points dont l'affixe est dans $\\mathbb{U}$ sont les points dont l'affixe a pour module $1$.
98
+ Le point $M$ appartient donc au cercle trigonométrique.
99
+ Les points solutions sont les points d'affixe $z = e^{i \\theta}$ avec :
100
+
101
+ $$
102
+ \\arg(a) < \\theta < \\arg(b)
103
+ $$
104
+
105
+ `;
106
+ };
107
+ const getCorrectionGGBOptions = (identifiers) => {
108
+ const { pointA, pointB, pointAU, pointBU } = getHydrated(identifiers);
109
+ const ggb = new GeogebraConstructor({
110
+ isGridSimple: true,
111
+ commands: [
112
+ ...[pointA, pointB].flatMap((point) => point.toGGBCommand({
113
+ isFixed: true,
114
+ isSelectionnable: true,
115
+ showLabel: true,
116
+ // style: 1,
117
+ })),
118
+ //circle
119
+ ...[
120
+ `cir = Circle(${pointO.toMathString()}, 1)`,
121
+ `SetLineThickness(cir, 2)`,
122
+ `SetLineStyle(cir, 2)`,
123
+ ],
124
+ //rays
125
+ ...[
126
+ `rayA = Ray(${pointO.toMathString()}, ${pointA.toMathString()})`,
127
+ `SetLineThickness(rayA, 1)`,
128
+ `SetLineStyle(rayA, 2)`,
129
+ `rayB = Ray(${pointO.toMathString()}, ${pointB.toMathString()})`,
130
+ `SetLineThickness(rayB, 1)`,
131
+ `SetLineStyle(rayB, 2)`,
132
+ ],
133
+ //arc
134
+ ...[
135
+ `arcAUBU = CircleArc(${pointO.toMathString()}, ${pointAU.toMathString()}, ${pointBU.toMathString()})`,
136
+ `SetLineThickness(arcAUBU, 4)`,
137
+ `SetColor(arcAUBU, "${greenMain}")`,
138
+ ],
139
+ ],
140
+ fontSize: 16,
141
+ });
142
+ return ggb.getOptions({
143
+ coords: ggb.getCoordsForPoints([pointA, pointB, pointAU, pointBU, pointO]),
144
+ });
145
+ };
146
+ const getStudentGGBOptions = (identifiers) => {
147
+ const { pointA, pointB, pointAU, pointBU } = getHydrated(identifiers);
148
+ const ggb = new GeogebraConstructor({
149
+ customToolBar: toolBarConstructor({ point: true }),
150
+ isGridSimple: true,
151
+ commands: [
152
+ ...[pointA, pointB].flatMap((point) => point.toGGBCommand({
153
+ isFixed: true,
154
+ isSelectionnable: true,
155
+ showLabel: true,
156
+ // style: 1,
157
+ })),
158
+ ],
159
+ fontSize: 16,
160
+ });
161
+ return ggb.getOptions({
162
+ coords: ggb.getCoordsForPoints([pointA, pointB, pointAU, pointBU, pointO]),
163
+ });
164
+ };
165
+ const isGGBAnswerValid = (ggbAns, { ggbAnswer, ...identifiers }) => {
166
+ const { nodeArgumentA, nodeArgumentB } = getHydrated(identifiers);
167
+ const arrPointCoords = parseGGBPoints(ggbAns).map((p) => ggbPointToCoords(p));
168
+ if (arrPointCoords.length !== 1)
169
+ return false;
170
+ const [pointCoords] = arrPointCoords;
171
+ const pointAns = PointConstructor.fromCoords([pointCoords.x, pointCoords.y]);
172
+ //point is not on unit circle
173
+ {
174
+ const valueModuleAns = pointAns.distanceTo(pointO);
175
+ if (!(0.88 < valueModuleAns && valueModuleAns < 1.12)) {
176
+ return false;
177
+ }
178
+ }
179
+ //point is not on target arc
180
+ {
181
+ const pointAxisXPlus = new Point("AxisXPlus", 1, 0);
182
+ const valueAngleAns = valueAngleBetweenPoints(pointAxisXPlus, pointO, pointAns);
183
+ const [valueAngleA, valueAngleB] = [nodeArgumentA, nodeArgumentB].map((nodeArgument) => nodeArgument.evaluate());
184
+ if (!(valueAngleA < valueAngleAns && valueAngleAns < valueAngleB)) {
185
+ return false;
186
+ }
187
+ }
188
+ return true;
189
+ };
190
+ const getComplexGeomPlacePointFromZAPlusZQuestion = () => {
191
+ const [nodeModuleA, nodeArgumentA, nodeModuleB, nodeArgumentB] = (() => {
192
+ const nodeAngleOffset = multiply(random([-2, -1, 0, 1]), frac(PiNode, 2));
193
+ const createRandomModule = (typeModule) => {
194
+ switch (typeModule) {
195
+ case "belowU":
196
+ return randfloat(0.65, 0.85, 2).toTree();
197
+ case "U":
198
+ return (1).toTree();
199
+ case "beyondU":
200
+ return randfloat(1.4, 3, 1).toTree();
201
+ default:
202
+ throw new Error("Unsupported typeModule: " + typeModule);
203
+ }
204
+ };
205
+ const [typeModuleA, typeModuleB] = shuffle(random([
206
+ randomMany(["belowU", "U", "beyondU"], 2),
207
+ ["beyondU", "beyondU"],
208
+ ]));
209
+ const [nodeModuleA, nodeModuleB] = [typeModuleA, typeModuleB].map(createRandomModule);
210
+ const progressSeparator = randfloat(0.3, 0.7);
211
+ const progressMaxA = progressSeparator - 0.1;
212
+ const progressMinB = progressSeparator + 0.1;
213
+ const progressA = randfloat(0.1, progressMaxA, 2);
214
+ const progressB = randfloat(progressMinB, 0.9, 2);
215
+ const [nodeArgumentA, nodeArgumentB] = [progressA, progressB]
216
+ .map((progress) => multiply(progress, frac(PiNode, 2)))
217
+ .map((nodeArgumentRaw) => add(nodeArgumentRaw, nodeAngleOffset));
218
+ return [nodeModuleA, nodeArgumentA, nodeModuleB, nodeArgumentB];
219
+ })();
220
+ const identifiers = {
221
+ nodeIdsModuleA: nodeModuleA.toIdentifiers(),
222
+ nodeIdsArgumentA: nodeArgumentA.toIdentifiers(),
223
+ nodeIdsModuleB: nodeModuleB.toIdentifiers(),
224
+ nodeIdsArgumentB: nodeArgumentB.toIdentifiers(),
225
+ };
226
+ return getQuestionFromIdentifiers(identifiers);
227
+ };
228
+ const getQuestionFromIdentifiers = (identifiers, opts) => {
229
+ const question = {
230
+ ggbAnswer: getGGBAnswer(identifiers),
231
+ instruction: getInstruction(identifiers),
232
+ answerFormat: "tex",
233
+ identifiers,
234
+ hint: getHint(identifiers),
235
+ correction: getCorrection(identifiers),
236
+ correctionGgbOptions: getCorrectionGGBOptions(identifiers),
237
+ studentGgbOptions: getStudentGGBOptions(identifiers, opts),
238
+ };
239
+ return question;
240
+ };
241
+ export const complexGeomPlacePointWithAffixInU = {
242
+ id: "complexGeomPlacePointWithAffixInU",
243
+ label: "Placer un point dont l'affixe appartient à $\\mathbb{U}$",
244
+ isSingleStep: true,
245
+ generator: (nb, opts) => getDistinctQuestions(() => getComplexGeomPlacePointFromZAPlusZQuestion(opts), nb),
246
+ qcmTimer: 60,
247
+ freeTimer: 60,
248
+ subject: "Mathématiques",
249
+ getQuestionFromIdentifiers,
250
+ hasHintAndCorrection: true,
251
+ answerType: "GGB",
252
+ isGGBAnswerValid,
253
+ };
@@ -0,0 +1,12 @@
1
+ export * from "./complexGeomAffixAlgFromPoint.js";
2
+ export * from "./complexDistance.js";
3
+ export * from "./complexGeomPlaceAffixPoint.js";
4
+ export * from "./complexGeomAffixTrigFromPoint.js";
5
+ export * from "./complexGeomApproxOfCosArgOrSinArgFromPointAndAffixTrig.js";
6
+ export * from "./complexAlgebraicFromModuloAndArg.js";
7
+ export * from "./complexGeomAffixExpFromPoint.js";
8
+ export * from "./complexGeomFindPointFromAffixExp.js";
9
+ export * from "./complexGeomAffixExpFromCenteredRegularPolygon.js";
10
+ export * from "./complexGeomFindPointFromPowerOfUnitRootFromFigure.js";
11
+ export * from "./complexGeomArgumentOfFracCBABFromFigure.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/complex/geometric/index.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6DAA6D,CAAC;AAC5E,cAAc,uCAAuC,CAAC;AAGtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AAInE,cAAc,wDAAwD,CAAC;AACvE,cAAc,8CAA8C,CAAC"}
@@ -0,0 +1,19 @@
1
+ //alg
2
+ export * from "./complexGeomAffixAlgFromPoint.js";
3
+ export * from "./complexDistance.js";
4
+ export * from "./complexGeomPlaceAffixPoint.js";
5
+ //trig
6
+ export * from "./complexGeomAffixTrigFromPoint.js";
7
+ export * from "./complexGeomApproxOfCosArgOrSinArgFromPointAndAffixTrig.js";
8
+ export * from "./complexAlgebraicFromModuloAndArg.js";
9
+ //exp
10
+ export * from "./complexGeomAffixExpFromPoint.js";
11
+ export * from "./complexGeomFindPointFromAffixExp.js";
12
+ export * from "./complexGeomAffixExpFromCenteredRegularPolygon.js";
13
+ // export * from "./complexGeomPlacePointFromZAPlusZ.js";//TODO : à fix
14
+ // export * from "./complexGeomPlacePointFromZATimesZ.js";//TODO : à fix
15
+ // export * from "./complexGeomPlacePointFromZATransformed.js"; //TODO : à fix
16
+ export * from "./complexGeomFindPointFromPowerOfUnitRootFromFigure.js";
17
+ export * from "./complexGeomArgumentOfFracCBABFromFigure.js";
18
+ //sets
19
+ // export * from "./complexGeomPlacePointWithAffixInU.js"; //TODO : à fix
@@ -1,13 +1,7 @@
1
- export * from "./addComplex.js";
2
- export * from "./conjugateComplex.js";
3
- export * from "./conjugateDivideComplex.js";
4
- export * from "./conjugateMultiplyComplex.js";
5
- export * from "./divideComplex.js";
6
- export * from "./inverseComplex.js";
7
- export * from "./linearCombinaisonComplex.js";
8
- export * from "./moduloFromAlgebraicComplex.js";
9
- export * from "./mutiplyComplex.js";
10
- export * from "./reAndIm.js";
11
1
  export * from "./argumentFromAlgebraicComplex.js";
12
2
  export * from "./exp/index.js";
3
+ export * from "./geometric/index.js";
4
+ export * from "./polynomials/index.js";
5
+ export * from "./unitRoots/index.js";
6
+ export * from "./algebraic/index.js";
13
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/complex/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/complex/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -1,13 +1,6 @@
1
- export * from "./addComplex.js";
2
- // export * from "./argumentFromAlgebraicComplex";
3
- export * from "./conjugateComplex.js";
4
- export * from "./conjugateDivideComplex.js";
5
- export * from "./conjugateMultiplyComplex.js";
6
- export * from "./divideComplex.js";
7
- export * from "./inverseComplex.js";
8
- export * from "./linearCombinaisonComplex.js";
9
- export * from "./moduloFromAlgebraicComplex.js";
10
- export * from "./mutiplyComplex.js";
11
- export * from "./reAndIm.js";
12
1
  export * from "./argumentFromAlgebraicComplex.js";
13
2
  export * from "./exp/index.js";
3
+ export * from "./geometric/index.js";
4
+ export * from "./polynomials/index.js";
5
+ export * from "./unitRoots/index.js";
6
+ export * from "./algebraic/index.js";
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ aIds: NodeIdentifiers;
5
+ z1ReIds: NodeIdentifiers;
6
+ z1ImIds: NodeIdentifiers;
7
+ };
8
+ export declare const factorizePolynomialInC: Exercise<Identifiers>;
9
+ export {};
10
+ //# sourceMappingURL=factorizePolynomialInC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factorizePolynomialInC.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/complex/polynomials/factorizePolynomialInC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAU7C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AAwLF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAkBxD,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { addValidProp, shuffleProps, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { randint } from "../../../../math/utils/random/randint.js";
4
+ import { ComplexNode } from "../../../../tree/nodes/complex/complexNode.js";
5
+ import { isOppositeNode, opposite, } from "../../../../tree/nodes/functions/oppositeNode.js";
6
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
7
+ import { add } from "../../../../tree/nodes/operators/addNode.js";
8
+ import { isMultiplyNode, multiply, } from "../../../../tree/nodes/operators/multiplyNode.js";
9
+ import { substract } from "../../../../tree/nodes/operators/substractNode.js";
10
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
11
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
12
+ const getPropositions = (n, { answer, ...identifiers }) => {
13
+ const propositions = [];
14
+ addValidProp(propositions, answer);
15
+ const { aIds, z1ImIds, z1ReIds } = identifiers;
16
+ const z1Re = reifyAlgebraic(z1ReIds);
17
+ const z1Im = reifyAlgebraic(z1ImIds);
18
+ const complex = add(z1Re, multiply(z1Im, "i"));
19
+ const conj = add(z1Re, multiply(opposite(z1Im), "i"));
20
+ tryToAddWrongProp(propositions, multiply(substract("z", complex).simplify({
21
+ towardsDistribute: true,
22
+ forbidFactorize: true,
23
+ noAddOrder: true,
24
+ }), substract("z", conj).simplify({
25
+ towardsDistribute: true,
26
+ forbidFactorize: true,
27
+ noAddOrder: true,
28
+ })).toTex());
29
+ propWhile(propositions, n, () => {
30
+ const z1ReIds = randint(-5, 6).toTree().toIdentifiers();
31
+ const z1ImIds = randint(-5, 6, [0]).toTree().toIdentifiers();
32
+ tryToAddWrongProp(propositions, getAnswer({ aIds, z1ImIds, z1ReIds }));
33
+ });
34
+ return shuffleProps(propositions, n);
35
+ };
36
+ const getAnswer = (identifiers) => {
37
+ const { aIds, z1ImIds, z1ReIds } = identifiers;
38
+ const a = reifyAlgebraic(aIds);
39
+ const z1Re = reifyAlgebraic(z1ReIds);
40
+ const z1Im = reifyAlgebraic(z1ImIds);
41
+ const complex = add(z1Re, multiply(z1Im, "i"));
42
+ const conj = add(z1Re, multiply(opposite(z1Im), "i"));
43
+ return multiply(a, multiply(substract("z", complex).simplify({
44
+ towardsDistribute: true,
45
+ forbidFactorize: true,
46
+ noAddOrder: true,
47
+ }), substract("z", conj).simplify({
48
+ towardsDistribute: true,
49
+ forbidFactorize: true,
50
+ noAddOrder: true,
51
+ }))).toTex();
52
+ };
53
+ const getInstruction = (identifiers) => {
54
+ const { aIds, z1ImIds, z1ReIds } = identifiers;
55
+ const a = reifyAlgebraic(aIds);
56
+ const z1Re = reifyAlgebraic(z1ReIds);
57
+ const z1Im = reifyAlgebraic(z1ImIds);
58
+ const complex = new ComplexNode(z1Re, z1Im);
59
+ return `Soit $P$ un polynôme tel que pour tout $z\\in\\mathbb{C}$ :
60
+
61
+ $$
62
+ P(z) = ${multiply(a, "z^2").toTex()}+bz+c
63
+ $$
64
+
65
+ On sait de plus que $P(${complex.toTex()}) = 0$.
66
+
67
+ Écrire $P(z)$ sous forme factorisée.`;
68
+ };
69
+ const getHint = () => {
70
+ return `$P(z)$ peut se factoriser sous la forme :
71
+
72
+ $$
73
+ P(z) = a(z-z_1)(z-z_2)
74
+ $$`;
75
+ };
76
+ const getCorrection = (identifiers) => {
77
+ const { z1ImIds, z1ReIds } = identifiers;
78
+ const z1Re = reifyAlgebraic(z1ReIds);
79
+ const z1Im = reifyAlgebraic(z1ImIds);
80
+ const complex = new ComplexNode(z1Re, z1Im);
81
+ const conj = new ComplexNode(z1Re, opposite(z1Im).simplify());
82
+ return `Tout polynôme $P$ de la forme $az^2 +bz+c$ où $z\\in\\mathbb{C}$ et $a$,$b$,$c$ sont des réels (avec $a\\neq 0$) peut se réécrire sous forme factorisée :
83
+
84
+ $$
85
+ P(z)= a(z-z_1)(z-z_2)
86
+ $$
87
+
88
+ où $z_1$ et $z_2$ sont les racines de $P$ (avec éventuellement $z_1 = z_2$).
89
+
90
+ Ici, on connaît une racine : $z_1 = ${complex.toTex()}$.
91
+
92
+ On peut en déduire la deuxième : en effet,
93
+
94
+ $$
95
+ z_2 = \\overline{z_1} = ${conj.toTex()}
96
+ $$
97
+
98
+ On en déduit la forme factorisée de $P(z)$ :
99
+
100
+ $$
101
+ P(z) = ${getAnswer(identifiers)}
102
+ $$`;
103
+ };
104
+ const getKeys = () => {
105
+ return ["z", "i"];
106
+ };
107
+ const isAnswerValid = (ans, { answer: _answer, ...identifiers }) => {
108
+ try {
109
+ const { aIds, z1ImIds, z1ReIds } = identifiers;
110
+ const a = reifyAlgebraic(aIds);
111
+ const z1Re = reifyAlgebraic(z1ReIds);
112
+ const z1Im = reifyAlgebraic(z1ImIds);
113
+ const complex = add(z1Re, multiply(z1Im, "i"));
114
+ const conj = add(z1Re, multiply(opposite(z1Im), "i"));
115
+ const parsed = parseAlgebraic(ans);
116
+ return ((isMultiplyNode(parsed) ||
117
+ (isOppositeNode(parsed) && isMultiplyNode(parsed.child))) &&
118
+ multiply(a, multiply(substract("z", complex), substract("z", conj)))
119
+ .simplify({
120
+ towardsDistribute: true,
121
+ forbidFactorize: true,
122
+ })
123
+ .toTex()
124
+ .replaceAll("zi", "iz") === //replaceAll parce que sortMultiply ne sort pas et j'ai pas le temps de faire mieux
125
+ parsed
126
+ .simplify({
127
+ towardsDistribute: true,
128
+ forbidFactorize: true,
129
+ })
130
+ .toTex()
131
+ .replaceAll("zi", "iz"));
132
+ }
133
+ catch (err) {
134
+ return handleVEAError(err);
135
+ }
136
+ };
137
+ const getFactorizePolynomialInCQuestion = () => {
138
+ const a = randint(-9, 10, [-1, 1, 0]);
139
+ const z1Re = randint(-5, 6);
140
+ const z1Im = randint(-5, 6, [0]);
141
+ const identifiers = {
142
+ aIds: a.toTree().toIdentifiers(),
143
+ z1ImIds: z1Im.toTree().toIdentifiers(),
144
+ z1ReIds: z1Re.toTree().toIdentifiers(),
145
+ };
146
+ return getQuestionFromIdentifiers(identifiers);
147
+ };
148
+ const getQuestionFromIdentifiers = (identifiers) => {
149
+ return {
150
+ answer: getAnswer(identifiers),
151
+ instruction: getInstruction(identifiers),
152
+ keys: getKeys(identifiers),
153
+ answerFormat: "tex",
154
+ identifiers,
155
+ hint: getHint(identifiers),
156
+ correction: getCorrection(identifiers),
157
+ };
158
+ };
159
+ export const factorizePolynomialInC = {
160
+ id: "factorizePolynomialInC",
161
+ connector: "=",
162
+ label: "Factoriser un polynôme dans $\\mathbb{C}$ en connaissant une racine",
163
+ isSingleStep: true,
164
+ generator: (nb, opts) => getDistinctQuestions(() => getFactorizePolynomialInCQuestion(opts), nb),
165
+ qcmTimer: 60,
166
+ freeTimer: 60,
167
+ getPropositions,
168
+ isAnswerValid,
169
+ subject: "Mathématiques",
170
+ getInstruction,
171
+ getHint,
172
+ getCorrection,
173
+ getAnswer,
174
+ getQuestionFromIdentifiers,
175
+ hasHintAndCorrection: true,
176
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./solveZSquareEqualsA.js";
2
+ export * from "./solveSecondDegreeInComplex.js";
3
+ export * from "./factorizePolynomialInC.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/complex/polynomials/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./solveZSquareEqualsA.js";
2
+ export * from "./solveSecondDegreeInComplex.js";
3
+ export * from "./factorizePolynomialInC.js";
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ aIds: NodeIdentifiers;
5
+ bIds: NodeIdentifiers;
6
+ cIds: NodeIdentifiers;
7
+ };
8
+ export declare const solveSecondDegreeInComplex: Exercise<Identifiers>;
9
+ export {};
10
+ //# sourceMappingURL=solveSecondDegreeInComplex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solveSecondDegreeInComplex.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/complex/polynomials/solveSecondDegreeInComplex.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAc7C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AAkMF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,WAAW,CAmB5D,CAAC"}