math-exercises 1.1.1 → 1.2.0

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 (125) hide show
  1. package/package.json +1 -1
  2. package/src/exercises/calcul/addAndSub.js +19 -13
  3. package/src/exercises/calcul/addAndSub.ts +31 -23
  4. package/src/exercises/calcul/fractions/fractionAndIntegerDivision.js +35 -0
  5. package/src/exercises/calcul/fractions/fractionAndIntegerDivision.ts +38 -0
  6. package/src/exercises/calcul/fractions/fractionAndIntegerProduct.js +31 -0
  7. package/src/exercises/calcul/fractions/fractionAndIntegerProduct.ts +32 -0
  8. package/src/exercises/calcul/fractions/fractionAndIntegerSum.js +32 -0
  9. package/src/exercises/calcul/fractions/fractionAndIntegerSum.ts +31 -0
  10. package/src/exercises/calcul/fractions/fractionsDivision.js +29 -0
  11. package/src/exercises/calcul/fractions/fractionsDivision.ts +30 -0
  12. package/src/exercises/calcul/fractions/fractionsProduct.js +29 -0
  13. package/src/exercises/calcul/fractions/fractionsProduct.ts +29 -0
  14. package/src/exercises/calcul/fractions/fractionsSum.js +29 -0
  15. package/src/exercises/calcul/fractions/fractionsSum.ts +28 -0
  16. package/src/exercises/calcul/fractions/simplifyFraction.js +25 -0
  17. package/src/exercises/calcul/fractions/simplifyFraction.ts +24 -0
  18. package/src/exercises/calcul/operationsPriorities.js +89 -0
  19. package/src/exercises/calcul/operationsPriorities.ts +118 -0
  20. package/src/exercises/calcul/rounding/roundToUnit.js +70 -0
  21. package/src/exercises/calcul/rounding/roundToUnit.ts +68 -0
  22. package/src/exercises/calculLitteral/distributivity/allIdentities.js +1 -0
  23. package/src/exercises/calculLitteral/distributivity/allIdentities.ts +1 -0
  24. package/src/exercises/calculLitteral/distributivity/doubleDistributivity.js +1 -0
  25. package/src/exercises/calculLitteral/distributivity/doubleDistributivity.ts +1 -0
  26. package/src/exercises/calculLitteral/distributivity/firstIdentity.js +1 -0
  27. package/src/exercises/calculLitteral/distributivity/firstIdentity.ts +1 -0
  28. package/src/exercises/calculLitteral/distributivity/secondIdentity.js +1 -0
  29. package/src/exercises/calculLitteral/distributivity/secondIdentity.ts +1 -0
  30. package/src/exercises/calculLitteral/distributivity/simpleDistributivity.js +1 -0
  31. package/src/exercises/calculLitteral/distributivity/simpleDistributivity.ts +1 -0
  32. package/src/exercises/calculLitteral/distributivity/thirdIdentity.js +1 -0
  33. package/src/exercises/calculLitteral/distributivity/thirdIdentity.ts +1 -0
  34. package/src/exercises/calculLitteral/equation/equationType1Exercise.js +1 -0
  35. package/src/exercises/calculLitteral/equation/equationType1Exercise.ts +1 -0
  36. package/src/exercises/calculLitteral/equation/equationType2Exercise.js +1 -0
  37. package/src/exercises/calculLitteral/equation/equationType2Exercise.ts +1 -0
  38. package/src/exercises/calculLitteral/equation/equationType3Exercise.js +1 -0
  39. package/src/exercises/calculLitteral/equation/equationType3Exercise.ts +1 -0
  40. package/src/exercises/calculLitteral/equation/equationType4Exercise.js +1 -0
  41. package/src/exercises/calculLitteral/equation/equationType4Exercise.ts +1 -0
  42. package/src/exercises/calculLitteral/factorisation/factoType1Exercise.js +2 -6
  43. package/src/exercises/calculLitteral/factorisation/factoType1Exercise.ts +2 -6
  44. package/src/exercises/calculLitteral/reduction.ts +27 -0
  45. package/src/exercises/exercise.ts +1 -0
  46. package/src/exercises/exercises.js +54 -0
  47. package/src/exercises/exercises.ts +58 -0
  48. package/src/exercises/powers/powersDivision.js +46 -0
  49. package/src/exercises/powers/powersDivision.ts +51 -0
  50. package/src/exercises/powers/powersOfTenToDecimal.js +33 -0
  51. package/src/exercises/powers/powersOfTenToDecimal.ts +37 -0
  52. package/src/exercises/powers/powersPower.js +45 -0
  53. package/src/exercises/powers/powersPower.ts +55 -0
  54. package/src/exercises/powers/powersProduct.js +46 -0
  55. package/src/exercises/powers/powersProduct.ts +51 -0
  56. package/src/exercises/powers/scientificToDecimal.js +38 -0
  57. package/src/exercises/powers/scientificToDecimal.ts +44 -0
  58. package/src/exercises/squareRoots/simpifySquareRoot.js +1 -0
  59. package/src/exercises/squareRoots/simpifySquareRoot.ts +1 -0
  60. package/src/index.js +5 -0
  61. package/src/index.ts +5 -16
  62. package/src/mathutils/arithmetic/coprimesOf.js +13 -0
  63. package/src/mathutils/arithmetic/coprimesOf.ts +9 -0
  64. package/src/mathutils/arithmetic/dividersOf.ts +7 -0
  65. package/src/mathutils/arithmetic/lcd.js +12 -0
  66. package/src/mathutils/arithmetic/lcd.ts +7 -0
  67. package/src/mathutils/arithmetic/nonCoprimesOf.ts +9 -0
  68. package/src/mathutils/arithmetic/nonDividersOf.ts +12 -0
  69. package/src/mathutils/decimals/decimalPartLengthOf.ts +10 -0
  70. package/src/mathutils/random/randint.js +11 -2
  71. package/src/mathutils/random/randint.ts +10 -2
  72. package/src/numbers/decimals/decimal.js +144 -0
  73. package/src/numbers/decimals/decimal.ts +140 -0
  74. package/src/numbers/integer/integer.js +61 -4
  75. package/src/numbers/integer/integer.ts +58 -7
  76. package/src/numbers/integer/power.js +53 -0
  77. package/src/numbers/integer/power.ts +49 -0
  78. package/src/numbers/nombre.js +3 -2
  79. package/src/numbers/nombre.ts +2 -0
  80. package/src/numbers/rationals/rational.js +96 -10
  81. package/src/numbers/rationals/rational.ts +81 -15
  82. package/src/numbers/reals/real.js +2 -0
  83. package/src/numbers/reals/real.ts +3 -1
  84. package/src/numbers/reals/squareRoot.ts +3 -10
  85. package/src/polynomials/affine.ts +2 -6
  86. package/src/polynomials/polynomial.js +4 -13
  87. package/src/polynomials/polynomial.ts +8 -25
  88. package/src/tree/latexParser/latexParse.js +81 -34
  89. package/src/tree/latexParser/latexParse.ts +85 -39
  90. package/src/tree/nodes/functions/functionNode.js +19 -0
  91. package/src/tree/nodes/functions/functionNode.ts +18 -0
  92. package/src/tree/nodes/functions/oppositeNode.js +30 -0
  93. package/src/tree/nodes/functions/oppositeNode.ts +12 -0
  94. package/src/tree/nodes/functions/sqrtNode.js +24 -9
  95. package/src/tree/nodes/functions/sqrtNode.ts +5 -9
  96. package/src/tree/nodes/node.ts +1 -3
  97. package/src/tree/nodes/numbers/numberNode.js +3 -6
  98. package/src/tree/nodes/numbers/numberNode.ts +4 -7
  99. package/src/tree/nodes/operators/addNode.js +23 -8
  100. package/src/tree/nodes/operators/addNode.ts +3 -7
  101. package/src/tree/nodes/operators/divideNode.js +21 -9
  102. package/src/tree/nodes/operators/divideNode.ts +4 -11
  103. package/src/tree/nodes/operators/equalNode.js +20 -8
  104. package/src/tree/nodes/operators/equalNode.ts +3 -9
  105. package/src/tree/nodes/operators/fractionNode.js +34 -0
  106. package/src/tree/nodes/operators/fractionNode.ts +16 -0
  107. package/src/tree/nodes/operators/multiplyNode.js +20 -8
  108. package/src/tree/nodes/operators/multiplyNode.ts +3 -9
  109. package/src/tree/nodes/operators/operatorNode.js +35 -0
  110. package/src/tree/nodes/operators/operatorNode.ts +35 -2
  111. package/src/tree/nodes/operators/powerNode.js +20 -8
  112. package/src/tree/nodes/operators/powerNode.ts +3 -8
  113. package/src/tree/nodes/operators/substractNode.js +20 -8
  114. package/src/tree/nodes/operators/substractNode.ts +3 -9
  115. package/src/tree/nodes/variables/variableNode.js +1 -4
  116. package/src/tree/nodes/variables/variableNode.ts +4 -7
  117. package/src/utils/coin.js +7 -0
  118. package/src/utils/coin.ts +3 -0
  119. package/src/utils/shuffle.js +15 -4
  120. package/src/utils/shuffle.ts +7 -5
  121. package/src/exercises/calcul/priority.ts +0 -33
  122. package/src/expression/expression.js +0 -9
  123. package/src/expression/expression.ts +0 -13
  124. package/src/numbers/rationals/division.ts +0 -0
  125. package/src/tree/nodes/operators/oppositeNode.ts +0 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "Générateurs d'exercices et questions mathématiques en latex",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,34 +1,40 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
