math-exercises 1.3.30 → 1.3.31

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 (328) hide show
  1. package/README.md +73 -73
  2. package/lib/exercises/calcul/addAndSub.d.ts +6 -6
  3. package/lib/exercises/calcul/addAndSub.js +41 -41
  4. package/lib/exercises/calcul/addAndSubWithoutRelatives.d.ts +6 -6
  5. package/lib/exercises/calcul/addAndSubWithoutRelatives.js +51 -51
  6. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.d.ts +3 -3
  7. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.js +37 -37
  8. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.d.ts +3 -3
  9. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.js +34 -34
  10. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.d.ts +3 -3
  11. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.js +34 -34
  12. package/lib/exercises/calcul/fractions/fractionToPercentToDecimal.d.ts +3 -3
  13. package/lib/exercises/calcul/fractions/fractionToPercentToDecimal.js +69 -69
  14. package/lib/exercises/calcul/fractions/fractionsDivision.d.ts +3 -3
  15. package/lib/exercises/calcul/fractions/fractionsDivision.js +31 -31
  16. package/lib/exercises/calcul/fractions/fractionsProduct.d.ts +3 -3
  17. package/lib/exercises/calcul/fractions/fractionsProduct.js +30 -30
  18. package/lib/exercises/calcul/fractions/fractionsSum.d.ts +3 -3
  19. package/lib/exercises/calcul/fractions/fractionsSum.js +30 -30
  20. package/lib/exercises/calcul/fractions/simplifyFraction.d.ts +3 -3
  21. package/lib/exercises/calcul/fractions/simplifyFraction.js +26 -26
  22. package/lib/exercises/calcul/mentalCaluls.ts/mentalAddAndSub.d.ts +3 -3
  23. package/lib/exercises/calcul/mentalCaluls.ts/mentalAddAndSub.js +46 -46
  24. package/lib/exercises/calcul/mentalCaluls.ts/mentalDivisions.d.ts +3 -3
  25. package/lib/exercises/calcul/mentalCaluls.ts/mentalDivisions.js +64 -64
  26. package/lib/exercises/calcul/mentalCaluls.ts/mentalMultiplications.d.ts +3 -3
  27. package/lib/exercises/calcul/mentalCaluls.ts/mentalMultiplications.js +51 -51
  28. package/lib/exercises/calcul/mentalCaluls.ts/mentalPercentage.d.ts +3 -3
  29. package/lib/exercises/calcul/mentalCaluls.ts/mentalPercentage.js +67 -67
  30. package/lib/exercises/calcul/operations/operationsPriorities.d.ts +10 -10
  31. package/lib/exercises/calcul/operations/operationsPriorities.js +100 -100
  32. package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.d.ts +10 -10
  33. package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.js +181 -181
  34. package/lib/exercises/calcul/rounding/rounding.d.ts +19 -19
  35. package/lib/exercises/calcul/rounding/rounding.js +87 -87
  36. package/lib/exercises/calculLitteral/distributivity/allIdentities.d.ts +3 -3
  37. package/lib/exercises/calculLitteral/distributivity/allIdentities.js +27 -27
  38. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.d.ts +3 -3
  39. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +32 -32
  40. package/lib/exercises/calculLitteral/distributivity/firstIdentity.d.ts +3 -3
  41. package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +33 -33
  42. package/lib/exercises/calculLitteral/distributivity/secondIdentity.d.ts +3 -3
  43. package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +34 -34
  44. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.d.ts +3 -3
  45. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +34 -34
  46. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.d.ts +3 -3
  47. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +33 -33
  48. package/lib/exercises/calculLitteral/equation/equationSimpleSquare.d.ts +3 -3
  49. package/lib/exercises/calculLitteral/equation/equationSimpleSquare.js +47 -47
  50. package/lib/exercises/calculLitteral/equation/equationType1Exercise.d.ts +6 -6
  51. package/lib/exercises/calculLitteral/equation/equationType1Exercise.js +39 -39
  52. package/lib/exercises/calculLitteral/equation/equationType2Exercise.d.ts +6 -6
  53. package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +42 -42
  54. package/lib/exercises/calculLitteral/equation/equationType3Exercise.d.ts +6 -6
  55. package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +43 -43
  56. package/lib/exercises/calculLitteral/equation/equationType4Exercise.d.ts +6 -6
  57. package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +45 -45
  58. package/lib/exercises/calculLitteral/equation/firstDegreeEquation.d.ts +3 -3
  59. package/lib/exercises/calculLitteral/equation/firstDegreeEquation.js +30 -30
  60. package/lib/exercises/calculLitteral/equation/firstDegreeGeneralEquation.d.ts +3 -3
  61. package/lib/exercises/calculLitteral/equation/firstDegreeGeneralEquation.js +32 -32
  62. package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.d.ts +3 -3
  63. package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.js +34 -34
  64. package/lib/exercises/calculLitteral/factorisation/factoIdRmq2.d.ts +3 -3
  65. package/lib/exercises/calculLitteral/factorisation/factoIdRmq2.js +35 -35
  66. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.d.ts +3 -3
  67. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.js +34 -34
  68. package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.d.ts +6 -6
  69. package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.js +40 -40
  70. package/lib/exercises/conversion/aeraConversion.d.ts +3 -3
  71. package/lib/exercises/conversion/aeraConversion.d.ts.map +1 -1
  72. package/lib/exercises/conversion/aeraConversion.js +32 -30
  73. package/lib/exercises/conversion/capacityConversion.d.ts +3 -3
  74. package/lib/exercises/conversion/capacityConversion.js +30 -30
  75. package/lib/exercises/conversion/lengthConversion.d.ts +3 -3
  76. package/lib/exercises/conversion/lengthConversion.js +30 -30
  77. package/lib/exercises/conversion/massConversion.d.ts +3 -3
  78. package/lib/exercises/conversion/massConversion.js +30 -30
  79. package/lib/exercises/conversion/volumeCapacityConversion.d.ts +3 -3
  80. package/lib/exercises/conversion/volumeCapacityConversion.d.ts.map +1 -1
  81. package/lib/exercises/conversion/volumeCapacityConversion.js +47 -45
  82. package/lib/exercises/conversion/volumeConversion.d.ts +3 -3
  83. package/lib/exercises/conversion/volumeConversion.d.ts.map +1 -1
  84. package/lib/exercises/conversion/volumeConversion.js +32 -30
  85. package/lib/exercises/derivation/derivative/constanteDerivative.d.ts +3 -3
  86. package/lib/exercises/derivation/derivative/constanteDerivative.js +27 -27
  87. package/lib/exercises/derivation/derivative/firstDegreeDerivative.d.ts +3 -3
  88. package/lib/exercises/derivation/derivative/firstDegreeDerivative.js +29 -29
  89. package/lib/exercises/derivation/derivative/inverseFunctionDerivative.d.ts +3 -3
  90. package/lib/exercises/derivation/derivative/inverseFunctionDerivative.js +27 -27
  91. package/lib/exercises/derivation/derivative/powerFunctionDerivative.d.ts +3 -3
  92. package/lib/exercises/derivation/derivative/powerFunctionDerivative.js +35 -35
  93. package/lib/exercises/derivation/derivative/rootFunctionDerivative.d.ts +3 -3
  94. package/lib/exercises/derivation/derivative/rootFunctionDerivative.js +40 -40
  95. package/lib/exercises/derivation/derivative/secondDegreeDerivative.d.ts +3 -3
  96. package/lib/exercises/derivation/derivative/secondDegreeDerivative.js +30 -30
  97. package/lib/exercises/derivation/derivative/thirdDegreeDerivative.d.ts +3 -3
  98. package/lib/exercises/derivation/derivative/thirdDegreeDerivative.js +33 -33
  99. package/lib/exercises/derivation/derivative/usualderivative.d.ts +3 -3
  100. package/lib/exercises/derivation/derivative/usualderivative.js +36 -36
  101. package/lib/exercises/exercise.d.ts +21 -20
  102. package/lib/exercises/exercise.d.ts.map +1 -1
  103. package/lib/exercises/exercise.js +7 -7
  104. package/lib/exercises/exercises.d.ts +1 -1
  105. package/lib/exercises/exercises.js +198 -198
  106. package/lib/exercises/geometry/cartesian/derivativeNumberReading.d.ts +3 -3
  107. package/lib/exercises/geometry/cartesian/derivativeNumberReading.js +51 -51
  108. package/lib/exercises/geometry/cartesian/derivativeNumberReading2.js +91 -91
  109. package/lib/exercises/geometry/cartesian/leadingCoefficient.d.ts +3 -3
  110. package/lib/exercises/geometry/cartesian/leadingCoefficient.js +60 -60
  111. package/lib/exercises/geometry/cartesian/midpoint.d.ts +3 -3
  112. package/lib/exercises/geometry/cartesian/midpoint.js +31 -31
  113. package/lib/exercises/geometry/vectors/scalarProductViaCoords.d.ts +3 -3
  114. package/lib/exercises/geometry/vectors/scalarProductViaCoords.js +30 -30
  115. package/lib/exercises/geometry/vectors/scalarProductViaNorms.js +27 -27
  116. package/lib/exercises/percent/applyPercent.d.ts +3 -3
  117. package/lib/exercises/percent/applyPercent.js +41 -41
  118. package/lib/exercises/percent/averageEvolutionRate.d.ts +3 -3
  119. package/lib/exercises/percent/averageEvolutionRate.js +30 -30
  120. package/lib/exercises/percent/globalPercent.d.ts +3 -3
  121. package/lib/exercises/percent/globalPercent.js +44 -44
  122. package/lib/exercises/percent/reciprocalPercentage.d.ts +3 -3
  123. package/lib/exercises/percent/reciprocalPercentage.js +32 -32
  124. package/lib/exercises/powers/powersDivision.d.ts +7 -7
  125. package/lib/exercises/powers/powersDivision.js +46 -46
  126. package/lib/exercises/powers/powersOfTenToDecimal.d.ts +6 -6
  127. package/lib/exercises/powers/powersOfTenToDecimal.js +34 -34
  128. package/lib/exercises/powers/powersPower.d.ts +7 -7
  129. package/lib/exercises/powers/powersPower.js +45 -45
  130. package/lib/exercises/powers/powersProduct.d.ts +7 -7
  131. package/lib/exercises/powers/powersProduct.js +46 -46
  132. package/lib/exercises/powers/scientificToDecimal.d.ts +6 -6
  133. package/lib/exercises/powers/scientificToDecimal.js +39 -39
  134. package/lib/exercises/proba/conditionalProbability.d.ts +3 -3
  135. package/lib/exercises/proba/conditionalProbability.js +74 -74
  136. package/lib/exercises/proba/marginalAndConditionalFrequency.d.ts +3 -3
  137. package/lib/exercises/proba/marginalAndConditionalFrequency.js +81 -81
  138. package/lib/exercises/proba/probabilityTree.d.ts +3 -3
  139. package/lib/exercises/proba/probabilityTree.d.ts.map +1 -1
  140. package/lib/exercises/proba/probabilityTree.js +105 -100
  141. package/lib/exercises/sequences/arithmetic/arithmeticExplicitFormulaUsage.d.ts +3 -3
  142. package/lib/exercises/sequences/arithmetic/arithmeticExplicitFormulaUsage.js +31 -31
  143. package/lib/exercises/sequences/arithmetic/arithmeticFindExplicitFormula.d.ts +3 -3
  144. package/lib/exercises/sequences/arithmetic/arithmeticFindExplicitFormula.js +31 -31
  145. package/lib/exercises/sequences/arithmetic/arithmeticFindReason.d.ts +3 -3
  146. package/lib/exercises/sequences/arithmetic/arithmeticFindReason.js +31 -31
  147. package/lib/exercises/sequences/arithmetic/arithmeticReasonUsage.d.ts +3 -3
  148. package/lib/exercises/sequences/arithmetic/arithmeticReasonUsage.js +30 -30
  149. package/lib/exercises/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.d.ts +3 -3
  150. package/lib/exercises/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.js +30 -30
  151. package/lib/exercises/sequences/arithmetic/arithmeticThresholdFind.d.ts +3 -3
  152. package/lib/exercises/sequences/arithmetic/arithmeticThresholdFind.js +40 -40
  153. package/lib/exercises/sequences/geometric/geometricExplicitFormulaUsage.d.ts +3 -3
  154. package/lib/exercises/sequences/geometric/geometricExplicitFormulaUsage.js +36 -36
  155. package/lib/exercises/sequences/geometric/geometricFindExplicitFormula.d.ts +3 -3
  156. package/lib/exercises/sequences/geometric/geometricFindExplicitFormula.js +35 -35
  157. package/lib/exercises/sequences/geometric/geometricFindReason.d.ts +3 -3
  158. package/lib/exercises/sequences/geometric/geometricFindReason.js +31 -31
  159. package/lib/exercises/sequences/geometric/geometricReasonUsage.d.ts +3 -3
  160. package/lib/exercises/sequences/geometric/geometricReasonUsage.js +30 -30
  161. package/lib/exercises/sequences/geometric/geometricRecurrenceFormulaUsage.d.ts +7 -7
  162. package/lib/exercises/sequences/geometric/geometricRecurrenceFormulaUsage.js +30 -30
  163. package/lib/exercises/squareRoots/simpifySquareRoot.d.ts +3 -3
  164. package/lib/exercises/squareRoots/simpifySquareRoot.js +29 -29
  165. package/lib/exercises/trigonometry/mainRemarkableValues.d.ts +3 -3
  166. package/lib/exercises/trigonometry/mainRemarkableValues.js +30 -30
  167. package/lib/exercises/trigonometry/remarkableValues.d.ts +3 -3
  168. package/lib/exercises/trigonometry/remarkableValues.js +30 -30
  169. package/lib/exercises/utils/getDistinctQuestions.d.ts +3 -3
  170. package/lib/exercises/utils/getDistinctQuestions.js +28 -28
  171. package/lib/index.d.ts +2 -2
  172. package/lib/index.js +6 -6
  173. package/lib/math/geometry/droite.d.ts +19 -19
  174. package/lib/math/geometry/droite.js +61 -61
  175. package/lib/math/geometry/point.d.ts +25 -25
  176. package/lib/math/geometry/point.js +40 -40
  177. package/lib/math/geometry/vector.d.ts +15 -15
  178. package/lib/math/geometry/vector.js +31 -31
  179. package/lib/math/numbers/decimals/decimal.d.ts +24 -24
  180. package/lib/math/numbers/decimals/decimal.js +140 -140
  181. package/lib/math/numbers/epsilon.d.ts +1 -1
  182. package/lib/math/numbers/epsilon.js +10 -10
  183. package/lib/math/numbers/integer/integer.d.ts +14 -14
  184. package/lib/math/numbers/integer/integer.js +68 -68
  185. package/lib/math/numbers/integer/power.d.ts +13 -13
  186. package/lib/math/numbers/integer/power.js +52 -52
  187. package/lib/math/numbers/nombre.d.ts +13 -13
  188. package/lib/math/numbers/nombre.js +10 -10
  189. package/lib/math/numbers/rationals/rational.d.ts +25 -25
  190. package/lib/math/numbers/rationals/rational.js +113 -113
  191. package/lib/math/numbers/reals/real.d.ts +9 -9
  192. package/lib/math/numbers/reals/real.js +16 -16
  193. package/lib/math/numbers/reals/squareRoot.d.ts +18 -18
  194. package/lib/math/numbers/reals/squareRoot.js +63 -63
  195. package/lib/math/polynomials/affine.d.ts +15 -15
  196. package/lib/math/polynomials/affine.js +42 -42
  197. package/lib/math/polynomials/polynomial.d.ts +25 -25
  198. package/lib/math/polynomials/polynomial.js +131 -131
  199. package/lib/math/sequences/arithmeticSequence.js +1 -1
  200. package/lib/math/sequences/geometricSequence.d.ts +3 -3
  201. package/lib/math/sequences/geometricSequence.js +8 -8
  202. package/lib/math/sequences/sequence.d.ts +22 -22
  203. package/lib/math/sequences/sequence.js +21 -21
  204. package/lib/math/sets/discreteSet.d.ts +10 -10
  205. package/lib/math/sets/discreteSet.js +28 -28
  206. package/lib/math/sets/emptySet.js +6 -6
  207. package/lib/math/sets/intervals/intervals.d.ts +26 -26
  208. package/lib/math/sets/intervals/intervals.js +104 -104
  209. package/lib/math/sets/mathSet.d.ts +7 -7
  210. package/lib/math/sets/mathSet.js +10 -10
  211. package/lib/math/sets/mathSetInterface.d.ts +5 -5
  212. package/lib/math/sets/mathSetInterface.js +2 -2
  213. package/lib/math/trigonometry/remarkableValue.d.ts +10 -10
  214. package/lib/math/trigonometry/remarkableValue.js +29 -29
  215. package/lib/math/trigonometry/remarkableValues.d.ts +2 -2
  216. package/lib/math/trigonometry/remarkableValues.js +51 -51
  217. package/lib/math/utils/arithmetic/coprimesOf.d.ts +1 -1
  218. package/lib/math/utils/arithmetic/coprimesOf.js +13 -13
  219. package/lib/math/utils/arithmetic/dividersOf.d.ts +1 -1
  220. package/lib/math/utils/arithmetic/dividersOf.js +12 -12
  221. package/lib/math/utils/arithmetic/gcd.d.ts +1 -1
  222. package/lib/math/utils/arithmetic/gcd.js +7 -7
  223. package/lib/math/utils/arithmetic/isSquare.d.ts +1 -1
  224. package/lib/math/utils/arithmetic/isSquare.js +7 -7
  225. package/lib/math/utils/arithmetic/lcd.d.ts +1 -1
  226. package/lib/math/utils/arithmetic/lcd.js +12 -12
  227. package/lib/math/utils/arithmetic/nonCoprimesOf.d.ts +1 -1
  228. package/lib/math/utils/arithmetic/nonCoprimesOf.js +13 -13
  229. package/lib/math/utils/arithmetic/nonDividersOf.d.ts +1 -1
  230. package/lib/math/utils/arithmetic/nonDividersOf.js +14 -14
  231. package/lib/math/utils/arithmetic/primeFactors.d.ts +5 -5
  232. package/lib/math/utils/arithmetic/primeFactors.js +22 -22
  233. package/lib/math/utils/decimals/decimalPartLengthOf.d.ts +1 -1
  234. package/lib/math/utils/decimals/decimalPartLengthOf.js +14 -14
  235. package/lib/math/utils/random/randTupleInt.d.ts +13 -13
  236. package/lib/math/utils/random/randTupleInt.js +30 -30
  237. package/lib/math/utils/random/randint.d.ts +4 -4
  238. package/lib/math/utils/random/randint.js +18 -18
  239. package/lib/math/utils/round.d.ts +1 -1
  240. package/lib/math/utils/round.js +8 -8
  241. package/lib/server.d.ts +1 -1
  242. package/lib/server.js +53 -53
  243. package/lib/tree/nodes/functions/cosNode.d.ts +9 -9
  244. package/lib/tree/nodes/functions/cosNode.js +21 -21
  245. package/lib/tree/nodes/functions/functionNode.d.ts +14 -14
  246. package/lib/tree/nodes/functions/functionNode.js +20 -20
  247. package/lib/tree/nodes/functions/oppositeNode.d.ts +7 -7
  248. package/lib/tree/nodes/functions/oppositeNode.js +26 -26
  249. package/lib/tree/nodes/functions/sinNode.js +1 -1
  250. package/lib/tree/nodes/functions/sqrtNode.d.ts +8 -8
  251. package/lib/tree/nodes/functions/sqrtNode.js +18 -18
  252. package/lib/tree/nodes/node.d.ts +12 -12
  253. package/lib/tree/nodes/node.js +11 -11
  254. package/lib/tree/nodes/numbers/constantNode.d.ts +9 -9
  255. package/lib/tree/nodes/numbers/constantNode.js +18 -18
  256. package/lib/tree/nodes/numbers/numberNode.d.ts +10 -10
  257. package/lib/tree/nodes/numbers/numberNode.js +19 -19
  258. package/lib/tree/nodes/numbers/piNode.d.ts +2 -2
  259. package/lib/tree/nodes/numbers/piNode.js +5 -5
  260. package/lib/tree/nodes/operators/addNode.d.ts +7 -7
  261. package/lib/tree/nodes/operators/addNode.js +19 -19
  262. package/lib/tree/nodes/operators/divideNode.d.ts +11 -11
  263. package/lib/tree/nodes/operators/divideNode.js +34 -34
  264. package/lib/tree/nodes/operators/equalNode.d.ts +7 -7
  265. package/lib/tree/nodes/operators/equalNode.js +16 -16
  266. package/lib/tree/nodes/operators/fractionNode.d.ts +11 -11
  267. package/lib/tree/nodes/operators/fractionNode.js +20 -20
  268. package/lib/tree/nodes/operators/multiplyNode.d.ts +7 -7
  269. package/lib/tree/nodes/operators/multiplyNode.js +43 -43
  270. package/lib/tree/nodes/operators/operatorNode.d.ts +21 -21
  271. package/lib/tree/nodes/operators/operatorNode.js +35 -35
  272. package/lib/tree/nodes/operators/powerNode.d.ts +7 -7
  273. package/lib/tree/nodes/operators/powerNode.js +33 -33
  274. package/lib/tree/nodes/operators/substractNode.d.ts +7 -7
  275. package/lib/tree/nodes/operators/substractNode.js +24 -24
  276. package/lib/tree/nodes/variables/variableNode.d.ts +8 -8
  277. package/lib/tree/nodes/variables/variableNode.js +19 -19
  278. package/lib/tree/parsers/derivateParser.js +62 -62
  279. package/lib/tree/parsers/simplify.d.ts +2 -2
  280. package/lib/tree/parsers/simplify.js +52 -52
  281. package/lib/utils/arrayEqual.d.ts +1 -1
  282. package/lib/utils/arrayEqual.js +13 -13
  283. package/lib/utils/coinFlip.d.ts +1 -1
  284. package/lib/utils/coinFlip.js +7 -7
  285. package/lib/utils/random.d.ts +1 -1
  286. package/lib/utils/random.js +7 -7
  287. package/lib/utils/shuffle.d.ts +1 -1
  288. package/lib/utils/shuffle.js +15 -15
  289. package/package.json +50 -50
  290. package/lib/exercises/calcul/operationsPriorities.js +0 -88
  291. package/lib/exercises/derivation/derivative/affineDerivative.d.ts +0 -4
  292. package/lib/exercises/derivation/derivative/affineDerivative.d.ts.map +0 -1
  293. package/lib/exercises/derivation/derivative/affineDerivative.js +0 -27
  294. package/lib/exercises/derivation/derivative/thridDegreeDerivative.d.ts +0 -1
  295. package/lib/exercises/derivation/derivative/thridDegreeDerivative.d.ts.map +0 -1
  296. package/lib/exercises/derivation/derivative/thridDegreeDerivative.js +0 -1
  297. package/lib/geometry/point.js +0 -27
  298. package/lib/geometry/vector.js +0 -31
  299. package/lib/mathutils/arithmetic/coprimesOf.js +0 -13
  300. package/lib/mathutils/arithmetic/dividersOf.js +0 -12
  301. package/lib/mathutils/arithmetic/gcd.js +0 -7
  302. package/lib/mathutils/arithmetic/isSquare.js +0 -7
  303. package/lib/mathutils/arithmetic/lcd.js +0 -12
  304. package/lib/mathutils/arithmetic/nonCoprimesOf.js +0 -13
  305. package/lib/mathutils/arithmetic/nonDividersOf.js +0 -14
  306. package/lib/mathutils/arithmetic/primeFactors.js +0 -22
  307. package/lib/mathutils/decimals/decimalPartLengthOf.js +0 -14
  308. package/lib/mathutils/random/randTupleInt.js +0 -30
  309. package/lib/mathutils/random/randint.js +0 -18
  310. package/lib/mathutils/round.js +0 -8
  311. package/lib/numbers/decimals/decimal.js +0 -140
  312. package/lib/numbers/epsilon.js +0 -10
  313. package/lib/numbers/integer/integer.js +0 -68
  314. package/lib/numbers/integer/power.js +0 -52
  315. package/lib/numbers/nombre.js +0 -10
  316. package/lib/numbers/rationals/rational.js +0 -113
  317. package/lib/numbers/reals/real.js +0 -16
  318. package/lib/numbers/reals/squareRoot.js +0 -63
  319. package/lib/polynomials/affine.js +0 -42
  320. package/lib/polynomials/polynomial.js +0 -125
  321. package/lib/sets/discreteSet.js +0 -28
  322. package/lib/sets/emptySet.js +0 -6
  323. package/lib/sets/intervals/intervals.js +0 -108
  324. package/lib/sets/intervals/union.js +0 -1
  325. package/lib/sets/mathSet.js +0 -10
  326. package/lib/sets/mathSetInterface.js +0 -2
  327. package/lib/tree/parsers/latexParser.js +0 -110
  328. package/lib/utils/coin.js +0 -7
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Integer = exports.IntegerConstructor = void 0;
4
- const randint_1 = require("../../mathutils/random/randint");
5
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
6
- const nombre_1 = require("../nombre");
7
- const rational_1 = require("../rationals/rational");
8
- class IntegerConstructor {
9
- static random(nbOfDigits) {
10
- return (0, randint_1.randint)(0, 10 ** nbOfDigits);
11
- }
12
- }
13
- exports.IntegerConstructor = IntegerConstructor;
14
- class Integer {
15
- constructor(value, tex) {
16
- this.value = value;
17
- this.tex = tex || value + "";
18
- this.type = nombre_1.NumberType.Integer;
19
- }
20
- toTree() {
21
- return new numberNode_1.NumberNode(this.value, this.tex);
22
- }
23
- round(precision) {
24
- const intString = this.value + "";
25
- if (precision >= intString.length || precision < 1)
26
- throw Error("can't round to higher precision");
27
- let newInt = "";
28
- const shouldRoundUp = Number(intString[intString.length - precision]) > 4;
29
- if (shouldRoundUp) {
30
- for (let i = 0; i < precision; i++) {
31
- newInt += "0";
32
- }
33
- let retenue = true;
34
- let i = intString.length - precision - 1;
35
- while (retenue) {
36
- const nb = (Number(intString[i]) + 1) % 10;
37
- newInt = "" + nb + newInt;
38
- if (nb === 0) {
39
- i--;
40
- }
41
- else {
42
- retenue = false;
43
- for (let j = i - 1; j > -1; j--) {
44
- newInt = intString[j] + newInt;
45
- }
46
- }
47
- }
48
- }
49
- else {
50
- for (let i = 0; i < intString.length; i++) {
51
- newInt += i < intString.length - precision ? intString[i] : "0";
52
- }
53
- }
54
- return new Integer(Number(newInt));
55
- }
56
- divide(nb) {
57
- switch (nb.type) {
58
- case nombre_1.NumberType.Integer:
59
- return new rational_1.Rational(this.value, nb.value).simplify();
60
- case nombre_1.NumberType.Rational:
61
- const rational = nb;
62
- return new rational_1.Rational(this.value * rational.denum, rational.num).simplify();
63
- default:
64
- throw Error("not implemented");
65
- }
66
- }
67
- }
68
- exports.Integer = Integer;
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Power = void 0;
4
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
5
- const powerNode_1 = require("../../tree/nodes/operators/powerNode");
6
- const nombre_1 = require("../nombre");
7
- const integer_1 = require("./integer");
8
- class Power {
9
- constructor(a, b) {
10
- this.operand = a;
11
- this.power = b;
12
- this.value = Math.pow(a, b);
13
- this.tex = `${a}^{${b}}`;
14
- this.type = b < 0 ? nombre_1.NumberType.Rational : nombre_1.NumberType.Integer;
15
- }
16
- simplify() {
17
- if (this.power === 0)
18
- return new numberNode_1.NumberNode(1);
19
- if (this.power === 1)
20
- return new numberNode_1.NumberNode(this.operand);
21
- if (this.operand === 1)
22
- return new numberNode_1.NumberNode(1);
23
- if (this.operand === 0)
24
- return new numberNode_1.NumberNode(0);
25
- if (this.operand === -1)
26
- return new numberNode_1.NumberNode(this.power % 2 === 0 ? 1 : -1);
27
- return this.toTree();
28
- }
29
- toDecimalWriting() {
30
- if (this.operand !== 10)
31
- throw Error("only implemented for powers of ten so far");
32
- let s = "";
33
- if (this.power > -1) {
34
- s += "1";
35
- for (let i = 0; i < this.power; i++) {
36
- s += 0;
37
- }
38
- }
39
- else {
40
- s += "1";
41
- for (let i = 1; i < Math.abs(this.power); i++) {
42
- s = "0" + s;
43
- }
44
- s = "0." + s;
45
- }
46
- return new integer_1.Integer(Number(s), s);
47
- }
48
- toTree() {
49
- return new powerNode_1.PowerNode(new numberNode_1.NumberNode(this.operand), new numberNode_1.NumberNode(this.power));
50
- }
51
- }
52
- exports.Power = Power;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NumberType = void 0;
4
- var NumberType;
5
- (function (NumberType) {
6
- NumberType[NumberType["Integer"] = 0] = "Integer";
7
- NumberType[NumberType["Decimal"] = 1] = "Decimal";
8
- NumberType[NumberType["Rational"] = 2] = "Rational";
9
- NumberType[NumberType["Real"] = 3] = "Real";
10
- })(NumberType = exports.NumberType || (exports.NumberType = {}));
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Rational = exports.RationalConstructor = void 0;
4
- const coprimesOf_1 = require("../../mathutils/arithmetic/coprimesOf");
5
- const gcd_1 = require("../../mathutils/arithmetic/gcd");
6
- const lcd_1 = require("../../mathutils/arithmetic/lcd");
7
- const randint_1 = require("../../mathutils/random/randint");
8
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
9
- const fractionNode_1 = require("../../tree/nodes/operators/fractionNode");
10
- const random_1 = require("../../utils/random");
11
- const shuffle_1 = require("../../utils/shuffle");
12
- const integer_1 = require("../integer/integer");
13
- const nombre_1 = require("../nombre");
14
- class RationalConstructor {
15
- /**
16
- * @param maxGcd max number by which the fraction is simplifiable
17
- */
18
- static randomSimplifiable(maxGcd = 10) {
19
- const gcd = (0, randint_1.randint)(2, maxGcd);
20
- const max = (0, randint_1.randint)(3, 11);
21
- const min = (0, random_1.random)((0, coprimesOf_1.coprimesOf)(max));
22
- let [num, denum] = (0, shuffle_1.shuffle)([gcd * min, gcd * max]);
23
- if (denum === gcd) {
24
- //si 10/2 on transforme en 2/10
25
- return new Rational(denum, num);
26
- }
27
- return new Rational(num, denum);
28
- }
29
- static randomIrreductible(max = 11) {
30
- const a = (0, randint_1.randint)(2, max);
31
- const b = (0, random_1.random)([...(0, coprimesOf_1.coprimesOf)(a), 1]);
32
- if (b === 1)
33
- return new Rational(b, a);
34
- const [num, denum] = (0, shuffle_1.shuffle)([a, b]);
35
- return new Rational(num, denum);
36
- }
37
- }
38
- exports.RationalConstructor = RationalConstructor;
39
- class Rational {
40
- constructor(numerator, denumerator) {
41
- if (denumerator === 0)
42
- throw Error("division by zero");
43
- this.num = numerator;
44
- this.denum = denumerator;
45
- this.value = numerator / denumerator;
46
- this.isSimplified = Math.abs((0, gcd_1.gcd)(numerator, denumerator)) === 1;
47
- this.tex = `\\frac{${this.num}}{${this.denum}}`;
48
- this.type = nombre_1.NumberType.Rational;
49
- }
50
- toTex() {
51
- return `\\frac{${this.num}}{${this.denum}}`;
52
- }
53
- add(nb) {
54
- switch (nb.type) {
55
- case nombre_1.NumberType.Integer: {
56
- const num = this.num + this.denum * nb.value;
57
- return new Rational(num, this.denum).simplify();
58
- }
59
- case nombre_1.NumberType.Rational: {
60
- const rational = nb;
61
- const ppcm = (0, lcd_1.lcd)(rational.denum, this.denum);
62
- const num = this.num * (ppcm / this.denum) + rational.num * (ppcm / rational.denum);
63
- return new Rational(num, ppcm).simplify();
64
- }
65
- }
66
- throw Error("not implemented yet");
67
- }
68
- multiply(nb) {
69
- switch (nb.type) {
70
- case nombre_1.NumberType.Integer: {
71
- const num = this.num * nb.value;
72
- const denum = this.denum;
73
- return new Rational(num, denum).simplify();
74
- }
75
- case nombre_1.NumberType.Rational: {
76
- const rational = nb;
77
- const num = this.num * rational.num;
78
- const denum = this.denum * rational.denum;
79
- return new Rational(num, denum).simplify();
80
- }
81
- }
82
- throw Error("not implemented yet");
83
- }
84
- divide(nb) {
85
- switch (nb.type) {
86
- case nombre_1.NumberType.Integer: {
87
- const denum = this.denum * nb.value;
88
- return new Rational(this.num, denum).simplify();
89
- }
90
- case nombre_1.NumberType.Rational: {
91
- const rational = nb;
92
- const num = this.num * rational.denum;
93
- const denum = this.denum * rational.num;
94
- return new Rational(num, denum).simplify();
95
- }
96
- }
97
- throw Error("not implemented yet");
98
- }
99
- opposite() {
100
- return new Rational(-this.num, this.denum);
101
- }
102
- toTree() {
103
- return new fractionNode_1.FractionNode(new numberNode_1.NumberNode(this.num), new numberNode_1.NumberNode(this.denum));
104
- }
105
- simplify() {
106
- const sign = (this.num > 0 && this.denum > 0) || (this.num < 0 && this.denum < 0) ? 1 : -1;
107
- const div = Math.abs((0, gcd_1.gcd)(this.num, this.denum));
108
- if (Math.abs(this.denum) === div)
109
- return new integer_1.Integer(this.num / this.denum);
110
- return new Rational((sign * Math.abs(this.num)) / div, Math.abs(this.denum) / div);
111
- }
112
- }
113
- exports.Rational = Rational;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Real = void 0;
4
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
5
- const nombre_1 = require("../nombre");
6
- class Real {
7
- constructor(value, tex) {
8
- this.value = value;
9
- this.tex = tex;
10
- this.type = nombre_1.NumberType.Real;
11
- }
12
- toTree() {
13
- return new numberNode_1.NumberNode(this.value);
14
- }
15
- }
16
- exports.Real = Real;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SquareRoot = exports.SquareRootConstructor = void 0;
4
- const isSquare_1 = require("../../mathutils/arithmetic/isSquare");
5
- const primeFactors_1 = require("../../mathutils/arithmetic/primeFactors");
6
- const randint_1 = require("../../mathutils/random/randint");
7
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
8
- const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
9
- const real_1 = require("./real");
10
- const sqrtNode_1 = require("../../tree/nodes/functions/sqrtNode");
11
- class SquareRootConstructor {
12
- /**
13
- * @returns simplifiable square root type sqrt(c)=a*sqrt(b)
14
- */
15
- static randomSimplifiable({ allowPerfectSquare = false, maxSquare = 11 }) {
16
- const a = (0, randint_1.randint)(2, maxSquare);
17
- let b;
18
- let bMin = allowPerfectSquare ? 1 : 2;
19
- do {
20
- b = (0, randint_1.randint)(bMin, maxSquare);
21
- } while (b % (a * a) === 0 || (0, isSquare_1.isSquare)(b));
22
- return new SquareRoot(a * a * b);
23
- }
24
- }
25
- exports.SquareRootConstructor = SquareRootConstructor;
26
- class SquareRoot extends real_1.Real {
27
- constructor(operand) {
28
- super(Math.sqrt(operand), `\\sqrt{${operand}}`);
29
- this.operand = operand;
30
- }
31
- simplify() {
32
- const factors = (0, primeFactors_1.primeFactors)(this.operand);
33
- // finds primes with even exponents
34
- const multiples = [1];
35
- for (let i = 0; i < factors.length - 1; i++) {
36
- if (factors[i] === factors[i + 1]) {
37
- multiples.push(factors[i]);
38
- factors.splice(i, 2);
39
- i--;
40
- }
41
- }
42
- const outsideSqrt = multiples.reduce((x, y) => x * y);
43
- const insideSqrt = factors.length === 0 ? 1 : factors.reduce((x, y) => x * y);
44
- const simplified = insideSqrt !== 1
45
- ? new real_1.Real(outsideSqrt * Math.sqrt(insideSqrt), `${outsideSqrt === 1 ? "" : `${outsideSqrt}`}\\sqrt{${insideSqrt}}`)
46
- : new real_1.Real(outsideSqrt, outsideSqrt + "");
47
- simplified.toTree = () => {
48
- return insideSqrt !== 1
49
- ? outsideSqrt === 1
50
- ? new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(insideSqrt))
51
- : new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(outsideSqrt), new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(insideSqrt)))
52
- : new numberNode_1.NumberNode(outsideSqrt);
53
- };
54
- return simplified;
55
- }
56
- toTex() {
57
- return this.tex;
58
- }
59
- toTree() {
60
- return new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(this.operand));
61
- }
62
- }
63
- exports.SquareRoot = SquareRoot;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Affine = exports.AffineConstructor = void 0;
4
- const rational_1 = require("../numbers/rationals/rational");
5
- const intervals_1 = require("../sets/intervals/intervals");
6
- const polynomial_1 = require("./polynomial");
7
- const discreteSet_1 = require("../sets/discreteSet");
8
- const integer_1 = require("../numbers/integer/integer");
9
- class AffineConstructor {
10
- static random(domainA = new intervals_1.Interval("[[-10; 10]]").difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainB = new intervals_1.Interval("[[-10; 10]]")) {
11
- const a = domainA.getRandomElement();
12
- const b = domainB.getRandomElement();
13
- return new Affine(a.value, b.value);
14
- }
15
- static differentRandoms(nb, domainA = new intervals_1.Interval("[[-10; 10]]").difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainB = new intervals_1.Interval("[[-10; 10]]")) {
16
- const res = [];
17
- for (let i = 0; i < nb; i++) {
18
- let aff;
19
- do {
20
- aff = AffineConstructor.random(domainA, domainB);
21
- } while (res.some((affine) => affine.equals(aff)));
22
- res.push(aff);
23
- }
24
- return res;
25
- }
26
- }
27
- exports.AffineConstructor = AffineConstructor;
28
- class Affine extends polynomial_1.Polynomial {
29
- constructor(a, b, variable = "x") {
30
- super([b, a], variable);
31
- this.a = a;
32
- this.b = b;
33
- this.variable = variable;
34
- }
35
- getRoot() {
36
- return new rational_1.Rational(-this.b, this.a).simplify();
37
- }
38
- toString() {
39
- return super.toTex();
40
- }
41
- }
42
- exports.Affine = Affine;
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Polynomial = void 0;
4
- const numberNode_1 = require("../tree/nodes/numbers/numberNode");
5
- const addNode_1 = require("../tree/nodes/operators/addNode");
6
- const multiplyNode_1 = require("../tree/nodes/operators/multiplyNode");
7
- const oppositeNode_1 = require("../tree/nodes/functions/oppositeNode");
8
- const powerNode_1 = require("../tree/nodes/operators/powerNode");
9
- const variableNode_1 = require("../tree/nodes/variables/variableNode");
10
- class Polynomial {
11
- /**
12
- *
13
- * @param coefficients coefficients[i] est le coeff de x^i
14
- * @param variable
15
- */
16
- constructor(coefficients, variable = "x") {
17
- if (coefficients.length === 0)
18
- throw Error("coeffs must be not null");
19
- if (coefficients[coefficients.length - 1] === 0) {
20
- throw Error("n-th coeff must be not null");
21
- }
22
- this.coefficients = coefficients;
23
- this.variable = variable;
24
- this.degree = coefficients.length - 1;
25
- }
26
- equals(P) {
27
- return P.degree === this.degree && this.coefficients.every((coeff, i) => coeff === P.coefficients[i]);
28
- }
29
- getRoots() { }
30
- add(P) {
31
- if (P.variable !== this.variable)
32
- throw Error("Can't add two polynomials with different variables");
33
- const newDegree = P.degree === this.degree && P.coefficients[P.degree] === -this.coefficients[this.degree]
34
- ? P.degree - 1
35
- : Math.max(P.degree, this.degree);
36
- const res = [];
37
- for (let i = 0; i < newDegree + 1; i++) {
38
- res[i] = P.coefficients[i] + this.coefficients[i];
39
- }
40
- return new Polynomial(res, this.variable);
41
- }
42
- times(nb) {
43
- return new Polynomial(this.coefficients.map((coeff) => coeff * nb), this.variable);
44
- }
45
- multiply(Q) {
46
- if (Q.variable !== this.variable)
47
- throw Error("Can't multiply two polynomials with different variables");
48
- const p = this.degree;
49
- const q = Q.degree;
50
- const res = Array.apply(0, new Array(this.degree)).map((i) => 0);
51
- for (let k = 0; k <= p + q; k++) {
52
- let sum = 0;
53
- for (let m = 0; m <= k; m++) {
54
- sum += (this.coefficients[m] || 0) * (Q.coefficients[k - m] || 0);
55
- }
56
- res[k] = sum;
57
- }
58
- return new Polynomial(res, this.variable);
59
- }
60
- opposite() {
61
- return new Polynomial(this.coefficients.map((coeff) => -coeff), this.variable);
62
- }
63
- toTree() {
64
- const recursive = (cursor) => {
65
- const coeff = this.coefficients[cursor];
66
- if (coeff === 0)
67
- return recursive(cursor - 1);
68
- if (cursor === 0) {
69
- return new numberNode_1.NumberNode(coeff);
70
- }
71
- const monome = cursor > 1
72
- ? new powerNode_1.PowerNode(new variableNode_1.VariableNode(this.variable), new numberNode_1.NumberNode(cursor))
73
- : new variableNode_1.VariableNode(this.variable);
74
- let res;
75
- if (coeff === 1)
76
- res = monome;
77
- else if (coeff === -1)
78
- res = new oppositeNode_1.OppositeNode(monome);
79
- else
80
- res = new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(coeff), monome);
81
- let nextCoeff;
82
- for (let i = cursor - 1; i > -1; i--) {
83
- if (this.coefficients[i]) {
84
- nextCoeff = this.coefficients[i];
85
- break;
86
- }
87
- }
88
- if (nextCoeff) {
89
- return new addNode_1.AddNode(res, recursive(cursor - 1));
90
- }
91
- else {
92
- return res;
93
- }
94
- };
95
- return recursive(this.degree);
96
- }
97
- toTex() {
98
- let s = "";
99
- for (let i = this.degree; i > -1; i--) {
100
- const coeff = this.coefficients[i];
101
- if (coeff === 0)
102
- continue;
103
- if (i === 0)
104
- s += coeff > 0 ? `+${coeff}` : coeff;
105
- else if (i === this.degree) {
106
- s += coeff === 1 ? "" : coeff === -1 ? "-" : coeff;
107
- }
108
- else {
109
- s += coeff === 1 ? "+" : coeff === -1 ? "-" : coeff > 0 ? `+${coeff}` : coeff;
110
- }
111
- //x^n
112
- if (i === 0)
113
- continue;
114
- if (i === 1)
115
- s += this.variable;
116
- else
117
- s += `${this.variable}^{${i}}`;
118
- }
119
- return s;
120
- }
121
- toString() {
122
- return this.toTex();
123
- }
124
- }
125
- exports.Polynomial = Polynomial;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DiscreteSet = void 0;
4
- const random_1 = require("../utils/random");
5
- class DiscreteSet {
6
- constructor(elements) {
7
- this.elements = Array.from(new Set(elements));
8
- let tex = "\\{";
9
- this.elements.forEach((el, index) => {
10
- tex += el.tex;
11
- if (index < this.elements.length - 1)
12
- tex += ";";
13
- else
14
- tex += "\\}";
15
- });
16
- this.tex = tex;
17
- }
18
- toTex() {
19
- return this.tex;
20
- }
21
- includes(el) {
22
- return this.elements.some((nb) => nb.value === el.value && nb.tex === el.tex);
23
- }
24
- getRandomElement() {
25
- return (0, random_1.random)(this.elements);
26
- }
27
- }
28
- exports.DiscreteSet = DiscreteSet;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- // import { MathSetInterface } from "./mathSetInterface";
3
- // export abstract class EmptySet implements MathSetInterface {
4
- // tex: string = "\\emptyset";
5
- // getRandomElement = () => null;
6
- // }
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Interval = void 0;
4
- const epsilon_1 = require("../../numbers/epsilon");
5
- const nombre_1 = require("../../numbers/nombre");
6
- const round_1 = require("../../mathutils/round");
7
- const mathSet_1 = require("../mathSet");
8
- const integer_1 = require("../../numbers/integer/integer");
9
- const real_1 = require("../../numbers/reals/real");
10
- var BoundType;
11
- (function (BoundType) {
12
- BoundType["OO"] = "]a;b[";
13
- BoundType["OF"] = "]a;b]";
14
- BoundType["FO"] = "[a;b[";
15
- BoundType["FF"] = "[a;b]";
16
- })(BoundType || (BoundType = {}));
17
- class Interval {
18
- /**
19
- * [[a; b]] pour un interval d'integer; [a;b] pour des réels
20
- */
21
- constructor(tex = "[-10; 10]") {
22
- this.tex = tex;
23
- const isInt = tex[1] === "[" || tex[1] === "]";
24
- this.type = isInt ? nombre_1.NumberType.Integer : nombre_1.NumberType.Real;
25
- const left = tex[0];
26
- const right = tex[tex.length - 1];
27
- const [a, b] = tex
28
- .slice(isInt ? 2 : 1, isInt ? tex.length - 2 : tex.length - 1)
29
- .split(";");
30
- switch (`${left}a;b${right}`) {
31
- case "[a;b]":
32
- this.boundType = BoundType.FF;
33
- break;
34
- case "]a;b[":
35
- this.boundType = BoundType.OO;
36
- break;
37
- case "[a;b[":
38
- this.boundType = BoundType.FO;
39
- break;
40
- case "]a;b]":
41
- this.boundType = BoundType.OF;
42
- break;
43
- default:
44
- throw console.error("wrong interval");
45
- }
46
- function getBound(bound) {
47
- return bound === "-\\infty"
48
- ? Number.NEGATIVE_INFINITY
49
- : bound === "+\\infty"
50
- ? Number.POSITIVE_INFINITY
51
- : Number(bound);
52
- }
53
- this.min = getBound(a);
54
- this.max = getBound(b);
55
- }
56
- // union(interval: Interval): MathSet {
57
- //[a,b] [c,d]
58
- //si a=c return a, max(b,d)
59
- //si si b = d return min(a,c), b
60
- //si a=d return c,b sauf si OXXO
61
- //si b=c return a,d sauf si XOOX
62
- //si c > b ou d < a alors union disjointe avec plus petit en 1er
63
- //sinon return min(a,c), max(b,d)
64
- //res = a
65
- // return new MathSet();
66
- // }
67
- exclude(nb) {
68
- const rand = () => {
69
- let x;
70
- do {
71
- x = this.getRandomElement();
72
- } while (x.value === nb);
73
- return x;
74
- };
75
- return new mathSet_1.MathSet(this.toTex() + `\\{${nb}\\}`, rand);
76
- }
77
- difference(set) {
78
- const rand = () => {
79
- let x;
80
- do {
81
- x = this.getRandomElement();
82
- } while (set.includes(x));
83
- return x;
84
- };
85
- return new mathSet_1.MathSet(this.toTex() + `\\ ${set.toTex()}`, rand);
86
- }
87
- toTex() {
88
- return this.tex;
89
- }
90
- getRandomElement(precision = this.type === nombre_1.NumberType.Integer ? 0 : 2) {
91
- if (this.min === -Infinity || this.max === Infinity)
92
- throw Error("Can't chose amongst infinity");
93
- let min = this.boundType === BoundType.OO || this.boundType === BoundType.OF
94
- ? this.min + epsilon_1.EPSILON
95
- : this.min;
96
- let max = this.boundType === BoundType.OO || this.boundType === BoundType.FO
97
- ? this.max - epsilon_1.EPSILON
98
- : this.max;
99
- const value = (0, round_1.round)(min + Math.random() * (max - this.min), precision);
100
- switch (this.type) {
101
- case nombre_1.NumberType.Integer:
102
- return new integer_1.Integer(value);
103
- default:
104
- return new real_1.Real(value, value.toString());
105
- }
106
- }
107
- }
108
- exports.Interval = Interval;
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MathSet = void 0;
4
- class MathSet {
5
- constructor(tex, getRandomElement) {
6
- this.tex = tex;
7
- this.getRandomElement = getRandomElement;
8
- }
9
- }
10
- exports.MathSet = MathSet;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });