math-exercises 3.0.214 → 3.0.216

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 (371) 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 +82 -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 +2 -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/graphs/adjacentMatrixPath.d.ts +10 -0
  233. package/lib/exercises/math/graphs/adjacentMatrixPath.d.ts.map +1 -0
  234. package/lib/exercises/math/graphs/adjacentMatrixPath.js +89 -0
  235. package/lib/exercises/math/graphs/edgesNumberFromSummitsDegrees.d.ts +7 -0
  236. package/lib/exercises/math/graphs/edgesNumberFromSummitsDegrees.d.ts.map +1 -0
  237. package/lib/exercises/math/graphs/edgesNumberFromSummitsDegrees.js +98 -0
  238. package/lib/exercises/math/graphs/eulerianChainFromAdjacentMatrix.d.ts +8 -0
  239. package/lib/exercises/math/graphs/eulerianChainFromAdjacentMatrix.d.ts.map +1 -0
  240. package/lib/exercises/math/graphs/eulerianChainFromAdjacentMatrix.js +96 -0
  241. package/lib/exercises/math/graphs/graphsChainOrPathOfLengthN.d.ts +15 -0
  242. package/lib/exercises/math/graphs/graphsChainOrPathOfLengthN.d.ts.map +1 -0
  243. package/lib/exercises/math/graphs/graphsChainOrPathOfLengthN.js +262 -0
  244. package/lib/exercises/math/graphs/graphsCheckIsConnectedUndirectedGraph.d.ts +11 -0
  245. package/lib/exercises/math/graphs/graphsCheckIsConnectedUndirectedGraph.d.ts.map +1 -0
  246. package/lib/exercises/math/graphs/graphsCheckIsConnectedUndirectedGraph.js +178 -0
  247. package/lib/exercises/math/graphs/graphsCheckIsSameGraph.d.ts +19 -0
  248. package/lib/exercises/math/graphs/graphsCheckIsSameGraph.d.ts.map +1 -0
  249. package/lib/exercises/math/graphs/graphsCheckIsSameGraph.js +301 -0
  250. package/lib/exercises/math/graphs/graphsCheckIsVerticesAdjacent.d.ts +16 -0
  251. package/lib/exercises/math/graphs/graphsCheckIsVerticesAdjacent.d.ts.map +1 -0
  252. package/lib/exercises/math/graphs/graphsCheckIsVerticesAdjacent.js +207 -0
  253. package/lib/exercises/math/graphs/graphsDegreeOfVertex.d.ts +15 -0
  254. package/lib/exercises/math/graphs/graphsDegreeOfVertex.d.ts.map +1 -0
  255. package/lib/exercises/math/graphs/graphsDegreeOfVertex.js +232 -0
  256. package/lib/exercises/math/graphs/graphsOrderOfGraph.d.ts +14 -0
  257. package/lib/exercises/math/graphs/graphsOrderOfGraph.d.ts.map +1 -0
  258. package/lib/exercises/math/graphs/graphsOrderOfGraph.js +222 -0
  259. package/lib/exercises/math/graphs/index.d.ts +10 -0
  260. package/lib/exercises/math/graphs/index.d.ts.map +1 -0
  261. package/lib/exercises/math/graphs/index.js +9 -0
  262. package/lib/exercises/math/index.d.ts +1 -0
  263. package/lib/exercises/math/index.d.ts.map +1 -1
  264. package/lib/exercises/math/index.js +1 -0
  265. package/lib/exercises/math/matrices/areMatricesInverse.d.ts +9 -0
  266. package/lib/exercises/math/matrices/areMatricesInverse.d.ts.map +1 -0
  267. package/lib/exercises/math/matrices/areMatricesInverse.js +106 -0
  268. package/lib/exercises/math/matrices/computeFixedMatrixInRecurrenceSequence.d.ts +9 -0
  269. package/lib/exercises/math/matrices/computeFixedMatrixInRecurrenceSequence.d.ts.map +1 -0
  270. package/lib/exercises/math/matrices/computeFixedMatrixInRecurrenceSequence.js +144 -0
  271. package/lib/exercises/math/matrices/findInversedMatrixFromSystem.d.ts +8 -0
  272. package/lib/exercises/math/matrices/findInversedMatrixFromSystem.d.ts.map +1 -0
  273. package/lib/exercises/math/matrices/findInversedMatrixFromSystem.js +148 -0
  274. package/lib/exercises/math/matrices/index.d.ts +12 -0
  275. package/lib/exercises/math/matrices/index.d.ts.map +1 -1
  276. package/lib/exercises/math/matrices/index.js +12 -0
  277. package/lib/exercises/math/matrices/isMatrixTransitionMatrix.d.ts +8 -0
  278. package/lib/exercises/math/matrices/isMatrixTransitionMatrix.d.ts.map +1 -0
  279. package/lib/exercises/math/matrices/isMatrixTransitionMatrix.js +132 -0
  280. package/lib/exercises/math/matrices/matrixBuildMatrixFromCoefficients.d.ts +8 -0
  281. package/lib/exercises/math/matrices/matrixBuildMatrixFromCoefficients.d.ts.map +1 -0
  282. package/lib/exercises/math/matrices/matrixBuildMatrixFromCoefficients.js +152 -0
  283. package/lib/exercises/math/matrices/matrixCheckIsSymmetrical.d.ts +8 -0
  284. package/lib/exercises/math/matrices/matrixCheckIsSymmetrical.d.ts.map +1 -0
  285. package/lib/exercises/math/matrices/matrixCheckIsSymmetrical.js +155 -0
  286. package/lib/exercises/math/matrices/matrixComputeDetOfMat2.d.ts +8 -0
  287. package/lib/exercises/math/matrices/matrixComputeDetOfMat2.d.ts.map +1 -0
  288. package/lib/exercises/math/matrices/matrixComputeDetOfMat2.js +142 -0
  289. package/lib/exercises/math/matrices/matrixComputeInverseOfMat2.d.ts +8 -0
  290. package/lib/exercises/math/matrices/matrixComputeInverseOfMat2.d.ts.map +1 -0
  291. package/lib/exercises/math/matrices/matrixComputeInverseOfMat2.js +237 -0
  292. package/lib/exercises/math/matrices/matrixComputeLinearCombination.d.ts +15 -0
  293. package/lib/exercises/math/matrices/matrixComputeLinearCombination.d.ts.map +1 -0
  294. package/lib/exercises/math/matrices/matrixComputeLinearCombination.js +232 -0
  295. package/lib/exercises/math/matrices/matrixComputePower.d.ts +12 -0
  296. package/lib/exercises/math/matrices/matrixComputePower.d.ts.map +1 -0
  297. package/lib/exercises/math/matrices/matrixComputePower.js +230 -0
  298. package/lib/exercises/math/matrices/matrixComputeProduct.d.ts +9 -0
  299. package/lib/exercises/math/matrices/matrixComputeProduct.d.ts.map +1 -0
  300. package/lib/exercises/math/matrices/matrixComputeProduct.js +178 -0
  301. package/lib/exercises/math/matrices/writeMatrixAssociatedToSystem.d.ts +8 -0
  302. package/lib/exercises/math/matrices/writeMatrixAssociatedToSystem.d.ts.map +1 -0
  303. package/lib/exercises/math/matrices/writeMatrixAssociatedToSystem.js +105 -0
  304. package/lib/exercises/math/spaceGeometry/basis/index.d.ts +1 -0
  305. package/lib/exercises/math/spaceGeometry/basis/index.d.ts.map +1 -1
  306. package/lib/exercises/math/spaceGeometry/basis/index.js +1 -0
  307. package/lib/exercises/math/spaceGeometry/basis/spaceSegmentLengthInRectangularPrism.d.ts +18 -0
  308. package/lib/exercises/math/spaceGeometry/basis/spaceSegmentLengthInRectangularPrism.d.ts.map +1 -0
  309. package/lib/exercises/math/spaceGeometry/basis/spaceSegmentLengthInRectangularPrism.js +538 -0
  310. package/lib/exercises/math/trigonometry/formulas/trigoAdditionFormulaUsage.d.ts.map +1 -1
  311. package/lib/exercises/math/trigonometry/formulas/trigoAdditionFormulaUsage.js +6 -5
  312. package/lib/exercises/math/trigonometry/triangle/trigonometrySohcahtoaCalcul.js +1 -1
  313. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts +1 -0
  314. package/lib/exercises/utils/geogebra/toolBarConstructor.d.ts.map +1 -1
  315. package/lib/exercises/utils/geogebra/toolBarConstructor.js +2 -0
  316. package/lib/exercises/vea/matrixVEA.d.ts +2 -0
  317. package/lib/exercises/vea/matrixVEA.d.ts.map +1 -0
  318. package/lib/exercises/vea/matrixVEA.js +1 -0
  319. package/lib/geogebra/parsers/geogebraParser.d.ts +3 -0
  320. package/lib/geogebra/parsers/geogebraParser.d.ts.map +1 -1
  321. package/lib/geogebra/parsers/geogebraParser.js +27 -0
  322. package/lib/index.d.ts +286 -23
  323. package/lib/index.d.ts.map +1 -1
  324. package/lib/latexTester.js +2 -0
  325. package/lib/math/geometry/angle.d.ts.map +1 -1
  326. package/lib/math/geometry/angle.js +3 -0
  327. package/lib/math/geometry/point.d.ts.map +1 -1
  328. package/lib/math/geometry/point.js +3 -1
  329. package/lib/math/geometry/segment.d.ts +1 -1
  330. package/lib/math/geometry/segment.d.ts.map +1 -1
  331. package/lib/math/geometry/segment.js +5 -2
  332. package/lib/math/graphs/graph.d.ts +43 -0
  333. package/lib/math/graphs/graph.d.ts.map +1 -0
  334. package/lib/math/graphs/graph.js +391 -0
  335. package/lib/math/matrices/matrix.d.ts +42 -3
  336. package/lib/math/matrices/matrix.d.ts.map +1 -1
  337. package/lib/math/matrices/matrix.js +173 -7
  338. package/lib/math/matrices/parseMatrix.d.ts +3 -0
  339. package/lib/math/matrices/parseMatrix.d.ts.map +1 -0
  340. package/lib/math/matrices/parseMatrix.js +22 -0
  341. package/lib/math/systems/generalSystem.d.ts +2 -0
  342. package/lib/math/systems/generalSystem.d.ts.map +1 -1
  343. package/lib/math/systems/generalSystem.js +5 -0
  344. package/lib/math/utils/geometry/angleBetweenPoints.d.ts +4 -0
  345. package/lib/math/utils/geometry/angleBetweenPoints.d.ts.map +1 -0
  346. package/lib/math/utils/geometry/angleBetweenPoints.js +58 -0
  347. package/lib/math/utils/geometry/angleNWSE.d.ts +3 -0
  348. package/lib/math/utils/geometry/angleNWSE.d.ts.map +1 -0
  349. package/lib/math/utils/geometry/angleNWSE.js +56 -0
  350. package/lib/math/utils/graphs/graphRenderer.d.ts +25 -0
  351. package/lib/math/utils/graphs/graphRenderer.d.ts.map +1 -0
  352. package/lib/math/utils/graphs/graphRenderer.js +123 -0
  353. package/lib/playground.d.ts +6 -1
  354. package/lib/playground.d.ts.map +1 -1
  355. package/lib/playground.js +6 -5
  356. package/lib/tests/singleExo.test.d.ts.map +1 -1
  357. package/lib/tests/singleExo.test.js +2 -2
  358. package/lib/tree/parsers/latexParser.d.ts +1 -1
  359. package/lib/tree/utilities/nodeSimplifier.d.ts +1 -1
  360. package/lib/types/keyIds.d.ts +2 -0
  361. package/lib/types/keyIds.d.ts.map +1 -1
  362. package/lib/utils/arrays/arrayChunks.d.ts +9 -0
  363. package/lib/utils/arrays/arrayChunks.d.ts.map +1 -0
  364. package/lib/utils/arrays/arrayChunks.js +34 -0
  365. package/lib/utils/strings/frenchDays.d.ts +2 -0
  366. package/lib/utils/strings/frenchDays.d.ts.map +1 -0
  367. package/lib/utils/strings/frenchDays.js +9 -0
  368. package/lib/utils/strings/ordinalSuffixed.d.ts +2 -0
  369. package/lib/utils/strings/ordinalSuffixed.d.ts.map +1 -0
  370. package/lib/utils/strings/ordinalSuffixed.js +5 -0
  371. package/package.json +7 -1