3
  exports.getAddAndSubQuestions = exports.addAndSubExercise = void 0;
4
- var latex_1 = require("../../latex/latex");
5
4
  var randint_1 = require("../../mathutils/random/randint");
6
- var intervals_1 = require("../../sets/intervals/intervals");
5
+ var latexParse_1 = require("../../tree/latexParser/latexParse");
6
+ var numberNode_1 = require("../../tree/nodes/numbers/numberNode");
7
+ var addNode_1 = require("../../tree/nodes/operators/addNode");
7
8
  var getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
8
9
  /**
9
10
  * a±b±c±d
10
11
  */
11
12
  exports.addAndSubExercise = {
13
+ id: "addAndSub",
12
14
  connector: "=",
13
15
  instruction: "Calculer :",
14
16
  label: "Additions et soustractions",
15
17
  levels: ["6", "5"],
16
18
  section: "Calculs",
19
+ isSingleStep: true,
17
20
  generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getAddAndSubQuestions, nb); }
18
21
  };
19
22
  function getAddAndSubQuestions() {
20
- var nbOfTerms = (0, randint_1.randint)(3, 5);
21
- var max = 20;
22
- var terms = [];
23
- var interval = new intervals_1.Interval("[[".concat(-max, "; ").concat(max, "]]")).exclude(0);
24
- for (var i = 0; i < nbOfTerms; i++) {
25
- terms.push(interval.getRandomElement());
23
+ var nbOperations = (0, randint_1.randint)(2, 4);
24
+ var numbers = [];
25
+ for (var i = 0; i < nbOperations + 1; i++) {
26
+ numbers.push((0, randint_1.randint)(-15, 15, [0]));
26
27
  }
27
- var tex = new latex_1.Latex("");
28
- terms.forEach(function (term) { return tex.add(term); });
29
- var statement = tex.toTex();
30
- var answer = terms.reduce(function (acc, curr) { return acc + curr; }).toString();
31
- var question = { statement: statement, answer: answer };
28
+ var allNumbersNodes = numbers.map(function (nb) { return new numberNode_1.NumberNode(nb); });
29
+ var statementTree = new addNode_1.AddNode(allNumbersNodes[0], allNumbersNodes[1]);
30
+ for (var i = 2; i < allNumbersNodes.length; i++) {
31
+ statementTree = new addNode_1.AddNode(statementTree, allNumbersNodes[i]);
32
+ }
33
+ var answer = numbers.reduce(function (a, b) { return a + b; }) + "";
34
+ var question = {
35
+ statement: (0, latexParse_1.latexParse)(statementTree),
36
+ answer: answer
37
+ };
32
38
  return question;
33
39
  }
34
40
  exports.getAddAndSubQuestions = getAddAndSubQuestions;
@@ -1,32 +1,40 @@
1
1
  import { randint } from "../../mathutils/random/randint";
2
2
  import { Interval } from "../../sets/intervals/intervals";
3
+ import { latexParse } from "../../tree/latexParser/latexParse";
4
+ import { NumberNode } from "../../tree/nodes/numbers/numberNode";
5
+ import { AddNode } from "../../tree/nodes/operators/addNode";
3
6
  import { Exercise, Question } from "../exercise";
4
7
  import { getDistinctQuestions } from "../utils/getDistinctQuestions";
5
8
 
6
9
  /**
7
10
  * a±b±c±d
8
11
  */
9
- // export const addAndSubExercise: Exercise = {
10
- // connector: "=",
11
- // instruction: "Calculer :",
12
- // label: "Additions et soustractions",
13
- // levels: ["6", "5"],
14
- // section: "Calculs",
15
- // generator: (nb: number) => getDistinctQuestions(getAddAndSubQuestions, nb),
16
- // };
12
+ export const addAndSubExercise: Exercise = {
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: number) => getDistinctQuestions(getAddAndSubQuestions, nb),
21
+ };
17
22
 
