math-exercises 1.2.7 → 1.2.10

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 (218) hide show
  1. package/lib/exercises/calcul/addAndSub.js +40 -0
  2. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.js +35 -0
  3. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.js +31 -0
  4. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.js +32 -0
  5. package/lib/exercises/calcul/fractions/fractionsDivision.js +29 -0
  6. package/lib/exercises/calcul/fractions/fractionsProduct.js +29 -0
  7. package/lib/exercises/calcul/fractions/fractionsSum.js +29 -0
  8. package/lib/exercises/calcul/fractions/simplifyFraction.js +25 -0
  9. package/lib/exercises/calcul/operations/operationsPriorities.js +88 -0
  10. package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.js +111 -0
  11. package/{src → lib}/exercises/calcul/operationsPriorities.js +88 -89
  12. package/lib/exercises/calcul/rounding/rounding.js +86 -0
  13. package/{src → lib}/exercises/calculLitteral/distributivity/allIdentities.js +27 -27
  14. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +31 -0
  15. package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +32 -0
  16. package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +33 -0
  17. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +33 -0
  18. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +32 -0
  19. package/lib/exercises/calculLitteral/equation/equationType1Exercise.js +38 -0
  20. package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +41 -0
  21. package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +42 -0
  22. package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +44 -0
  23. package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.js +39 -0
  24. package/{src → lib}/exercises/exercise.js +7 -7
  25. package/lib/exercises/exercises.js +95 -0
  26. package/lib/exercises/geometry/cartesian/midpoint.js +29 -0
  27. package/lib/exercises/geometry/vectors/scalarProductViaCoords.js +29 -0
  28. package/lib/exercises/geometry/vectors/scalarProductViaNorms.js +27 -0
  29. package/lib/exercises/powers/powersDivision.js +45 -0
  30. package/lib/exercises/powers/powersOfTenToDecimal.js +33 -0
  31. package/lib/exercises/powers/powersPower.js +44 -0
  32. package/lib/exercises/powers/powersProduct.js +45 -0
  33. package/lib/exercises/powers/scientificToDecimal.js +38 -0
  34. package/{src → lib}/exercises/squareRoots/simpifySquareRoot.js +28 -28
  35. package/lib/exercises/utils/getDistinctQuestions.js +16 -0
  36. package/lib/geometry/point.js +27 -0
  37. package/lib/geometry/vector.js +31 -0
  38. package/lib/index.js +10 -0
  39. package/lib/mathutils/arithmetic/coprimesOf.js +13 -0
  40. package/lib/mathutils/arithmetic/dividersOf.js +12 -0
  41. package/{src → lib}/mathutils/arithmetic/gcd.js +7 -7
  42. package/{src → lib}/mathutils/arithmetic/isSquare.js +7 -7
  43. package/{src → lib}/mathutils/arithmetic/lcd.js +12 -12
  44. package/lib/mathutils/arithmetic/nonCoprimesOf.js +13 -0
  45. package/lib/mathutils/arithmetic/nonDividersOf.js +14 -0
  46. package/{src → lib}/mathutils/arithmetic/primeFactors.js +22 -22
  47. package/lib/mathutils/decimals/decimalPartLengthOf.js +14 -0
  48. package/lib/mathutils/random/randTupleInt.js +30 -0
  49. package/{src → lib}/mathutils/random/randint.js +18 -18
  50. package/{src → lib}/mathutils/round.js +8 -8
  51. package/{src → lib}/numbers/decimals/decimal.js +140 -144
  52. package/{src → lib}/numbers/epsilon.js +10 -10
  53. package/{src → lib}/numbers/integer/integer.js +68 -72
  54. package/{src → lib}/numbers/integer/power.js +52 -53
  55. package/{src → lib}/numbers/nombre.js +10 -10
  56. package/lib/numbers/rationals/rational.js +113 -0
  57. package/lib/numbers/reals/real.js +16 -0
  58. package/lib/numbers/reals/squareRoot.js +63 -0
  59. package/lib/polynomials/affine.js +42 -0
  60. package/lib/polynomials/polynomial.js +125 -0
  61. package/lib/sets/discreteSet.js +28 -0
  62. package/{src/sets/emptySet.ts → lib/sets/emptySet.js} +6 -6
  63. package/{src → lib}/sets/intervals/intervals.js +108 -113
  64. package/lib/sets/intervals/union.js +1 -0
  65. package/lib/sets/mathSet.js +10 -0
  66. package/lib/sets/mathSetInterface.js +2 -0
  67. package/{src → lib}/tree/nodes/functions/functionNode.js +18 -19
  68. package/lib/tree/nodes/functions/oppositeNode.js +13 -0
  69. package/lib/tree/nodes/functions/sqrtNode.js +15 -0
  70. package/{src → lib}/tree/nodes/node.js +10 -10
  71. package/lib/tree/nodes/numbers/numberNode.js +18 -0
  72. package/lib/tree/nodes/operators/addNode.js +15 -0
  73. package/lib/tree/nodes/operators/divideNode.js +17 -0
  74. package/lib/tree/nodes/operators/equalNode.js +13 -0
  75. package/lib/tree/nodes/operators/fractionNode.js +17 -0
  76. package/lib/tree/nodes/operators/multiplyNode.js +13 -0
  77. package/{src → lib}/tree/nodes/operators/operatorNode.js +35 -37
  78. package/lib/tree/nodes/operators/powerNode.js +13 -0
  79. package/lib/tree/nodes/operators/substractNode.js +13 -0
  80. package/lib/tree/nodes/variables/variableNode.js +16 -0
  81. package/{src → lib}/tree/parsers/derivateParser.js +60 -60
  82. package/{src → lib}/tree/parsers/latexParser.js +117 -117
  83. package/lib/utils/arrayEqual.js +13 -0
  84. package/{src → lib}/utils/coin.js +7 -7
  85. package/{src → lib}/utils/random.js +7 -7
  86. package/lib/utils/shuffle.js +15 -0
  87. package/package.json +35 -28
  88. package/nodemon.json +0 -5
  89. package/src/exercises/calcul/addAndSub.js +0 -40
  90. package/src/exercises/calcul/addAndSub.ts +0 -39
  91. package/src/exercises/calcul/fractions/fractionAndIntegerDivision.js +0 -35
  92. package/src/exercises/calcul/fractions/fractionAndIntegerDivision.ts +0 -38
  93. package/src/exercises/calcul/fractions/fractionAndIntegerProduct.js +0 -31
  94. package/src/exercises/calcul/fractions/fractionAndIntegerProduct.ts +0 -32
  95. package/src/exercises/calcul/fractions/fractionAndIntegerSum.js +0 -32
  96. package/src/exercises/calcul/fractions/fractionAndIntegerSum.ts +0 -31
  97. package/src/exercises/calcul/fractions/fractionsDivision.js +0 -29
  98. package/src/exercises/calcul/fractions/fractionsDivision.ts +0 -30
  99. package/src/exercises/calcul/fractions/fractionsProduct.js +0 -29
  100. package/src/exercises/calcul/fractions/fractionsProduct.ts +0 -29
  101. package/src/exercises/calcul/fractions/fractionsSum.js +0 -29
  102. package/src/exercises/calcul/fractions/fractionsSum.ts +0 -28
  103. package/src/exercises/calcul/fractions/simplifyFraction.js +0 -25
  104. package/src/exercises/calcul/fractions/simplifyFraction.ts +0 -24
  105. package/src/exercises/calcul/operationsPriorities.ts +0 -115
  106. package/src/exercises/calcul/rounding/roundToUnit.js +0 -70
  107. package/src/exercises/calcul/rounding/roundToUnit.ts +0 -68
  108. package/src/exercises/calculLitteral/distributivity/allIdentities.ts +0 -26
  109. package/src/exercises/calculLitteral/distributivity/doubleDistributivity.js +0 -31
  110. package/src/exercises/calculLitteral/distributivity/doubleDistributivity.ts +0 -33
  111. package/src/exercises/calculLitteral/distributivity/firstIdentity.js +0 -32
  112. package/src/exercises/calculLitteral/distributivity/firstIdentity.ts +0 -33
  113. package/src/exercises/calculLitteral/distributivity/secondIdentity.js +0 -33
  114. package/src/exercises/calculLitteral/distributivity/secondIdentity.ts +0 -35
  115. package/src/exercises/calculLitteral/distributivity/simpleDistributivity.js +0 -33
  116. package/src/exercises/calculLitteral/distributivity/simpleDistributivity.ts +0 -33
  117. package/src/exercises/calculLitteral/distributivity/thirdIdentity.js +0 -32
  118. package/src/exercises/calculLitteral/distributivity/thirdIdentity.ts +0 -34
  119. package/src/exercises/calculLitteral/equation/equationType1Exercise.js +0 -38
  120. package/src/exercises/calculLitteral/equation/equationType1Exercise.ts +0 -38
  121. package/src/exercises/calculLitteral/equation/equationType2Exercise.js +0 -41
  122. package/src/exercises/calculLitteral/equation/equationType2Exercise.ts +0 -41
  123. package/src/exercises/calculLitteral/equation/equationType3Exercise.js +0 -42
  124. package/src/exercises/calculLitteral/equation/equationType3Exercise.ts +0 -43
  125. package/src/exercises/calculLitteral/equation/equationType4Exercise.js +0 -44
  126. package/src/exercises/calculLitteral/equation/equationType4Exercise.ts +0 -46
  127. package/src/exercises/calculLitteral/factorisation/factoType1Exercise.js +0 -39
  128. package/src/exercises/calculLitteral/factorisation/factoType1Exercise.ts +0 -54
  129. package/src/exercises/calculLitteral/reduction.ts +0 -27
  130. package/src/exercises/exercise.ts +0 -25
  131. package/src/exercises/exercises.js +0 -86
  132. package/src/exercises/exercises.ts +0 -91
  133. package/src/exercises/powers/powersDivision.js +0 -46
  134. package/src/exercises/powers/powersDivision.ts +0 -51
  135. package/src/exercises/powers/powersOfTenToDecimal.js +0 -33
  136. package/src/exercises/powers/powersOfTenToDecimal.ts +0 -37
  137. package/src/exercises/powers/powersPower.js +0 -45
  138. package/src/exercises/powers/powersPower.ts +0 -55
  139. package/src/exercises/powers/powersProduct.js +0 -46
  140. package/src/exercises/powers/powersProduct.ts +0 -51
  141. package/src/exercises/powers/scientificToDecimal.js +0 -38
  142. package/src/exercises/powers/scientificToDecimal.ts +0 -44
  143. package/src/exercises/squareRoots/simpifySquareRoot.ts +0 -27
  144. package/src/exercises/utils/getDistinctQuestions.js +0 -18
  145. package/src/exercises/utils/getDistinctQuestions.ts +0 -14
  146. package/src/index.js +0 -10
  147. package/src/index.ts +0 -14
  148. package/src/mathutils/arithmetic/coprimesOf.js +0 -13
  149. package/src/mathutils/arithmetic/coprimesOf.ts +0 -9
  150. package/src/mathutils/arithmetic/dividersOf.ts +0 -7
  151. package/src/mathutils/arithmetic/gcd.ts +0 -3
  152. package/src/mathutils/arithmetic/isSquare.ts +0 -3
  153. package/src/mathutils/arithmetic/lcd.ts +0 -7
  154. package/src/mathutils/arithmetic/nonCoprimesOf.ts +0 -9
  155. package/src/mathutils/arithmetic/nonDividersOf.ts +0 -12
  156. package/src/mathutils/arithmetic/primeFactors.ts +0 -18
  157. package/src/mathutils/decimals/decimalPartLengthOf.ts +0 -10
  158. package/src/mathutils/random/randint.ts +0 -12
  159. package/src/mathutils/round.ts +0 -5
  160. package/src/numbers/decimals/decimal.ts +0 -140
  161. package/src/numbers/epsilon.ts +0 -7
  162. package/src/numbers/integer/integer.ts +0 -72
  163. package/src/numbers/integer/power.ts +0 -49
  164. package/src/numbers/nombre.ts +0 -15
  165. package/src/numbers/number.js +0 -8
  166. package/src/numbers/rationals/rational.js +0 -128
  167. package/src/numbers/rationals/rational.ts +0 -122
  168. package/src/numbers/reals/real.js +0 -17
  169. package/src/numbers/reals/real.ts +0 -17
  170. package/src/numbers/reals/squareRoot.js +0 -85
  171. package/src/numbers/reals/squareRoot.ts +0 -70
  172. package/src/polynomials/affine.js +0 -71
  173. package/src/polynomials/affine.ts +0 -60
  174. package/src/polynomials/polynomial.js +0 -128
  175. package/src/polynomials/polynomial.ts +0 -137
  176. package/src/sets/discreteSet.js +0 -30
  177. package/src/sets/discreteSet.ts +0 -30
  178. package/src/sets/intervals/intervals.ts +0 -122
  179. package/src/sets/intervals/union.ts +0 -0
  180. package/src/sets/mathSet.js +0 -11
  181. package/src/sets/mathSet.ts +0 -12
  182. package/src/sets/mathSetInterface.js +0 -2
  183. package/src/sets/mathSetInterface.ts +0 -10
  184. package/src/tree/latexParser/latexParse.js +0 -117
  185. package/src/tree/nodes/functions/functionNode.ts +0 -18
  186. package/src/tree/nodes/functions/oppositeNode.js +0 -30
  187. package/src/tree/nodes/functions/oppositeNode.ts +0 -12
  188. package/src/tree/nodes/functions/sqrtNode.js +0 -33
  189. package/src/tree/nodes/functions/sqrtNode.ts +0 -12
  190. package/src/tree/nodes/node.ts +0 -12
  191. package/src/tree/nodes/numbers/numberNode.js +0 -16
  192. package/src/tree/nodes/numbers/numberNode.ts +0 -16
  193. package/src/tree/nodes/operators/addNode.js +0 -33
  194. package/src/tree/nodes/operators/addNode.ts +0 -13
  195. package/src/tree/nodes/operators/divideNode.js +0 -34
  196. package/src/tree/nodes/operators/divideNode.ts +0 -16
  197. package/src/tree/nodes/operators/equalNode.js +0 -30
  198. package/src/tree/nodes/operators/equalNode.ts +0 -11
  199. package/src/tree/nodes/operators/fractionNode.js +0 -34
  200. package/src/tree/nodes/operators/fractionNode.ts +0 -16
  201. package/src/tree/nodes/operators/multiplyNode.js +0 -30
  202. package/src/tree/nodes/operators/multiplyNode.ts +0 -12
  203. package/src/tree/nodes/operators/operatorNode.ts +0 -36
  204. package/src/tree/nodes/operators/oppositeNode.js +0 -18
  205. package/src/tree/nodes/operators/powerNode.js +0 -30
  206. package/src/tree/nodes/operators/powerNode.ts +0 -12
  207. package/src/tree/nodes/operators/substractNode.js +0 -30
  208. package/src/tree/nodes/operators/substractNode.ts +0 -11
  209. package/src/tree/nodes/variables/variableNode.js +0 -17
  210. package/src/tree/nodes/variables/variableNode.ts +0 -15
  211. package/src/tree/parsers/derivateParser.ts +0 -66
  212. package/src/tree/parsers/latexParser.ts +0 -122
  213. package/src/utils/coin.ts +0 -3
  214. package/src/utils/random.ts +0 -3
  215. package/src/utils/randomIn.js +0 -7
  216. package/src/utils/shuffle.js +0 -24
  217. package/src/utils/shuffle.ts +0 -11
  218. package/tsconfig.json +0 -110
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAddAndSubQuestions = exports.addAndSubExercise = void 0;
4
+ const randint_1 = require("../../mathutils/random/randint");
5
+ const latexParser_1 = require("../../tree/parsers/latexParser");
6
+ const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
7
+ const addNode_1 = require("../../tree/nodes/operators/addNode");
8
+ const getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
9
+ /**
10
+ * a±b±c±d
11
+ */
12
+ exports.addAndSubExercise = {
13
+ id: "addAndSub",
14
+ connector: "=",
15
+ instruction: "Calculer :",
16
+ label: "Additions et soustractions",
17
+ levels: ["6", "5"],
18
+ section: "Calculs",
19
+ isSingleStep: true,
20
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getAddAndSubQuestions, nb),
21
+ };
22
+ function getAddAndSubQuestions() {
23
+ const nbOperations = (0, randint_1.randint)(2, 4);
24
+ const numbers = [];
25
+ for (let i = 0; i < nbOperations + 1; i++) {
26
+ numbers.push((0, randint_1.randint)(-15, 15, [0]));
27
+ }
28
+ const allNumbersNodes = numbers.map((nb) => new numberNode_1.NumberNode(nb));
29
+ let statementTree = new addNode_1.AddNode(allNumbersNodes[0], allNumbersNodes[1]);
30
+ for (let i = 2; i < allNumbersNodes.length; i++) {
31
+ statementTree = new addNode_1.AddNode(statementTree, allNumbersNodes[i]);
32
+ }
33
+ const answer = numbers.reduce((a, b) => a + b) + "";
34
+ const question = {
35
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
36
+ answer: answer,
37
+ };
38
+ return question;
39
+ }
40
+ exports.getAddAndSubQuestions = getAddAndSubQuestions;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFractionAndIntegerDivision = exports.fractionAndIntegerDivision = void 0;
4
+ const randint_1 = require("../../../mathutils/random/randint");
5
+ const integer_1 = require("../../../numbers/integer/integer");
6
+ const rational_1 = require("../../../numbers/rationals/rational");
7
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
8
+ const divideNode_1 = require("../../../tree/nodes/operators/divideNode");
9
+ const random_1 = require("../../../utils/random");
10
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
11
+ exports.fractionAndIntegerDivision = {
12
+ id: "fractionAndIntegerDivision",
13
+ connector: "=",
14
+ instruction: "Calculer la forme irréductible :",
15
+ label: "Division d'un entier et d'une fraction",
16
+ levels: ["4", "3", "2", "1"],
17
+ isSingleStep: false,
18
+ section: "Fractions",
19
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionAndIntegerDivision, nb),
20
+ };
21
+ function getFractionAndIntegerDivision() {
22
+ const rational = rational_1.RationalConstructor.randomIrreductible();
23
+ const integer = new integer_1.Integer((0, randint_1.randint)(-10, 11, [0]));
24
+ const integerFirst = (0, random_1.random)([0, 1]);
25
+ const statementTree = integerFirst
26
+ ? new divideNode_1.DivideNode(integer.toTree(), rational.toTree())
27
+ : new divideNode_1.DivideNode(rational.toTree(), integer.toTree());
28
+ const answerTree = integerFirst ? integer.divide(rational).toTree() : rational.divide(integer).toTree();
29
+ const question = {
30
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
31
+ answer: (0, latexParser_1.latexParser)(answerTree),
32
+ };
33
+ return question;
34
+ }
35
+ exports.getFractionAndIntegerDivision = getFractionAndIntegerDivision;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFractionAndIntegerProduct = exports.fractionAndIntegerProduct = void 0;
4
+ const randint_1 = require("../../../mathutils/random/randint");
5
+ const integer_1 = require("../../../numbers/integer/integer");
6
+ const rational_1 = require("../../../numbers/rationals/rational");
7
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
8
+ const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
9
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
10
+ exports.fractionAndIntegerProduct = {
11
+ id: "fractionAndIntegerProduct",
12
+ connector: "=",
13
+ instruction: "Calculer la forme irréductible :",
14
+ label: "Produit d'un entier et d'une fraction",
15
+ levels: ["4", "3", "2", "1"],
16
+ isSingleStep: false,
17
+ section: "Fractions",
18
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionAndIntegerProduct, nb),
19
+ };
20
+ function getFractionAndIntegerProduct() {
21
+ const rational = rational_1.RationalConstructor.randomIrreductible();
22
+ const integer = new integer_1.Integer((0, randint_1.randint)(-10, 11, [0]));
23
+ const statementTree = new multiplyNode_1.MultiplyNode(rational.toTree(), integer.toTree()).shuffle();
24
+ const answerTree = rational.multiply(integer).toTree();
25
+ const question = {
26
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
27
+ answer: (0, latexParser_1.latexParser)(answerTree),
28
+ };
29
+ return question;
30
+ }
31
+ exports.getFractionAndIntegerProduct = getFractionAndIntegerProduct;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFractionAndIntegerSum = exports.fractionAndIntegerSum = void 0;
4
+ const randint_1 = require("../../../mathutils/random/randint");
5
+ const integer_1 = require("../../../numbers/integer/integer");
6
+ const rational_1 = require("../../../numbers/rationals/rational");
7
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
8
+ const addNode_1 = require("../../../tree/nodes/operators/addNode");
9
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
10
+ exports.fractionAndIntegerSum = {
11
+ id: "fractionAndIntegerSum",
12
+ connector: "=",
13
+ instruction: "Calculer la forme irréductible :",
14
+ label: "Somme d'un entier et d'une fraction",
15
+ levels: ["4", "3", "2", "1"],
16
+ isSingleStep: false,
17
+ section: "Fractions",
18
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionAndIntegerSum, nb),
19
+ };
20
+ function getFractionAndIntegerSum() {
21
+ const rational = rational_1.RationalConstructor.randomIrreductible();
22
+ const integer = new integer_1.Integer((0, randint_1.randint)(-10, 11, [0]));
23
+ const statementTree = new addNode_1.AddNode(rational.toTree(), integer.toTree());
24
+ statementTree.shuffle();
25
+ const answerTree = rational.add(integer).toTree();
26
+ const question = {
27
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
28
+ answer: (0, latexParser_1.latexParser)(answerTree),
29
+ };
30
+ return question;
31
+ }
32
+ exports.getFractionAndIntegerSum = getFractionAndIntegerSum;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFractionsDivision = exports.fractionsDivision = void 0;
4
+ const rational_1 = require("../../../numbers/rationals/rational");
5
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
6
+ const divideNode_1 = require("../../../tree/nodes/operators/divideNode");
7
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
8
+ exports.fractionsDivision = {
9
+ id: "fractionsDivision",
10
+ connector: "=",
11
+ instruction: "Calculer la forme irréductible :",
12
+ label: "Divisions de fractions",
13
+ levels: ["4", "3", "2", "1"],
14
+ section: "Fractions",
15
+ isSingleStep: false,
16
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionsDivision, nb),
17
+ };
18
+ function getFractionsDivision() {
19
+ const rational = rational_1.RationalConstructor.randomIrreductible();
20
+ const rational2 = rational_1.RationalConstructor.randomIrreductible();
21
+ const statementTree = new divideNode_1.DivideNode(rational.toTree(), rational2.toTree());
22
+ const answerTree = rational.divide(rational2).toTree();
23
+ const question = {
24
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
25
+ answer: (0, latexParser_1.latexParser)(answerTree),
26
+ };
27
+ return question;
28
+ }
29
+ exports.getFractionsDivision = getFractionsDivision;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFractionsProduct = exports.fractionsProduct = void 0;
4
+ const rational_1 = require("../../../numbers/rationals/rational");
5
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
6
+ const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
7
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
8
+ exports.fractionsProduct = {
9
+ id: "fractionsProduct",
10
+ connector: "=",
11
+ instruction: "Calculer la forme irréductible :",
12
+ label: "Produits de fractions",
13
+ levels: ["4", "3", "2", "1"],
14
+ section: "Fractions",
15
+ isSingleStep: false,
16
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionsProduct, nb),
17
+ };
18
+ function getFractionsProduct() {
19
+ const rational = rational_1.RationalConstructor.randomIrreductible();
20
+ const rational2 = rational_1.RationalConstructor.randomIrreductible();
21
+ const statementTree = new multiplyNode_1.MultiplyNode(rational.toTree(), rational2.toTree());
22
+ const answerTree = rational.multiply(rational2).toTree();
23
+ const question = {
24
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
25
+ answer: (0, latexParser_1.latexParser)(answerTree),
26
+ };
27
+ return question;
28
+ }
29
+ exports.getFractionsProduct = getFractionsProduct;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFractionsSum = exports.fractionsSum = void 0;
4
+ const rational_1 = require("../../../numbers/rationals/rational");
5
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
6
+ const addNode_1 = require("../../../tree/nodes/operators/addNode");
7
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
8
+ exports.fractionsSum = {
9
+ id: "fractionsSum",
10
+ connector: "=",
11
+ instruction: "Calculer la forme irréductible :",
12
+ label: "Sommes de fractions",
13
+ levels: ["4", "3", "2", "1"],
14
+ section: "Fractions",
15
+ isSingleStep: false,
16
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionsSum, nb),
17
+ };
18
+ function getFractionsSum() {
19
+ const rational = rational_1.RationalConstructor.randomIrreductible();
20
+ const rational2 = rational_1.RationalConstructor.randomIrreductible();
21
+ const statementTree = new addNode_1.AddNode(rational.toTree(), rational2.toTree());
22
+ const answerTree = rational.add(rational2).toTree();
23
+ const question = {
24
+ startStatement: (0, latexParser_1.latexParser)(statementTree),
25
+ answer: (0, latexParser_1.latexParser)(answerTree),
26
+ };
27
+ return question;
28
+ }
29
+ exports.getFractionsSum = getFractionsSum;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSimplifyFraction = exports.simplifyFraction = void 0;
4
+ const rational_1 = require("../../../numbers/rationals/rational");
5
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
6
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
7
+ exports.simplifyFraction = {
8
+ id: 'simplifyFrac',
9
+ connector: '=',
10
+ instruction: 'Simplifier :',
11
+ label: 'Simplification de fractions',
12
+ levels: ['4', '3', '2'],
13
+ isSingleStep: false,
14
+ section: 'Fractions',
15
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getSimplifyFraction, nb),
16
+ };
17
+ function getSimplifyFraction() {
18
+ const rational = rational_1.RationalConstructor.randomSimplifiable(10);
19
+ const question = {
20
+ startStatement: (0, latexParser_1.latexParser)(rational.toTree()),
21
+ answer: (0, latexParser_1.latexParser)(rational.simplify().toTree()),
22
+ };
23
+ return question;
24
+ }
25
+ exports.getSimplifyFraction = getSimplifyFraction;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPriorityQuestions = exports.operationsPriorities = void 0;
4
+ const randint_1 = require("../../../mathutils/random/randint");
5
+ const latexParser_1 = require("../../../tree/parsers/latexParser");
6
+ const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
7
+ const addNode_1 = require("../../../tree/nodes/operators/addNode");
8
+ const divideNode_1 = require("../../../tree/nodes/operators/divideNode");
9
+ const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
10
+ const coin_1 = require("../../../utils/coin");
11
+ const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
12
+ /**
13
+ * a*b ±c±d
14
+ * a/b ±c±d
15
+ * a*b*c ± d
16
+ * a*b±c*d
17
+ * a/b ± c*d
18
+ */
19
+ exports.operationsPriorities = {
20
+ id: "operationsPriorities",
21
+ connector: "=",
22
+ instruction: "Calculer :",
23
+ label: "Priorités opératoires",
24
+ levels: ["6", "5", "4"],
25
+ section: "Calculs",
26
+ isSingleStep: true,
27
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getPriorityQuestions, nb),
28
+ };
29
+ function getPriorityQuestions() {
30
+ const type = (0, randint_1.randint)(1, 6);
31
+ let statement;
32
+ let answer = "";
33
+ let a, b, c, d;
34
+ switch (type) {
35
+ case 1: // a*b ±c±d
36
+ [c, d] = [1, 2, 3, 4].map((el) => (0, randint_1.randint)(-10, 11, [0]));
37
+ [a, b] = [1, 2].map((el) => (0, randint_1.randint)(-10, 11));
38
+ statement = (0, coin_1.coin)()
39
+ ? //a*b first ou last
40
+ new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new addNode_1.AddNode(new numberNode_1.NumberNode(c), new numberNode_1.NumberNode(d))).shuffle()
41
+ : //a*b middle
42
+ new addNode_1.AddNode(new addNode_1.AddNode(new numberNode_1.NumberNode(c), new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b))), new numberNode_1.NumberNode(d));
43
+ answer = (a * b + c + d).toString();
44
+ break;
45
+ case 2: // a/b ±c±d
46
+ [b, c, d] = [1, 2, 3].map((el) => (0, randint_1.randint)(-10, 11, [0]));
47
+ a = b * (0, randint_1.randint)(0, 11);
48
+ statement = (0, coin_1.coin)()
49
+ ? //a/b first ou last
50
+ new addNode_1.AddNode(new divideNode_1.DivideNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new addNode_1.AddNode(new numberNode_1.NumberNode(c), new numberNode_1.NumberNode(d))).shuffle()
51
+ : //a/b middle
52
+ new addNode_1.AddNode(new addNode_1.AddNode(new numberNode_1.NumberNode(c), new divideNode_1.DivideNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b))), new numberNode_1.NumberNode(d));
53
+ answer = (a / b + c + d).toString();
54
+ break;
55
+ case 3: // a*b ± c*d
56
+ [a, b, c, d] = [1, 2, 3, 4].map((el) => (0, randint_1.randint)(-10, 11));
57
+ statement = new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(c), new numberNode_1.NumberNode(d)));
58
+ answer = (a * b + c * d).toString();
59
+ break;
60
+ case 4: // a*b ± c/d
61
+ [a, b] = [1, 2].map((el) => (0, randint_1.randint)(-10, 11));
62
+ d = (0, randint_1.randint)(-10, 11, [0]);
63
+ c = d * (0, randint_1.randint)(0, 11);
64
+ statement = new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new divideNode_1.DivideNode(new numberNode_1.NumberNode(c), new numberNode_1.NumberNode(d))).shuffle();
65
+ answer = (a * b + c / d).toString();
66
+ break;
67
+ case 5: // a/b ± c/d
68
+ [b, d] = [1, 2].map((el) => (0, randint_1.randint)(-10, 11, [0]));
69
+ a = b * (0, randint_1.randint)(0, 11);
70
+ c = d * (0, randint_1.randint)(0, 11);
71
+ statement = new addNode_1.AddNode(new divideNode_1.DivideNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new divideNode_1.DivideNode(new numberNode_1.NumberNode(c), new numberNode_1.NumberNode(d)));
72
+ answer = (a / b + c / d).toString();
73
+ break;
74
+ case 5: // a*b*c ± d
75
+ [b, d] = [1, 2].map((el) => (0, randint_1.randint)(-10, 11, [0]));
76
+ a = b * (0, randint_1.randint)(0, 11);
77
+ c = d * (0, randint_1.randint)(0, 11);
78
+ statement = new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new numberNode_1.NumberNode(c)), new numberNode_1.NumberNode(d)).shuffle();
79
+ answer = (a * b * c + d).toString();
80
+ break;
81
+ }
82
+ const question = {
83
+ startStatement: (0, latexParser_1.latexParser)(statement),
84
+ answer: answer,
85
+ };
86
+ return question;
87
+ }
88
+ exports.getPriorityQuestions = getPriorityQuestions;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ // import { randint } from "../../mathutils/random/randint";
3
+ // import { latexParser } from "../../tree/parsers/latexParser";
4
+ // import { Node } from "../../tree/nodes/node";
5
+ // import { NumberNode } from "../../tree/nodes/numbers/numberNode";
6
+ // import { AddNode } from "../../tree/nodes/operators/addNode";
7
+ // import { DivideNode } from "../../tree/nodes/operators/divideNode";
8
+ // import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
9
+ // import { coin } from "../../utils/coin";
10
+ // import { Exercise, Question } from "../exercise";
11
+ // import { getDistinctQuestions } from "../utils/getDistinctQuestions";
12
+ // /**
13
+ // * a*b ±c±d
14
+ // * a/b ±c±d
15
+ // * a*b*c ± d
16
+ // * a*b±c*d
17
+ // * a/b ± c*d
18
+ // */
19
+ // export const operationsPriorities: Exercise = {
20
+ // id: "operationsPrioritiesWithoutRelative",
21
+ // connector: "=",
22
+ // instruction: "Calculer :",
23
+ // label: "Priorités opératoires (sans relatif)",
24
+ // levels: ["6", "5", "4"],
25
+ // section: "Calculs",
26
+ // isSingleStep: true,
27
+ // generator: (nb: number) => getDistinctQuestions(getPriorityQuestionsWithoutRelatif, nb),
28
+ // };
29
+ // export function getPriorityQuestionsWithoutRelatif(): Question {
30
+ // const type = randint(1, 6);
31
+ // let statement: Node;
32
+ // let answer: string = "";
33
+ // let a, b, c, d: number;
34
+ // switch (type) {
35
+ // case 1: // a*b ±c±d
36
+ // [c, d] = [1, 2, 3, 4].map((el) => randint(-10, 11, [0]));
37
+ // [a, b] = [1, 2].map((el) => randint(-10, 11));
38
+ // statement = coin()
39
+ // ? //a*b first ou last
40
+ // new AddNode(
41
+ // new MultiplyNode(new NumberNode(a), new NumberNode(b)),
42
+ // new AddNode(new NumberNode(c), new NumberNode(d))
43
+ // ).shuffle()
44
+ // : //a*b middle
45
+ // new AddNode(
46
+ // new AddNode(new NumberNode(c), new MultiplyNode(new NumberNode(a), new NumberNode(b))),
47
+ // new NumberNode(d)
48
+ // );
49
+ // answer = (a * b + c + d).toString();
50
+ // break;
51
+ // case 2: // a/b ±c±d
52
+ // [b, c, d] = [1, 2, 3].map((el) => randint(-10, 11, [0]));
53
+ // a = b * randint(0, 11);
54
+ // statement = coin()
55
+ // ? //a/b first ou last
56
+ // new AddNode(
57
+ // new DivideNode(new NumberNode(a), new NumberNode(b)),
58
+ // new AddNode(new NumberNode(c), new NumberNode(d))
59
+ // ).shuffle()
60
+ // : //a/b middle
61
+ // new AddNode(
62
+ // new AddNode(new NumberNode(c), new DivideNode(new NumberNode(a), new NumberNode(b))),
63
+ // new NumberNode(d)
64
+ // );
65
+ // answer = (a / b + c + d).toString();
66
+ // break;
67
+ // case 3: // a*b ± c*d
68
+ // [a, b, c, d] = [1, 2, 3, 4].map((el) => randint(-10, 11));
69
+ // statement = new AddNode(
70
+ // new MultiplyNode(new NumberNode(a), new NumberNode(b)),
71
+ // new MultiplyNode(new NumberNode(c), new NumberNode(d))
72
+ // );
73
+ // answer = (a * b + c * d).toString();
74
+ // break;
75
+ // case 4: // a*b ± c/d
76
+ // [a, b] = [1, 2].map((el) => randint(-10, 11));
77
+ // d = randint(-10, 11, [0]);
78
+ // c = d * randint(0, 11);
79
+ // statement = new AddNode(
80
+ // new MultiplyNode(new NumberNode(a), new NumberNode(b)),
81
+ // new DivideNode(new NumberNode(c), new NumberNode(d))
82
+ // ).shuffle();
83
+ // answer = (a * b + c / d).toString();
84
+ // break;
85
+ // case 5: // a/b ± c/d
86
+ // [b, d] = [1, 2].map((el) => randint(-10, 11, [0]));
87
+ // a = b * randint(0, 11);
88
+ // c = d * randint(0, 11);
89
+ // statement = new AddNode(
90
+ // new DivideNode(new NumberNode(a), new NumberNode(b)),
91
+ // new DivideNode(new NumberNode(c), new NumberNode(d))
92
+ // );
93
+ // answer = (a / b + c / d).toString();
94
+ // break;
95
+ // case 5: // a*b*c ± d
96
+ // [b, d] = [1, 2].map((el) => randint(-10, 11, [0]));
97
+ // a = b * randint(0, 11);
98
+ // c = d * randint(0, 11);
99
+ // statement = new AddNode(
100
+ // new MultiplyNode(new MultiplyNode(new NumberNode(a), new NumberNode(b)), new NumberNode(c)),
101
+ // new NumberNode(d)
102
+ // ).shuffle();
103
+ // answer = (a * b * c + d).toString();
104
+ // break;
105
+ // }
106
+ // const question: Question = {
107
+ // startStatement: latexParser(statement!),
108
+ // answer: answer,
109
+ // };
110
+ // return question;
111
+ // }