@@ -0,0 +1,359 @@
1
+ // import {
2
+ // Exercise,
3
+ // Question,
4
+ // QuestionGenerator,
5
+ // GetHint,
6
+ // GetCorrection,
7
+ // GetInstruction,
8
+ // GetGGBOptions,
9
+ // GetQuestionFromIdentifiers,
10
+ // GeneratorOption,
11
+ // GeneratorOptionTarget,
12
+ // GeneratorOptionType,
13
+ // GGBVEA,
14
+ // GetGGBAnswer,
15
+ // } from "../../../../exercises/exercise.js";
16
+ // import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
17
+ // import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
18
+ // import { Point, PointConstructor } from "../../../../math/geometry/point.js";
19
+ // import { Vector } from "../../../../math/geometry/vector.js";
20
+ // import { randint } from "../../../../math/utils/random/randint.js";
21
+ // import { round } from "../../../../math/utils/round.js";
22
+ // import { PiNode } from "../../../../tree/nodes/numbers/piNode.js";
23
+ // import { add } from "../../../../tree/nodes/operators/addNode.js";
24
+ // import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
25
+ // import { substract } from "../../../../tree/nodes/operators/substractNode.js";
26
+ // import { probaLawFlip } from "../../../../utils/alea/probaLawFlip.js";
27
+ // import { random } from "../../../../utils/alea/random.js";
28
+ export {};
29
+ // const _degreesToRadians = (angleInDegrees: number, precision: number) => {
30
+ // const oneOver180 = 0.00555555555555555;
31
+ // return round(
32
+ // multiply(multiply(angleInDegrees, PiNode), oneOver180).evaluate(),
33
+ // precision,
34
+ // );
35
+ // };
36
+ // const rotateVector = (vec: Vector, angle: number, name: string) => {
37
+ // //x' = cos(t)*x -sin(t)*y
38
+ // //y' = sin(t)*x + cos(t)*y
39
+ // const cos = Math.cos(angle);
40
+ // const sin = Math.sin(angle);
41
+ // return new Vector(
42
+ // name,
43
+ // substract(multiply(cos, vec.x), multiply(sin, vec.y)).evaluate().toTree(),
44
+ // add(multiply(sin, vec.x), multiply(cos, vec.y)).evaluate().toTree(),
45
+ // );
46
+ // };
47
+ // const rotatePoint = (
48
+ // target: Point,
49
+ // angle: number,
50
+ // center: Point,
51
+ // name: string,
52
+ // precision: number | undefined = 2,
53
+ // ) => {
54
+ // const vSrc = createVector(center, target, "vSrc", precision);
55
+ // const vRotated = rotateVector(vSrc, angle, "vRotated");
56
+ // return createPoint(
57
+ // add(center.x, vRotated.x).evaluate(),
58
+ // add(center.y, vRotated.y).evaluate(),
59
+ // name,
60
+ // precision,
61
+ // );
62
+ // };
63
+ // const createVector = (
64
+ // from: Point,
65
+ // to: Point,
66
+ // name: string,
67
+ // precision: number | undefined = 5,
68
+ // ) => {
69
+ // return new Vector(
70
+ // name,
71
+ // round(substract(to.x, from.x).evaluate(), precision).toTree(),
72
+ // round(substract(to.y, from.y).evaluate(), precision).toTree(),
73
+ // );
74
+ // };
75
+ // const createPoint = (
76
+ // x: number,
77
+ // y: number,
78
+ // name: string,
79
+ // precision: number | undefined = 5,
80
+ // ) => {
81
+ // return new Point(name, round(x, precision), round(y, precision));
82
+ // };
83
+ // /************/
84
+ // type Identifiers = {
85
+ // hours: number;
86
+ // minutes: number;
87
+ // };
88
+ // const getHydrated = (identifiers: Identifiers) => {
89
+ // const { hours, minutes } = identifiers;
90
+ // const isExactlyNoon = hours === 12 && minutes === 0;
91
+ // const strAMPM = (() => {
92
+ // if (minutes !== 0) {
93
+ // if (hours < 12) {
94
+ // return "Nous sommes avant midi";
95
+ // } else {
96
+ // return "Nous sommes après midi";
97
+ // }
98
+ // } else {
99
+ // if (hours === 0) {
100
+ // return "Nous sommes avant midi (il n'est pas midi).";
101
+ // } else if (hours === 24) {
102
+ // return "Nous sommes après midi (il n'est pas midi).";
103
+ // } else {
104
+ // return "Nous sommes en pleine journée.";
105
+ // }
106
+ // }
107
+ // })();
108
+ // const duodecHours = hours > 12 ? hours - 12 : hours;
109
+ // const duodecMinutes = minutes / 5;
110
+ // const angleMinutes = (Math.PI / 6.0) * duodecMinutes;
111
+ // const angleHours = 2 * Math.PI * (((hours + minutes / 60) / 12.0) % 1);
112
+ // return {
113
+ // strAMPM,
114
+ // isExactlyNoon,
115
+ // duodecHours,
116
+ // duodecMinutes,
117
+ // angleHours,
118
+ // angleMinutes,
119
+ // };
120
+ // };
121
+ // const getInstruction: GetInstruction<Identifiers> = (identifiers) => {
122
+ // const { hours, minutes } = identifiers;
123
+ // const strMinutes = (() => {
124
+ // if (minutes < 10) {
125
+ // return `0${minutes}`;
126
+ // } else {
127
+ // return `${minutes}`;
128
+ // }
129
+ // })();
130
+ // const strTime = `${hours}h${strMinutes}`;
131
+ // return `Manipuler les aiguilles de l'horloge pour indiquer $${strTime}$.`;
132
+ // };
133
+ // const getGGBAnswer: GetGGBAnswer<Identifiers> = (identifiers) => {
134
+ // // const { triangle, point, segment } = getHydrated(identifiers);
135
+ // const ggbAnswer = [`Ptest = Point({1,4})`];
136
+ // return ggbAnswer;
137
+ // };
138
+ // const getHint: GetHint<Identifiers> = () => {
139
+ // return `L'aiguille des heures est l'aiguille la plus courte.
140
+ // Avant midi, les heures vont de $0$ à $11$. Après midi, les heures vont de $12$ à $23$.
141
+ // Les graduations des minutes vont de $0$ à $55$ (de $5$ en $5$).
142
+ // L'aiguille des heures se déplace continument.
143
+ // Quand il est la demi, l'aiguille des heures est entre les deux marqueurs.
144
+ // Il faut placer l'aiguille des heures `;
145
+ // };
146
+ // const getCorrection: GetCorrection<Identifiers> = (identifiers) => {
147
+ // const { hours, minutes } = identifiers;
148
+ // const { duodecHours, duodecMinutes } = getHydrated(identifiers);
149
+ // const strMinutes = (() => {
150
+ // if (minutes < 10) {
151
+ // return `0${minutes}`;
152
+ // } else {
153
+ // return `${minutes}`;
154
+ // }
155
+ // })();
156
+ // if (minutes !== 0) {
157
+ // if (hours < 12) {
158
+ // return `Nous sommes avant midi.
159
+ // L'aiguille des heures est entre $${duodecHours}$ et $${duodecHours + 1}$.
160
+ // Il est donc $${hours}h...$
161
+ // L'aiguille des minutes est sur la graduation $${duodecMinutes}$.
162
+ // $$
163
+ // ${duodecMinutes} \\times 5 = ${minutes}
164
+ // $$
165
+ // Il est donc $${hours}h${strMinutes}$.
166
+ // `;
167
+ // } else if (hours > 12) {
168
+ // return `Nous sommes après midi.
169
+ // L'aiguille des heures est entre $${duodecHours}$ et $${duodecHours + 1}$.
170
+ // $$
171
+ // 12 + ${duodecHours} = ${hours}
172
+ // $$
173
+ // Il est donc $${hours}h...$
174
+ // L'aiguille des minutes est sur la graduation $${duodecMinutes}$.
175
+ // $$
176
+ // ${duodecMinutes} \\times 5 = ${minutes}
177
+ // $$
178
+ // Il est donc $${hours}h${strMinutes}$.
179
+ // `;
180
+ // } else {
181
+ // return "Il est exactement midi ($12h00$).";
182
+ // }
183
+ // } else {
184
+ // if (hours === 0) {
185
+ // return `Il est exactement minuit ($0h00$).`;
186
+ // } else if (hours === 24) {
187
+ // return `Il est exactement minuit ($0h00$) (on passe dans le jour suivant donc on n'écrit pas "$24h00$").`;
188
+ // } else {
189
+ // return `Il est exactement $${hours}h00$.`;
190
+ // }
191
+ // }
192
+ // };
193
+ // const getStudentGGBOptions: GetGGBOptions<Identifiers> = () => {
194
+ // const pointOrigin = new Point("O", 0, 0);
195
+ // //ticks
196
+ // const arrPointTickTop = [
197
+ // PointConstructor.fromCoords([0, 0.8], "tickTopA"),
198
+ // PointConstructor.fromCoords([0, 1], "tickTopB"),
199
+ // ];
200
+ // const arrArrPointTick = [...Array(12).keys()].map((i) => {
201
+ // const angle = (i * Math.PI) / 6;
202
+ // return arrPointTickTop.map((point, j) =>
203
+ // rotatePoint(point, angle, pointOrigin, `tick${i}${j === 0 ? "A" : "B"}`),
204
+ // );
205
+ // });
206
+ // const studentGGB = new GeogebraConstructor({
207
+ // commands: [
208
+ // `C = Circle((0,0), 1)`,
209
+ // `SetFixed(C, true, false)`,
210
+ // `SetLineThickness(C, 1)`,
211
+ // //ticks
212
+ // ...arrArrPointTick.flatMap(([pointA, pointB], i) => [
213
+ // `segTick${i} = Segment(${pointA.toMathString()}, ${pointB.toMathString()})`,
214
+ // `SetLineThickness(segTick${i}, ${i === 0 ? "6" : "2"})`,
215
+ // `SetFixed(segTick${i}, true, false)`,
216
+ // ]),
217
+ // //needles
218
+ // ...[
219
+ // `Chours = Circle((0,0), 0.5)`,
220
+ // `SetFixed(Chours, true, false)`,
221
+ // `SetVisibleInView(Chours, 1, false)`,
222
+ // `Bhours = Point(Chours)`,
223
+ // `SetPointStyle(Bhours, 2)`,
224
+ // `segNeedleHours = Segment(Center(Chours), Bhours)`,
225
+ // `SetLineThickness(segNeedleHours, 20)`,
226
+ // ],
227
+ // ...[
228
+ // `Cminutes = Circle((0,0), 0.75)`,
229
+ // `SetFixed(Cminutes, true, false)`,
230
+ // `SetVisibleInView(Cminutes, 1, false)`,
231
+ // `Bminutes = Point(Cminutes)`,
232
+ // `SetPointStyle(Bminutes, 2)`,
233
+ // `segNeedleMinutes = Segment(Center(Cminutes), Bminutes)`,
234
+ // `SetLineThickness(segNeedleMinutes, 10)`,
235
+ // ],
236
+ // ],
237
+ // hideAxes: true,
238
+ // hideGrid: true,
239
+ // forbidShiftDragZoom: true,
240
+ // interactiveObjects: ["Bhours", "Bminutes"],
241
+ // });
242
+ // return studentGGB.getOptions({
243
+ // coords: [-1.4, 1.4, -1.4, 1.4],
244
+ // });
245
+ // };
246
+ // const isGGBAnswerValid: GGBVEA<Identifiers> = (
247
+ // ggbAns,
248
+ // { ggbAnswer: _ggbAnswer, ...identifiers },
249
+ // ) => {
250
+ // return false;
251
+ // };
252
+ // const createRandomIdentifiers = () => {
253
+ // const amPmType = probaLawFlip([
254
+ // ["AM", 0.4],
255
+ // ["midi", 0.1],
256
+ // ["PM", 0.4],
257
+ // ["minuit", 0.1],
258
+ // ]);
259
+ // const [hours, minutes] = (() => {
260
+ // switch (amPmType) {
261
+ // case "AM": {
262
+ // const hours = randint(0, 12);
263
+ // const minutes = randint(1, 12) * 5;
264
+ // return [hours, minutes];
265
+ // }
266
+ // case "midi": {
267
+ // return [12, 0];
268
+ // }
269
+ // case "PM": {
270
+ // const hours = randint(12, 23);
271
+ // const minutes = randint(1, 12) * 5;
272
+ // return [hours, minutes];
273
+ // }
274
+ // case "minuit": {
275
+ // return random([
276
+ // [0, 0],
277
+ // [24, 0],
278
+ // ]);
279
+ // }
280
+ // default:
281
+ // throw new Error("Unsupported typeAMPM: " + amPmType);
282
+ // }
283
+ // })();
284
+ // const identifiers: Identifiers = {
285
+ // hours,
286
+ // minutes,
287
+ // };
288
+ // return identifiers;
289
+ // };
290
+ // const getClockWritingByManipulatingNeedlesQuestion: QuestionGenerator<
291
+ // Identifiers,
292
+ // Options
293
+ // > = (optsIn) => {
294
+ // const opts: Options = optsIn ?? arrayedOptsDefault;
295
+ // const identifiers = createRandomIdentifiers();
296
+ // return getQuestionFromIdentifiers(identifiers, opts);
297
+ // };
298
+ // const getQuestionFromIdentifiers: GetQuestionFromIdentifiers<
299
+ // Identifiers,
300
+ // Options
301
+ // > = (identifiers) => {
302
+ // const question: Question<Identifiers, Options> = {
303
+ // ggbAnswer: getGGBAnswer(identifiers),
304
+ // instruction: getInstruction(identifiers),
305
+ // keys: [],
306
+ // answerFormat: "tex",
307
+ // identifiers,
308
+ // hint: getHint(identifiers),
309
+ // correction: getCorrection(identifiers),
310
+ // studentGgbOptions: getStudentGGBOptions(identifiers),
311
+ // };
312
+ // return question;
313
+ // };
314
+ // type Options = {
315
+ // acceptedInputType: string[];
316
+ // };
317
+ // type ArrayedOptions = {
318
+ // readonly [K in keyof Options]: Options[K] extends unknown[]
319
+ // ? Options[K]
320
+ // : Options[K][];
321
+ // };
322
+ // const arrayedOptsDefault: ArrayedOptions = {
323
+ // acceptedInputType: ["réaliste"],
324
+ // };
325
+ // const options: GeneratorOption[] = [
326
+ // {
327
+ // id: "acceptedInputType",
328
+ // label: "Position acceptée pour l'aiguille des heures",
329
+ // target: GeneratorOptionTarget.generation,
330
+ // type: GeneratorOptionType.multiselect,
331
+ // values: ["réaliste", "simpliste"],
332
+ // defaultValue: arrayedOptsDefault.acceptedInputType,
333
+ // },
334
+ // ];
335
+ // export const clockWritingByManipulatingNeedles: Exercise<Identifiers, Options> =
336
+ // {
337
+ // id: "clockWritingByManipulatingNeedles",
338
+ // label: "Inscrire l'heure sur une horloge",
339
+ // isSingleStep: true,
340
+ // generator: (nb, opts) =>
341
+ // getDistinctQuestions(
342
+ // () => getClockWritingByManipulatingNeedlesQuestion(opts),
343
+ // nb,
344
+ // ),
345
+ // options,
346
+ // qcmTimer: 60,
347
+ // freeTimer: 60,
348
+ // getGGBAnswer,
349
+ // isGGBAnswerValid,
350
+ // subject: "Mathématiques",
351
+ // getHint,
352
+ // getCorrection,
353
+ // hasHintAndCorrection: true,
354
+ // getInstruction,
355
+ // getStudentGGBOptions,
356
+ // hasGeogebra: true,
357
+ // getQuestionFromIdentifiers,
358
+ // answerType: "GGB",
359
+ // };
@@ -0,0 +1,16 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ type DateTime = {
3
+ day: number;
4
+ hours: number;
5
+ minutes: number;
6
+ };
7
+ type Identifiers = {
8
+ dateTimeStart: DateTime;
9
+ dateTimeDuration: DateTime;
10
+ };
11
+ type Options = {
12
+ hoursMinutesType: string;
13
+ };
14
+ export declare const dateTimeOperationAdd: Exercise<Identifiers, Options>;
15
+ export {};
16
+ //# sourceMappingURL=dateTimeOperationAdd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTimeOperationAdd.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/conversion/clock/dateTimeOperationAdd.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAmBT,MAAM,6BAA6B,CAAC;AASrC,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAsFF,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,QAAQ,CAAC;IACxB,gBAAgB,EAAE,QAAQ,CAAC;CAC5B,CAAC;AAyQF,KAAK,OAAO,GAAG;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAgBF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAkB/D,CAAC"}
@@ -0,0 +1,319 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, GeneratorOptionTarget, GeneratorOptionType, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { randint } from "../../../../math/utils/random/randint.js";
4
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
5
+ import { zip } from "../../../../utils/arrays/arrayZip.js";
6
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
7
+ import { mdTable } from "../../../../utils/markdown/mdTable.js";
8
+ const arrTexDay = [
9
+ "lundi",
10
+ "mardi",
11
+ "mercredi",
12
+ "jeudi",
13
+ "vendredi",
14
+ "samedi",
15
+ "dimanche",
16
+ ].map((str) => `\\text{${str}}`);
17
+ const createStrDateTime = (dateTime) => {
18
+ const { day, hours, minutes } = dateTime;
19
+ const strDay = arrTexDay[day % 7];
20
+ const strHours = `${hours}`;
21
+ const strMinutes = (() => {
22
+ if (minutes < 10) {
23
+ return `0${minutes}`;
24
+ }
25
+ else {
26
+ return `${minutes}`;
27
+ }
28
+ })();
29
+ return `${strDay},${strHours}h${strMinutes}`;
30
+ };
31
+ const createStrDuration = (dateTime) => {
32
+ const { day, hours, minutes } = dateTime;
33
+ const strDay = day > 0 ? `${day}j` : ``;
34
+ const strHours = (() => {
35
+ if (hours < 10) {
36
+ return `0${hours}h`;
37
+ }
38
+ else {
39
+ return `${hours}h`;
40
+ }
41
+ })();
42
+ const strMinutes = (() => {
43
+ if (minutes < 10) {
44
+ return `0${minutes}min`;
45
+ }
46
+ else {
47
+ return `${minutes}min`;
48
+ }
49
+ })();
50
+ return `${strDay}${strHours}${strMinutes}`;
51
+ };
52
+ const carryAddMod = (v1, v2, mod) => {
53
+ const vRaw = v1 + v2;
54
+ const vRefined = vRaw % mod;
55
+ const carry = (vRaw - vRefined) / mod;
56
+ return [carry, vRefined];
57
+ };
58
+ const dateTimeAdd = (dateTimeStart, dateTimeDuration) => {
59
+ const [carryHours, minutes] = carryAddMod(dateTimeStart.minutes, dateTimeDuration.minutes, 60);
60
+ const [carryDays, hours] = carryAddMod(dateTimeStart.hours, dateTimeDuration.hours + carryHours, 24);
61
+ const [carryWeeks, day] = carryAddMod(dateTimeStart.day, dateTimeDuration.day + carryDays, 7);
62
+ const dateTimeResult = {
63
+ day,
64
+ hours,
65
+ minutes,
66
+ };
67
+ return {
68
+ carryHours,
69
+ carryDays,
70
+ carryWeeks,
71
+ dateTimeResult,
72
+ };
73
+ };
74
+ const getHydrated = (identifiers) => {
75
+ const { dateTimeStart, dateTimeDuration } = identifiers;
76
+ const { carryHours, carryDays, carryWeeks, dateTimeResult: dateTimeEnd, } = dateTimeAdd(dateTimeStart, dateTimeDuration);
77
+ const [strDateTimeStart, strDateTimeEnd] = [dateTimeStart, dateTimeEnd].map(createStrDateTime);
78
+ const strDateTimeDuration = createStrDuration(dateTimeDuration);
79
+ return {
80
+ carryHours,
81
+ carryDays,
82
+ carryWeeks,
83
+ dateTimeEnd,
84
+ strDateTimeStart,
85
+ strDateTimeEnd,
86
+ strDateTimeDuration,
87
+ };
88
+ };
89
+ const getInstruction = (identifiers) => {
90
+ const { strDateTimeStart, strDateTimeDuration } = getHydrated(identifiers);
91
+ return `La date de début d'un évènement est : $${strDateTimeStart}$. Sa durée est : $${strDateTimeDuration}$.
92
+ Quelle sera la date de fin ?
93
+
94
+ *La réponse est attendue sous le format : {jour},{heures}h{minutes}.*`;
95
+ };
96
+ const getAnswer = (identifiers) => {
97
+ const { strDateTimeEnd } = getHydrated(identifiers);
98
+ return strDateTimeEnd;
99
+ };
100
+ const getHint = (identifiers) => {
101
+ const { dateTimeStart, dateTimeDuration } = identifiers;
102
+ return `Une heure est composée de $60$ minutes. Un jour est composé de $24$ heures.
103
+
104
+ Si on pose $0 = lundi$, $1 = mardi$, $2 = mercredi$, $3 = jeudi$, $4 = vendredi$, $5 = samedi$, $6 = dimanche$.
105
+
106
+ Tu peux poser l'addition :
107
+
108
+ ${mdTable([
109
+ ["\\text{}", "\\text{j}", "\\text{h}", "\\text{min}"],
110
+ [
111
+ "\\text{début}",
112
+ dateTimeStart.day,
113
+ dateTimeStart.hours,
114
+ dateTimeStart.minutes,
115
+ ],
116
+ [
117
+ "\\text{durée}",
118
+ dateTimeDuration.day,
119
+ dateTimeDuration.hours,
120
+ dateTimeDuration.minutes,
121
+ ],
122
+ ["\\text{-----}", "\\text{------}", "\\text{--}", "\\text{--}"],
123
+ ["\\text{fin}", "\\text{}", "\\text{}", "\\text{}"],
124
+ ], true)}
125
+
126
+ et compter les retenues toutes les $60$ minutes excédentaires,
127
+ puis compter les retenues toutes les $24$ heures excédentaires,
128
+ puis compter les retenues tous les $7$ jours excédentaires.
129
+ `;
130
+ };
131
+ const getCorrection = (identifiers) => {
132
+ const { dateTimeStart, dateTimeDuration } = identifiers;
133
+ const { dateTimeEnd, carryDays, carryHours, carryWeeks } = getHydrated(identifiers);
134
+ return `Une heure est composée de $60$ minutes. Un jour est composé de $24$ heures.
135
+
136
+ Si on pose $0 = lundi$, $1 = mardi$, $2 = mercredi$, $3 = jeudi$, $4 = vendredi$, $5 = samedi$, $6 = dimanche$.
137
+
138
+ On pose l'addition :
139
+
140
+ ${mdTable([
141
+ ["\\text{}", "\\text{sem}", "\\text{j}", "\\text{h}", "\\text{min}"],
142
+ ["retenue", carryWeeks, carryDays, carryHours, "\\text{}"],
143
+ [
144
+ "\\text{début}",
145
+ "\\text{}",
146
+ dateTimeStart.day,
147
+ dateTimeStart.hours,
148
+ dateTimeStart.minutes,
149
+ ],
150
+ [
151
+ "\\text{durée}",
152
+ "\\text{}",
153
+ dateTimeDuration.day,
154
+ dateTimeDuration.hours,
155
+ dateTimeDuration.minutes,
156
+ ],
157
+ [
158
+ "\\text{-----}",
159
+ "\\text{--}",
160
+ "\\text{------}",
161
+ "\\text{--}",
162
+ "\\text{--}",
163
+ ],
164
+ [
165
+ "\\text{fin}",
166
+ carryWeeks,
167
+ dateTimeEnd.day,
168
+ dateTimeEnd.hours,
169
+ dateTimeEnd.minutes,
170
+ ],
171
+ ], true)}
172
+
173
+ L'évènement s'arrête donc le $${getAnswer(identifiers)}$.`;
174
+ };
175
+ const getPropositions = (n, { answer, ...identifiers }) => {
176
+ const propositions = [];
177
+ addValidProp(propositions, answer);
178
+ //hour: around, minutes: around
179
+ propWhile(propositions, n, () => {
180
+ const [hoursWrong, minutesWrong] = (() => {
181
+ const isWrongifyH = coinFlip();
182
+ const isWrongifyM = !isWrongifyH || coinFlip();
183
+ const hoursWrong = (() => {
184
+ if (isWrongifyH) {
185
+ return (identifiers.dateTimeDuration.hours +
186
+ randint(-identifiers.dateTimeDuration.hours + 1, 10));
187
+ }
188
+ else {
189
+ return identifiers.dateTimeDuration.hours;
190
+ }
191
+ })();
192
+ const minutesWrong = (() => {
193
+ if (isWrongifyM) {
194
+ const uM = identifiers.dateTimeDuration.minutes % 10;
195
+ return uM + randint(0, 6) * 10;
196
+ }
197
+ else {
198
+ return identifiers.dateTimeDuration.minutes;
199
+ }
200
+ })();
201
+ return [hoursWrong, minutesWrong];
202
+ })();
203
+ const identifiersWrong = {
204
+ dateTimeStart: identifiers.dateTimeStart,
205
+ dateTimeDuration: {
206
+ day: identifiers.dateTimeDuration.day,
207
+ hours: hoursWrong,
208
+ minutes: minutesWrong,
209
+ },
210
+ };
211
+ tryToAddWrongProp(propositions, getAnswer(identifiersWrong));
212
+ });
213
+ return shuffleProps(propositions, n);
214
+ };
215
+ const getKeys = () => {
216
+ return [
217
+ "h",
218
+ "comma",
219
+ ...arrTexDay.map((tex) => {
220
+ return {
221
+ id: "custom",
222
+ label: tex,
223
+ labelType: "tex",
224
+ mathfieldInstructions: {
225
+ method: "write",
226
+ content: tex,
227
+ },
228
+ };
229
+ }),
230
+ ];
231
+ };
232
+ const isAnswerValid = (ans, { answer, ...identifiers }) => {
233
+ try {
234
+ if (!ans.includes(",")) {
235
+ return false;
236
+ }
237
+ if (!ans.includes("h")) {
238
+ return false;
239
+ }
240
+ const [strDayAns, strTimeAns] = ans.split(",");
241
+ const [hoursAns, minutesAns] = strTimeAns
242
+ .split("h")
243
+ .map((str) => parseInt(str));
244
+ const { dateTimeEnd } = getHydrated(identifiers);
245
+ const { day: dayAnswer, hours: hoursAnswer, minutes: minutesAnswer, } = dateTimeEnd;
246
+ const strDayAnswer = arrTexDay[dayAnswer % 7];
247
+ return zip([strDayAns, hoursAns, minutesAns], [strDayAnswer, hoursAnswer, minutesAnswer]).every(([ans, answer]) => ans === answer);
248
+ }
249
+ catch (err) {
250
+ return handleVEAError(err);
251
+ }
252
+ };
253
+ const createRandomIdentifiers = (opts) => {
254
+ const { hoursMinutesType } = opts;
255
+ const isZeroMinutes = hoursMinutesType === "heures uniquement";
256
+ const dateTimeStart = {
257
+ day: randint(0, 7),
258
+ hours: randint(0, 7),
259
+ minutes: isZeroMinutes ? 0 : randint(0, 7),
260
+ };
261
+ const dateTimeDuration = {
262
+ day: randint(0, 4),
263
+ hours: randint(0, 24),
264
+ minutes: isZeroMinutes ? 0 : randint(0, 12) * 5,
265
+ };
266
+ const identifiers = {
267
+ dateTimeStart,
268
+ dateTimeDuration,
269
+ };
270
+ return identifiers;
271
+ };
272
+ const getDateTimeOperationAddQuestion = (optsIn) => {
273
+ const opts = optsIn ?? optsDefault;
274
+ const identifiers = createRandomIdentifiers(opts);
275
+ return getQuestionFromIdentifiers(identifiers);
276
+ };
277
+ const getQuestionFromIdentifiers = (identifiers) => {
278
+ const question = {
279
+ answer: getAnswer(identifiers),
280
+ instruction: getInstruction(identifiers),
281
+ keys: getKeys(identifiers),
282
+ answerFormat: "tex",
283
+ identifiers,
284
+ hint: getHint(identifiers),
285
+ correction: getCorrection(identifiers),
286
+ };
287
+ return question;
288
+ };
289
+ const optsDefault = {
290
+ hoursMinutesType: "heures et minutes",
291
+ };
292
+ const options = [
293
+ {
294
+ id: "hoursMinutesType",
295
+ label: "Méthode de résolution",
296
+ target: GeneratorOptionTarget.generation,
297
+ type: GeneratorOptionType.select,
298
+ values: ["heures et minutes", "heures uniquement"],
299
+ defaultValue: optsDefault.hoursMinutesType,
300
+ },
301
+ ];
302
+ export const dateTimeOperationAdd = {
303
+ id: "dateTimeOperationAdd",
304
+ label: "Opérations sur les heures : addition (sur plusieurs jours)",
305
+ isSingleStep: true,
306
+ generator: (nb, opts) => getDistinctQuestions(() => getDateTimeOperationAddQuestion(opts), nb),
307
+ options,
308
+ qcmTimer: 60,
309
+ freeTimer: 60,
310
+ getPropositions,
311
+ isAnswerValid,
312
+ subject: "Mathématiques",
313
+ getHint,
314
+ getCorrection,
315
+ hasHintAndCorrection: true,
316
+ getInstruction,
317
+ getAnswer,
318
+ getQuestionFromIdentifiers,
319
+ };