18
- // export function getAddAndSubQuestions(): Question {
19
- // const nbOfTerms = randint(3, 5);
20
- // const max = 20;
21
- // const terms = [];
22
- // const interval = new Interval(`[[${-max}; ${max}]]`).exclude(0);
23
- // for (let i = 0; i < nbOfTerms; i++) {
24
- // terms.push(interval.getRandomElement());
25
- // }
26
- // const tex = new Latex("");
27
- // terms.forEach((term) => tex.add(term));
28
- // const statement = tex.toTex();
29
- // const answer = terms.reduce((acc, curr) => acc + curr).toString();
30
- // const question: Question = { statement, answer };
31
- // return question;
32
- // }
23
+ export function getAddAndSubQuestions(): Question {
24
+ const nbOperations = randint(2, 4);
25
+ const numbers = [];
26
+ for (let i = 0; i < nbOperations + 1; i++) {
27
+ numbers.push(randint(-15, 15, [0]));
28
+ }
29
+ const allNumbersNodes = numbers.map((nb) => new NumberNode(nb));
30
+ let statementTree = new AddNode(allNumbersNodes[0], allNumbersNodes[1]);
31
+ for (let i = 2; i < allNumbersNodes.length; i++) {
32
+ statementTree = new AddNode(statementTree, allNumbersNodes[i]);
33
+ }
34
+ const answer = numbers.reduce((a, b) => a + b) + "";
35
+ const question: Question = {
36
+ statement: latexParse(statementTree),
37
+ answer: answer,
38
+ };
39
+ return question;
40
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getFractionAndIntegerDivision = exports.fractionAndIntegerDivision = void 0;
4
+ var randint_1 = require("../../../mathutils/random/randint");
5
+ var integer_1 = require("../../../numbers/integer/integer");
6
+ var rational_1 = require("../../../numbers/rationals/rational");
7
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
8
+ var divideNode_1 = require("../../../tree/nodes/operators/divideNode");
9
+ var random_1 = require("../../../utils/random");
10
+ var getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
11
+ exports.fractionAndIntegerDivision = {
12
+ id: "fractionAndIntegerDivision",
13
+ connector: "=",
14
+ instruction: "Calculer la forme irréductible :",
15
+ label: "Sommes de fractions",
16
+ levels: ["4", "3", "2", "1"],
17
+ isSingleStep: false,
18
+ section: "Fractions",
19
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionAndIntegerDivision, nb); }
20
+ };
21
+ function getFractionAndIntegerDivision() {
22
+ var rational = rational_1.RationalConstructor.randomIrreductible();
23
+ var integer = new integer_1.Integer((0, randint_1.randint)(-10, 11, [0]));
24
+ var integerFirst = (0, random_1.random)([0, 1]);
25
+ var statementTree = integerFirst
26
+ ? new divideNode_1.DivideNode(integer.toTree(), rational.toTree())
27
+ : new divideNode_1.DivideNode(rational.toTree(), integer.toTree());
28
+ var answerTree = integerFirst ? integer.divide(rational).toTree() : rational.divide(integer).toTree();
29
+ var question = {
30
+ statement: (0, latexParse_1.latexParse)(statementTree),
31
+ answer: (0, latexParse_1.latexParse)(answerTree)
32
+ };
33
+ return question;
34
+ }
35
+ exports.getFractionAndIntegerDivision = getFractionAndIntegerDivision;
@@ -0,0 +1,38 @@
1
+ import { randint } from "../../../mathutils/random/randint";
2
+ import { Integer } from "../../../numbers/integer/integer";
3
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
4
+ import { latexParse } from "../../../tree/latexParser/latexParse";
5
+ import { AddNode } from "../../../tree/nodes/operators/addNode";
6
+ import { DivideNode } from "../../../tree/nodes/operators/divideNode";
7
+ import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode";
8
+ import { random } from "../../../utils/random";
9
+ import { Exercise, Question } from "../../exercise";
10
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
11
+
12
+ export const fractionAndIntegerDivision: Exercise = {
13
+ id: "fractionAndIntegerDivision",
14
+ connector: "=",
15
+ instruction: "Calculer la forme irréductible :",
16
+ label: "Sommes de fractions",
17
+ levels: ["4", "3", "2", "1"],
18
+ isSingleStep: false,
19
+ section: "Fractions",
20
+ generator: (nb: number) => getDistinctQuestions(getFractionAndIntegerDivision, nb),
21
+ };
22
+
23
+ export function getFractionAndIntegerDivision(): Question {
24
+ const rational = RationalConstructor.randomIrreductible();
25
+ const integer = new Integer(randint(-10, 11, [0]));
26
+
27
+ const integerFirst = random([0, 1]);
28
+ const statementTree = integerFirst
29
+ ? new DivideNode(integer.toTree(), rational.toTree())
30
+ : new DivideNode(rational.toTree(), integer.toTree());
31
+
32
+ const answerTree = integerFirst ? integer.divide(rational).toTree() : rational.divide(integer).toTree();
33
+ const question: Question = {
34
+ statement: latexParse(statementTree),
35
+ answer: latexParse(answerTree),
36
+ };
37
+ return question;
38
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getFractionAndIntegerProduct = exports.fractionAndIntegerProduct = void 0;
4
+ var randint_1 = require("../../../mathutils/random/randint");
5
+ var integer_1 = require("../../../numbers/integer/integer");
6
+ var rational_1 = require("../../../numbers/rationals/rational");
7
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
8
+ var multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
9
+ var getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
10
+ exports.fractionAndIntegerProduct = {
11
+ id: "fractionAndIntegerProduct",
12
+ connector: "=",
13
+ instruction: "Calculer la forme irréductible :",
14
+ label: "Sommes de fractions",
15
+ levels: ["4", "3", "2", "1"],
16
+ isSingleStep: false,
17
+ section: "Fractions",
18
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionAndIntegerProduct, nb); }
19
+ };
20
+ function getFractionAndIntegerProduct() {
21
+ var rational = rational_1.RationalConstructor.randomIrreductible();
22
+ var integer = new integer_1.Integer((0, randint_1.randint)(-10, 11, [0]));
23
+ var statementTree = new multiplyNode_1.MultiplyNode(rational.toTree(), integer.toTree()).shuffle();
24
+ var answerTree = rational.multiply(integer).toTree();
25
+ var question = {
26
+ statement: (0, latexParse_1.latexParse)(statementTree),
27
+ answer: (0, latexParse_1.latexParse)(answerTree)
28
+ };
29
+ return question;
30
+ }
31
+ exports.getFractionAndIntegerProduct = getFractionAndIntegerProduct;
@@ -0,0 +1,32 @@
1
+ import { randint } from "../../../mathutils/random/randint";
2
+ import { Integer } from "../../../numbers/integer/integer";
3
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
4
+ import { latexParse } from "../../../tree/latexParser/latexParse";
5
+ import { AddNode } from "../../../tree/nodes/operators/addNode";
6
+ import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode";
7
+ import { Exercise, Question } from "../../exercise";
8
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
9
+
10
+ export const fractionAndIntegerProduct: Exercise = {
11
+ id: "fractionAndIntegerProduct",
12
+ connector: "=",
13
+ instruction: "Calculer la forme irréductible :",
14
+ label: "Sommes de fractions",
15
+ levels: ["4", "3", "2", "1"],
16
+ isSingleStep: false,
17
+ section: "Fractions",
18
+ generator: (nb: number) => getDistinctQuestions(getFractionAndIntegerProduct, nb),
19
+ };
20
+
21
+ export function getFractionAndIntegerProduct(): Question {
22
+ const rational = RationalConstructor.randomIrreductible();
23
+ const integer = new Integer(randint(-10, 11, [0]));
24
+ const statementTree = new MultiplyNode(rational.toTree(), integer.toTree()).shuffle();
25
+
26
+ const answerTree = rational.multiply(integer).toTree();
27
+ const question: Question = {
28
+ statement: latexParse(statementTree),
29
+ answer: latexParse(answerTree),
30
+ };
31
+ return question;
32
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getFractionAndIntegerSum = exports.fractionAndIntegerSum = void 0;
4
+ var randint_1 = require("../../../mathutils/random/randint");
5
+ var integer_1 = require("../../../numbers/integer/integer");
6
+ var rational_1 = require("../../../numbers/rationals/rational");
7
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
8
+ var addNode_1 = require("../../../tree/nodes/operators/addNode");
9
+ var getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
10
+ exports.fractionAndIntegerSum = {
11
+ id: "fractionAndIntegerSum",
12
+ connector: "=",
13
+ instruction: "Calculer la forme irréductible :",
14
+ label: "Sommes de fractions",
15
+ levels: ["4", "3", "2", "1"],
16
+ isSingleStep: false,
17
+ section: "Fractions",
18
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionAndIntegerSum, nb); }
19
+ };
20
+ function getFractionAndIntegerSum() {
21
+ var rational = rational_1.RationalConstructor.randomIrreductible();
22
+ var integer = new integer_1.Integer((0, randint_1.randint)(-10, 11, [0]));
23
+ var statementTree = new addNode_1.AddNode(rational.toTree(), integer.toTree());
24
+ statementTree.shuffle();
25
+ var answerTree = rational.add(integer).toTree();
26
+ var question = {
27
+ statement: (0, latexParse_1.latexParse)(statementTree),
28
+ answer: (0, latexParse_1.latexParse)(answerTree)
29
+ };
30
+ return question;
31
+ }
32
+ exports.getFractionAndIntegerSum = getFractionAndIntegerSum;
@@ -0,0 +1,31 @@
1
+ import { randint } from "../../../mathutils/random/randint";
2
+ import { Integer } from "../../../numbers/integer/integer";
3
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
4
+ import { latexParse } from "../../../tree/latexParser/latexParse";
5
+ import { AddNode } from "../../../tree/nodes/operators/addNode";
6
+ import { Exercise, Question } from "../../exercise";
7
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
8
+
9
+ export const fractionAndIntegerSum: Exercise = {
10
+ id: "fractionAndIntegerSum",
11
+ connector: "=",
12
+ instruction: "Calculer la forme irréductible :",
13
+ label: "Sommes de fractions",
14
+ levels: ["4", "3", "2", "1"],
15
+ isSingleStep: false,
16
+ section: "Fractions",
17
+ generator: (nb: number) => getDistinctQuestions(getFractionAndIntegerSum, nb),
18
+ };
19
+
20
+ export function getFractionAndIntegerSum(): Question {
21
+ const rational = RationalConstructor.randomIrreductible();
22
+ const integer = new Integer(randint(-10, 11, [0]));
23
+ const statementTree = new AddNode(rational.toTree(), integer.toTree());
24
+ statementTree.shuffle();
25
+ const answerTree = rational.add(integer).toTree();
26
+ const question: Question = {
27
+ statement: latexParse(statementTree),
28
+ answer: latexParse(answerTree),
29
+ };
30
+ return question;
31
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getFractionsDivision = exports.fractionsDivision = void 0;
4
+ var rational_1 = require("../../../numbers/rationals/rational");
5
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
6
+ var divideNode_1 = require("../../../tree/nodes/operators/divideNode");
7
+ var 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: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionsDivision, nb); }
17
+ };
18
+ function getFractionsDivision() {
19
+ var rational = rational_1.RationalConstructor.randomIrreductible();
20
+ var rational2 = rational_1.RationalConstructor.randomIrreductible();
21
+ var statementTree = new divideNode_1.DivideNode(rational.toTree(), rational2.toTree());
22
+ var answerTree = rational.divide(rational2).toTree();
23
+ var question = {
24
+ statement: (0, latexParse_1.latexParse)(statementTree),
25
+ answer: (0, latexParse_1.latexParse)(answerTree)
26
+ };
27
+ return question;
28
+ }
29
+ exports.getFractionsDivision = getFractionsDivision;
@@ -0,0 +1,30 @@
1
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
2
+ import { latexParse } from "../../../tree/latexParser/latexParse";
3
+ import { AddNode } from "../../../tree/nodes/operators/addNode";
4
+ import { DivideNode } from "../../../tree/nodes/operators/divideNode";
5
+ import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode";
6
+ import { Exercise, Question } from "../../exercise";
7
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
8
+
9
+ export const fractionsDivision: Exercise = {
10
+ id: "fractionsDivision",
11
+ connector: "=",
12
+ instruction: "Calculer la forme irréductible :",
13
+ label: "Divisions de fractions",
14
+ levels: ["4", "3", "2", "1"],
15
+ section: "Fractions",
16
+ isSingleStep: false,
17
+ generator: (nb: number) => getDistinctQuestions(getFractionsDivision, nb),
18
+ };
19
+
20
+ export function getFractionsDivision(): Question {
21
+ const rational = RationalConstructor.randomIrreductible();
22
+ const rational2 = RationalConstructor.randomIrreductible();
23
+ const statementTree = new DivideNode(rational.toTree(), rational2.toTree());
24
+ const answerTree = rational.divide(rational2).toTree();
25
+ const question: Question = {
26
+ statement: latexParse(statementTree),
27
+ answer: latexParse(answerTree),
28
+ };
29
+ return question;
30
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getFractionsProduct = exports.fractionsProduct = void 0;
4
+ var rational_1 = require("../../../numbers/rationals/rational");
5
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
6
+ var multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
7
+ var 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: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionsProduct, nb); }
17
+ };
18
+ function getFractionsProduct() {
19
+ var rational = rational_1.RationalConstructor.randomIrreductible();
20
+ var rational2 = rational_1.RationalConstructor.randomIrreductible();
21
+ var statementTree = new multiplyNode_1.MultiplyNode(rational.toTree(), rational2.toTree());
22
+ var answerTree = rational.multiply(rational2).toTree();
23
+ var question = {
24
+ statement: (0, latexParse_1.latexParse)(statementTree),
25
+ answer: (0, latexParse_1.latexParse)(answerTree)
26
+ };
27
+ return question;
28
+ }
29
+ exports.getFractionsProduct = getFractionsProduct;
@@ -0,0 +1,29 @@
1
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
2
+ import { latexParse } from "../../../tree/latexParser/latexParse";
3
+ import { AddNode } from "../../../tree/nodes/operators/addNode";
4
+ import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode";
5
+ import { Exercise, Question } from "../../exercise";
6
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
7
+
8
+ export const fractionsProduct: Exercise = {
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: number) => getDistinctQuestions(getFractionsProduct, nb),
17
+ };
18
+
19
+ export function getFractionsProduct(): Question {
20
+ const rational = RationalConstructor.randomIrreductible();
21
+ const rational2 = RationalConstructor.randomIrreductible();
22
+ const statementTree = new MultiplyNode(rational.toTree(), rational2.toTree());
23
+ const answerTree = rational.multiply(rational2).toTree();
24
+ const question: Question = {
25
+ statement: latexParse(statementTree),
26
+ answer: latexParse(answerTree),
27
+ };
28
+ return question;
29
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getFractionsSum = exports.fractionsSum = void 0;
4
+ var rational_1 = require("../../../numbers/rationals/rational");
5
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
6
+ var addNode_1 = require("../../../tree/nodes/operators/addNode");
7
+ var 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: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getFractionsSum, nb); }
17
+ };
18
+ function getFractionsSum() {
19
+ var rational = rational_1.RationalConstructor.randomIrreductible();
20
+ var rational2 = rational_1.RationalConstructor.randomIrreductible();
21
+ var statementTree = new addNode_1.AddNode(rational.toTree(), rational2.toTree());
22
+ var answerTree = rational.add(rational2).toTree();
23
+ var question = {
24
+ statement: (0, latexParse_1.latexParse)(statementTree),
25
+ answer: (0, latexParse_1.latexParse)(answerTree)
26
+ };
27
+ return question;
28
+ }
29
+ exports.getFractionsSum = getFractionsSum;
@@ -0,0 +1,28 @@
1
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
2
+ import { latexParse } from "../../../tree/latexParser/latexParse";
3
+ import { AddNode } from "../../../tree/nodes/operators/addNode";
4
+ import { Exercise, Question } from "../../exercise";
5
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
6
+
7
+ export const fractionsSum: Exercise = {
8
+ id: "fractionsSum",
9
+ connector: "=",
10
+ instruction: "Calculer la forme irréductible :",
11
+ label: "Sommes de fractions",
12
+ levels: ["4", "3", "2", "1"],
13
+ section: "Fractions",
14
+ isSingleStep: false,
15
+ generator: (nb: number) => getDistinctQuestions(getFractionsSum, nb),
16
+ };
17
+
18
+ export function getFractionsSum(): Question {
19
+ const rational = RationalConstructor.randomIrreductible();
20
+ const rational2 = RationalConstructor.randomIrreductible();
21
+ const statementTree = new AddNode(rational.toTree(), rational2.toTree());
22
+ const answerTree = rational.add(rational2).toTree();
23
+ const question: Question = {
24
+ statement: latexParse(statementTree),
25
+ answer: latexParse(answerTree),
26
+ };
27
+ return question;
28
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getSimplifyFraction = exports.simplifyFraction = void 0;
4
+ var rational_1 = require("../../../numbers/rationals/rational");
5
+ var latexParse_1 = require("../../../tree/latexParser/latexParse");
6
+ var getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
7
+ exports.simplifyFraction = {
8
+ id: "simplifySqrt",
9
+ connector: "=",
10
+ instruction: "Simplifier :",
11
+ label: "Simplification de fractions",
12
+ levels: ["4", "3", "2"],
13
+ isSingleStep: false,
14
+ section: "Fractions",
15
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getSimplifyFraction, nb); }
16
+ };
17
+ function getSimplifyFraction() {
18
+ var rational = rational_1.RationalConstructor.randomSimplifiable(10);
19
+ var question = {
20
+ statement: (0, latexParse_1.latexParse)(rational.toTree()),
21
+ answer: (0, latexParse_1.latexParse)(rational.simplify().toTree())
22
+ };
23
+ return question;
24
+ }
25
+ exports.getSimplifyFraction = getSimplifyFraction;
@@ -0,0 +1,24 @@
1
+ import { RationalConstructor } from "../../../numbers/rationals/rational";
2
+ import { latexParse } from "../../../tree/latexParser/latexParse";
3
+ import { Exercise, Question } from "../../exercise";
4
+ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
5
+
6
+ export const simplifyFraction: Exercise = {
7
+ id: "simplifySqrt",
8
+ connector: "=",
9
+ instruction: "Simplifier :",
10
+ label: "Simplification de fractions",
11
+ levels: ["4", "3", "2"],
12
+ isSingleStep: false,
13
+ section: "Fractions",
14
+ generator: (nb: number) => getDistinctQuestions(getSimplifyFraction, nb),
15
+ };
16
+
17
+ export function getSimplifyFraction(): Question {
18
+ const rational = RationalConstructor.randomSimplifiable(10);
19
+ const question: Question = {
20
+ statement: latexParse(rational.toTree()),
21
+ answer: latexParse(rational.simplify().toTree()),
22
+ };
23
+ return question;
24
+ }