math-exercises 1.1.0 → 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 (124) hide show
  1. package/package.json +2 -2
  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 +2 -0
  23. package/src/exercises/calculLitteral/distributivity/allIdentities.ts +2 -0
  24. package/src/exercises/calculLitteral/distributivity/doubleDistributivity.js +3 -3
  25. package/src/exercises/calculLitteral/distributivity/doubleDistributivity.ts +2 -0
  26. package/src/exercises/calculLitteral/distributivity/firstIdentity.js +2 -0
  27. package/src/exercises/calculLitteral/distributivity/firstIdentity.ts +2 -0
  28. package/src/exercises/calculLitteral/distributivity/secondIdentity.js +3 -3
  29. package/src/exercises/calculLitteral/distributivity/secondIdentity.ts +2 -0
  30. package/src/exercises/calculLitteral/distributivity/simpleDistributivity.js +3 -3
  31. package/src/exercises/calculLitteral/distributivity/simpleDistributivity.ts +2 -0
  32. package/src/exercises/calculLitteral/distributivity/thirdIdentity.js +4 -2
  33. package/src/exercises/calculLitteral/distributivity/thirdIdentity.ts +2 -0
  34. package/src/exercises/calculLitteral/equation/equationType1Exercise.js +3 -3
  35. package/src/exercises/calculLitteral/equation/equationType1Exercise.ts +4 -5
  36. package/src/exercises/calculLitteral/equation/equationType2Exercise.js +3 -3
  37. package/src/exercises/calculLitteral/equation/equationType2Exercise.ts +5 -5
  38. package/src/exercises/calculLitteral/equation/equationType3Exercise.js +3 -3
  39. package/src/exercises/calculLitteral/equation/equationType3Exercise.ts +5 -5
  40. package/src/exercises/calculLitteral/equation/equationType4Exercise.js +3 -3
  41. package/src/exercises/calculLitteral/equation/equationType4Exercise.ts +7 -12
  42. package/src/exercises/calculLitteral/factorisation/factoType1Exercise.js +4 -9
  43. package/src/exercises/calculLitteral/factorisation/factoType1Exercise.ts +3 -6
  44. package/src/exercises/calculLitteral/reduction.ts +27 -0
  45. package/src/exercises/exercise.ts +2 -0
  46. package/src/exercises/exercises.js +83 -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 +2 -3
  59. package/src/exercises/squareRoots/simpifySquareRoot.ts +2 -0
  60. package/src/index.js +8 -8
  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/tree/nodes/operators/oppositeNode.ts +0 -17
@@ -13,20 +13,20 @@ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
13
13
  * type ax+b=c
14
14
  */
15
15
  export const equationType3Exercise: Exercise = {
16
+ id: "equa3",
17
+
16
18
  connector: "\\iff",
17
19
  instruction: "Résoudre : ",
18
20
  label: "Equations $ax+b=c$",
19
21
  levels: ["4", "3", "2"],
20
22
  section: "Calcul littéral",
21
- generator: (nb: number) =>
22
- getDistinctQuestions(getEquationType3ExerciseQuestion, nb),
23
+ isSingleStep: false,
24
+ generator: (nb: number) => getDistinctQuestions(getEquationType3ExerciseQuestion, nb),
23
25
  };
24
26
 
25
27
  export function getEquationType3ExerciseQuestion(): Question {
26
28
  const interval = new Interval("[[-10; 10]]");
27
- const intervalStar = new Interval("[[-10; 10]]").difference(
28
- new DiscreteSet([new Integer(0)])
29
- );
29
+ const intervalStar = new Interval("[[-10; 10]]").difference(new DiscreteSet([new Integer(0)]));
30
30
  const b = intervalStar.getRandomElement();
31
31
  const a = intervalStar.getRandomElement();
32
32
  const c = interval.getRandomElement();
@@ -14,14 +14,14 @@ var getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
14
14
  * type ax+b=cx+d
15
15
  */
16
16
  exports.equationType4Exercise = {
17
+ id: "equa4",
17
18
  connector: "\\iff",
18
19
  instruction: "Résoudre : ",
19
20
  label: "Equations $ax+b=cx+d$",
20
21
  levels: ["4", "3", "2"],
21
22
  section: "Calcul littéral",
22
- generator: function (nb) {
23
- return (0, getDistinctQuestions_1.getDistinctQuestions)(getEquationType4ExerciseQuestion, nb);
24
- }
23
+ isSingleStep: false,
24
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getEquationType4ExerciseQuestion, nb); }
25
25
  };
26
26
  function getEquationType4ExerciseQuestion() {
27
27
  var interval = new intervals_1.Interval("[[-10; 10]]");
@@ -13,33 +13,28 @@ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
13
13
  * type ax+b=cx+d
14
14
  */
15
15
  export const equationType4Exercise: Exercise = {
16
+ id: "equa4",
17
+
16
18
  connector: "\\iff",
17
19
  instruction: "Résoudre : ",
18
20
  label: "Equations $ax+b=cx+d$",
19
21
  levels: ["4", "3", "2"],
20
22
  section: "Calcul littéral",
21
- generator: (nb: number) =>
22
- getDistinctQuestions(getEquationType4ExerciseQuestion, nb),
23
+ isSingleStep: false,
24
+ generator: (nb: number) => getDistinctQuestions(getEquationType4ExerciseQuestion, nb),
23
25
  };
24
26
 
25
27
  export function getEquationType4ExerciseQuestion(): Question {
26
28
  const interval = new Interval("[[-10; 10]]");
27
- const intervalStar = new Interval("[[-10; 10]]").difference(
28
- new DiscreteSet([new Integer(0)])
29
- );
29
+ const intervalStar = new Interval("[[-10; 10]]").difference(new DiscreteSet([new Integer(0)]));
30
30
  const a = intervalStar.getRandomElement();
31
31
  const b = interval.getRandomElement();
32
- const intervalC = new Interval("[[-10; 10]]").difference(
33
- new DiscreteSet([new Integer(0), new Integer(a.value)])
34
- );
32
+ const intervalC = new Interval("[[-10; 10]]").difference(new DiscreteSet([new Integer(0), new Integer(a.value)]));
35
33
  const c = intervalC.getRandomElement();
36
34
  const d = interval.getRandomElement();
37
35
 
38
36
  const affines = [new Affine(a.value, b.value), new Affine(c.value, d.value)];
39
- const solution = new Rational(
40
- d.value - b.value,
41
- a.value - c.value
42
- ).simplify();
37
+ const solution = new Rational(d.value - b.value, a.value - c.value).simplify();
43
38
 
44
39
  const statementTree = new EqualNode(affines[0].toTree(), affines[1].toTree());
45
40
  const answerTree = new EqualNode(new VariableNode("x"), solution.toTree());
@@ -13,8 +13,10 @@ var getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
13
13
  * type (ax+b)(cx+d) ± (ax+b)(ex+f)
14
14
  */
15
15
  exports.factoType1Exercise = {
16
+ id: "facto1",
16
17
  connector: "=",
17
18
  instruction: "Factoriser :",
19
+ isSingleStep: false,
18
20
  label: "Factorisation du type $(ax+b)(cx+d) \\pm (ax+b)(ex+f)$",
19
21
  levels: ["3", "2"],
20
22
  section: "Calcul Littéral",
@@ -22,19 +24,12 @@ exports.factoType1Exercise = {
22
24
  };
23
25
  function getFactoType1Question() {
24
26
  var affines = affine_1.AffineConstructor.differentRandoms(3);
25
- var permut = [
26
- [affines[0], affines[1]],
27
- [affines[0], affines[2]],
28
- ];
29
- (0, shuffle_1.shuffle)(permut[0]);
30
- (0, shuffle_1.shuffle)(permut[1]);
27
+ var permut = [(0, shuffle_1.shuffle)([affines[0], affines[1]]), (0, shuffle_1.shuffle)([affines[0], affines[2]])];
31
28
  var operation = (0, random_1.random)(["add", "substract"]);
32
29
  var statementTree = operation === "add"
33
30
  ? new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(permut[0][0].toTree(), permut[0][1].toTree()), new multiplyNode_1.MultiplyNode(permut[1][0].toTree(), permut[1][1].toTree()))
34
31
  : new substractNode_1.SubstractNode(new multiplyNode_1.MultiplyNode(permut[0][0].toTree(), permut[0][1].toTree()), new multiplyNode_1.MultiplyNode(permut[1][0].toTree(), permut[1][1].toTree()));
35
- var answerTree = new multiplyNode_1.MultiplyNode(affines[0].toTree(), affines[1]
36
- .add(operation === "add" ? affines[2] : affines[2].opposite())
37
- .toTree());
32
+ var answerTree = new multiplyNode_1.MultiplyNode(affines[0].toTree(), affines[1].add(operation === "add" ? affines[2] : affines[2].opposite()).toTree());
38
33
  var question = {
39
34
  statement: (0, latexParse_1.latexParse)(statementTree),
40
35
  answer: (0, latexParse_1.latexParse)(answerTree)
@@ -13,8 +13,10 @@ import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
13
13
  */
14
14
 
15
15
  export const factoType1Exercise: Exercise = {
16
+ id: "facto1",
16
17
  connector: "=",
17
18
  instruction: "Factoriser :",
19
+ isSingleStep: false,
18
20
  label: "Factorisation du type $(ax+b)(cx+d) \\pm (ax+b)(ex+f)$",
19
21
  levels: ["3", "2"],
20
22
  section: "Calcul Littéral",
@@ -24,12 +26,7 @@ export const factoType1Exercise: Exercise = {
24
26
  export function getFactoType1Question(): Question {
25
27
  const affines = AffineConstructor.differentRandoms(3);
26
28
 
27
- const permut: Affine[][] = [
28
- [affines[0], affines[1]],
29
- [affines[0], affines[2]],
30
- ];
31
- shuffle(permut[0]);
32
- shuffle(permut[1]);
29
+ const permut: Affine[][] = [shuffle([affines[0], affines[1]]), shuffle([affines[0], affines[2]])];
33
30
 
34
31
  const operation = random(["add", "substract"]);
35
32
 
@@ -0,0 +1,27 @@
1
+ // import { Interval } from "../../sets/intervals/intervals";
2
+ // import { Exercise, Question } from "../exercise";
3
+ // import { getDistinctQuestions } from "../utils/getDistinctQuestions";
4
+
5
+ // export const reduction: Exercise = {
6
+ // id: "reduction",
7
+ // connector: "=",
8
+ // instruction: "Réduire :",
9
+ // label: "Réduire une expression polynomiale",
10
+ // levels: ["3", "2"],
11
+ // isSingleStep: false,
12
+ // section: "Calcul Littéral",
13
+ // generator: (nb: number) => getDistinctQuestions(getReductionQuestion, nb),
14
+ // };
15
+
16
+ // export function getReductionQuestion(): Question {
17
+ // const interval = new Interval("[[1; 10]]").difference(new DiscreteSet([new Integer(0)]));
18
+ // const affine = AffineConstructor.random(interval, interval);
19
+
20
+ // const statementTree = new PowerNode(affine.toTree(), new NumberNode(2));
21
+ // const answerTree = affine.multiply(affine).toTree();
22
+
23
+ // return {
24
+ // statement: latexParse(statementTree),
25
+ // answer: latexParse(answerTree),
26
+ // };
27
+ // }
@@ -10,7 +10,9 @@ export interface Question {
10
10
  }
11
11
 
12
12
  export interface Exercise {
13
+ id: string;
13
14
  instruction: string;
15
+ isSingleStep: boolean;
14
16
  label: string;
15
17
  section: string;
16
18
  levels: string[];
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.exercises = void 0;
4
+ var addAndSub_1 = require("./calcul/addAndSub");
5
+ var fractionAndIntegerDivision_1 = require("./calcul/fractions/fractionAndIntegerDivision");
6
+ var fractionAndIntegerProduct_1 = require("./calcul/fractions/fractionAndIntegerProduct");
7
+ var fractionAndIntegerSum_1 = require("./calcul/fractions/fractionAndIntegerSum");
8
+ var fractionsDivision_1 = require("./calcul/fractions/fractionsDivision");
9
+ var fractionsProduct_1 = require("./calcul/fractions/fractionsProduct");
10
+ var fractionsSum_1 = require("./calcul/fractions/fractionsSum");
11
+ var simplifyFraction_1 = require("./calcul/fractions/simplifyFraction");
12
+ var operationsPriorities_1 = require("./calcul/operationsPriorities");
13
+ var roundToUnit_1 = require("./calcul/rounding/roundToUnit");
14
+ var allIdentities_1 = require("./calculLitteral/distributivity/allIdentities");
15
+ var doubleDistributivity_1 = require("./calculLitteral/distributivity/doubleDistributivity");
16
+ var firstIdentity_1 = require("./calculLitteral/distributivity/firstIdentity");
17
+ var secondIdentity_1 = require("./calculLitteral/distributivity/secondIdentity");
18
+ var simpleDistributivity_1 = require("./calculLitteral/distributivity/simpleDistributivity");
19
+ var thirdIdentity_1 = require("./calculLitteral/distributivity/thirdIdentity");
20
+ var equationType1Exercise_1 = require("./calculLitteral/equation/equationType1Exercise");
21
+ var equationType2Exercise_1 = require("./calculLitteral/equation/equationType2Exercise");
22
+ var equationType3Exercise_1 = require("./calculLitteral/equation/equationType3Exercise");
23
+ var equationType4Exercise_1 = require("./calculLitteral/equation/equationType4Exercise");
24
+ var factoType1Exercise_1 = require("./calculLitteral/factorisation/factoType1Exercise");
25
+ var powersDivision_1 = require("./powers/powersDivision");
26
+ var powersOfTenToDecimal_1 = require("./powers/powersOfTenToDecimal");
27
+ var powersPower_1 = require("./powers/powersPower");
28
+ var powersProduct_1 = require("./powers/powersProduct");
29
+ var scientificToDecimal_1 = require("./powers/scientificToDecimal");
30
+ var simpifySquareRoot_1 = require("./squareRoots/simpifySquareRoot");
31
+ exports.exercises = [
32
+ /**
33
+ * calcul litteral
34
+ */
35
+ factoType1Exercise_1.factoType1Exercise,
36
+ simpleDistributivity_1.simpleDistributivity,
37
+ doubleDistributivity_1.doubleDistributivity,
38
+ firstIdentity_1.firstIdentity,
39
+ secondIdentity_1.secondIdentity,
40
+ thirdIdentity_1.thirdIdentity,
41
+ allIdentities_1.allIdentities,
42
+ equationType1Exercise_1.equationType1Exercise,
43
+ equationType2Exercise_1.equationType2Exercise,
44
+ equationType3Exercise_1.equationType3Exercise,
45
+ equationType4Exercise_1.equationType4Exercise,
46
+ /**
47
+ * square roots
48
+ */
49
+ simpifySquareRoot_1.simplifySquareRoot,
50
+ /**
51
+ * fractions
52
+ */
53
+ fractionAndIntegerDivision_1.fractionAndIntegerDivision,
54
+ fractionAndIntegerProduct_1.fractionAndIntegerProduct,
55
+ fractionAndIntegerSum_1.fractionAndIntegerSum,
56
+ fractionsDivision_1.fractionsDivision,
57
+ fractionsProduct_1.fractionsProduct,
58
+ fractionsSum_1.fractionsSum,
59
+ simplifyFraction_1.simplifyFraction,
60
+ /**
61
+ * calcul
62
+ */
63
+ operationsPriorities_1.operationsPriorities,
64
+ addAndSub_1.addAndSubExercise,
65
+ /**
66
+ * rounding
67
+ */
68
+ roundToUnit_1.roundToCentieme,
69
+ roundToUnit_1.roundToDizieme,
70
+ roundToUnit_1.roundToMillieme,
71
+ roundToUnit_1.roundToUnit,
72
+ /**
73
+ * puissances
74
+ */
75
+ powersDivision_1.powersDivision,
76
+ powersPower_1.powersPower,
77
+ powersProduct_1.powersProduct,
78
+ powersDivision_1.powersOfTenDivision,
79
+ powersPower_1.powersOfTenPower,
80
+ powersProduct_1.powersOfTenProduct,
81
+ scientificToDecimal_1.scientificToDecimal,
82
+ powersOfTenToDecimal_1.powersOfTenToDecimal,
83
+ ];
@@ -1,3 +1,13 @@
1
+ import { addAndSubExercise } from "./calcul/addAndSub";
2
+ import { fractionAndIntegerDivision } from "./calcul/fractions/fractionAndIntegerDivision";
3
+ import { fractionAndIntegerProduct } from "./calcul/fractions/fractionAndIntegerProduct";
4
+ import { fractionAndIntegerSum } from "./calcul/fractions/fractionAndIntegerSum";
5
+ import { fractionsDivision } from "./calcul/fractions/fractionsDivision";
6
+ import { fractionsProduct } from "./calcul/fractions/fractionsProduct";
7
+ import { fractionsSum } from "./calcul/fractions/fractionsSum";
8
+ import { simplifyFraction } from "./calcul/fractions/simplifyFraction";
9
+ import { operationsPriorities } from "./calcul/operationsPriorities";
10
+ import { roundToCentieme, roundToDizieme, roundToMillieme, roundToUnit } from "./calcul/rounding/roundToUnit";
1
11
  import { allIdentities } from "./calculLitteral/distributivity/allIdentities";
2
12
  import { doubleDistributivity } from "./calculLitteral/distributivity/doubleDistributivity";
3
13
  import { firstIdentity } from "./calculLitteral/distributivity/firstIdentity";
@@ -9,9 +19,17 @@ import { equationType2Exercise } from "./calculLitteral/equation/equationType2Ex
9
19
  import { equationType3Exercise } from "./calculLitteral/equation/equationType3Exercise";
10
20
  import { equationType4Exercise } from "./calculLitteral/equation/equationType4Exercise";
11
21
  import { factoType1Exercise } from "./calculLitteral/factorisation/factoType1Exercise";
22
+ import { powersDivision, powersOfTenDivision } from "./powers/powersDivision";
23
+ import { powersOfTenToDecimal } from "./powers/powersOfTenToDecimal";
24
+ import { powersOfTenPower, powersPower } from "./powers/powersPower";
25
+ import { powersOfTenProduct, powersProduct } from "./powers/powersProduct";
26
+ import { scientificToDecimal } from "./powers/scientificToDecimal";
12
27
  import { simplifySquareRoot } from "./squareRoots/simpifySquareRoot";
13
28
 
14
29
  export const exercises = [
30
+ /**
31
+ * calcul litteral
32
+ */
15
33
  factoType1Exercise,
16
34
  simpleDistributivity,
17
35
  doubleDistributivity,
@@ -23,5 +41,45 @@ export const exercises = [
23
41
  equationType2Exercise,
24
42
  equationType3Exercise,
25
43
  equationType4Exercise,
44
+
45
+ /**
46
+ * square roots
47
+ */
26
48
  simplifySquareRoot,
49
+
50
+ /**
51
+ * fractions
52
+ */
53
+ fractionAndIntegerDivision,
54
+ fractionAndIntegerProduct,
55
+ fractionAndIntegerSum,
56
+ fractionsDivision,
57
+ fractionsProduct,
58
+ fractionsSum,
59
+ simplifyFraction,
60
+
61
+ /**
62
+ * calcul
63
+ */
64
+ operationsPriorities,
65
+ addAndSubExercise,
66
+
67
+ /**
68
+ * rounding
69
+ */
70
+ roundToCentieme,
71
+ roundToDizieme,
72
+ roundToMillieme,
73
+ roundToUnit,
74
+ /**
75
+ * puissances
76
+ */
77
+ powersDivision,
78
+ powersPower,
79
+ powersProduct,
80
+ powersOfTenDivision,
81
+ powersOfTenPower,
82
+ powersOfTenProduct,
83
+ scientificToDecimal,
84
+ powersOfTenToDecimal,
27
85
  ];
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getPowersDivisionQuestion = exports.powersOfTenDivision = exports.powersDivision = void 0;
4
+ var randint_1 = require("../../mathutils/random/randint");
5
+ var power_1 = require("../../numbers/integer/power");
6
+ var latexParse_1 = require("../../tree/latexParser/latexParse");
7
+ var numberNode_1 = require("../../tree/nodes/numbers/numberNode");
8
+ var fractionNode_1 = require("../../tree/nodes/operators/fractionNode");
9
+ var powerNode_1 = require("../../tree/nodes/operators/powerNode");
10
+ var getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
11
+ /**
12
+ * a^b/a^c
13
+ */
14
+ exports.powersDivision = {
15
+ id: "powersDivision",
16
+ connector: "=",
17
+ instruction: "Calculer :",
18
+ label: "Dvision de puissances",
19
+ levels: ["4", "3", "2", "1"],
20
+ section: "Puissances",
21
+ isSingleStep: true,
22
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getPowersDivisionQuestion, nb); }
23
+ };
24
+ exports.powersOfTenDivision = {
25
+ id: "powersOfTenDivision",
26
+ connector: "=",
27
+ instruction: "Calculer :",
28
+ label: "Dvision de puissances de 10",
29
+ levels: ["4", "3", "2", "1"],
30
+ section: "Puissances",
31
+ isSingleStep: true,
32
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(function () { return getPowersDivisionQuestion(true); }, nb); }
33
+ };
34
+ function getPowersDivisionQuestion(useOnlyPowersOfTen) {
35
+ if (useOnlyPowersOfTen === void 0) { useOnlyPowersOfTen = false; }
36
+ var a = useOnlyPowersOfTen ? 10 : (0, randint_1.randint)(-11, 11);
37
+ var _a = [1, 2].map(function (el) { return (0, randint_1.randint)(-11, 11); }), b = _a[0], c = _a[1];
38
+ var statement = new fractionNode_1.FractionNode(new powerNode_1.PowerNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new powerNode_1.PowerNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(c)));
39
+ var answerTree = new power_1.Power(a, b - c).simplify();
40
+ var question = {
41
+ statement: (0, latexParse_1.latexParse)(statement),
42
+ answer: (0, latexParse_1.latexParse)(answerTree)
43
+ };
44
+ return question;
45
+ }
46
+ exports.getPowersDivisionQuestion = getPowersDivisionQuestion;
@@ -0,0 +1,51 @@
1
+ import { randint } from "../../mathutils/random/randint";
2
+ import { Power } from "../../numbers/integer/power";
3
+ import { latexParse } from "../../tree/latexParser/latexParse";
4
+ import { NumberNode } from "../../tree/nodes/numbers/numberNode";
5
+ import { FractionNode } from "../../tree/nodes/operators/fractionNode";
6
+ import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
7
+ import { PowerNode } from "../../tree/nodes/operators/powerNode";
8
+ import { Exercise, Question } from "../exercise";
9
+ import { getDistinctQuestions } from "../utils/getDistinctQuestions";
10
+
11
+ /**
12
+ * a^b/a^c
13
+ */
14
+
15
+ export const powersDivision: Exercise = {
16
+ id: "powersDivision",
17
+ connector: "=",
18
+ instruction: "Calculer :",
19
+ label: "Dvision de puissances",
20
+ levels: ["4", "3", "2", "1"],
21
+ section: "Puissances",
22
+ isSingleStep: true,
23
+ generator: (nb: number) => getDistinctQuestions(getPowersDivisionQuestion, nb),
24
+ };
25
+ export const powersOfTenDivision: Exercise = {
26
+ id: "powersOfTenDivision",
27
+ connector: "=",
28
+ instruction: "Calculer :",
29
+ label: "Dvision de puissances de 10",
30
+ levels: ["4", "3", "2", "1"],
31
+ section: "Puissances",
32
+ isSingleStep: true,
33
+ generator: (nb: number) => getDistinctQuestions(() => getPowersDivisionQuestion(true), nb),
34
+ };
35
+
36
+ export function getPowersDivisionQuestion(useOnlyPowersOfTen: boolean = false): Question {
37
+ const a = useOnlyPowersOfTen ? 10 : randint(-11, 11);
38
+ const [b, c] = [1, 2].map((el) => randint(-11, 11));
39
+
40
+ const statement = new FractionNode(
41
+ new PowerNode(new NumberNode(a), new NumberNode(b)),
42
+ new PowerNode(new NumberNode(a), new NumberNode(c))
43
+ );
44
+ const answerTree = new Power(a, b - c).simplify();
45
+
46
+ const question: Question = {
47
+ statement: latexParse(statement),
48
+ answer: latexParse(answerTree),
49
+ };
50
+ return question;
51
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getPowersOfTenDivisionQuestion = exports.powersOfTenToDecimal = void 0;
4
+ var randint_1 = require("../../mathutils/random/randint");
5
+ var power_1 = require("../../numbers/integer/power");
6
+ var latexParse_1 = require("../../tree/latexParser/latexParse");
7
+ var numberNode_1 = require("../../tree/nodes/numbers/numberNode");
8
+ var powerNode_1 = require("../../tree/nodes/operators/powerNode");
9
+ var getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
10
+ /**
11
+ * 10^(-x) into 0,0...1
12
+ */
13
+ exports.powersOfTenToDecimal = {
14
+ id: "powersOfTenToDecimal",
15
+ connector: "=",
16
+ instruction: "Donner l'écriture décimale de :",
17
+ label: "Ecriture décimale d'une puissance de 10",
18
+ levels: ["5", "4", "3", "2"],
19
+ section: "Puissances",
20
+ isSingleStep: true,
21
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getPowersOfTenDivisionQuestion, nb); }
22
+ };
23
+ function getPowersOfTenDivisionQuestion() {
24
+ var randPower = (0, randint_1.randint)(-6, 8);
25
+ var statement = new powerNode_1.PowerNode(new numberNode_1.NumberNode(10), new numberNode_1.NumberNode(randPower));
26
+ var answerTree = new power_1.Power(10, randPower).toDecimalWriting().toTree();
27
+ var question = {
28
+ statement: (0, latexParse_1.latexParse)(statement),
29
+ answer: (0, latexParse_1.latexParse)(answerTree)
30
+ };
31
+ return question;
32
+ }
33
+ exports.getPowersOfTenDivisionQuestion = getPowersOfTenDivisionQuestion;
@@ -0,0 +1,37 @@
1
+ import { randint } from "../../mathutils/random/randint";
2
+ import { Power } from "../../numbers/integer/power";
3
+ import { latexParse } from "../../tree/latexParser/latexParse";
4
+ import { NumberNode } from "../../tree/nodes/numbers/numberNode";
5
+ import { FractionNode } from "../../tree/nodes/operators/fractionNode";
6
+ import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
7
+ import { PowerNode } from "../../tree/nodes/operators/powerNode";
8
+ import { Exercise, Question } from "../exercise";
9
+ import { getDistinctQuestions } from "../utils/getDistinctQuestions";
10
+
11
+ /**
12
+ * 10^(-x) into 0,0...1
13
+ */
14
+
15
+ export const powersOfTenToDecimal: Exercise = {
16
+ id: "powersOfTenToDecimal",
17
+ connector: "=",
18
+ instruction: "Donner l'écriture décimale de :",
19
+ label: "Ecriture décimale d'une puissance de 10",
20
+ levels: ["5", "4", "3", "2"],
21
+ section: "Puissances",
22
+ isSingleStep: true,
23
+ generator: (nb: number) => getDistinctQuestions(getPowersOfTenDivisionQuestion, nb),
24
+ };
25
+
26
+ export function getPowersOfTenDivisionQuestion(): Question {
27
+ const randPower = randint(-6, 8);
28
+
29
+ const statement = new PowerNode(new NumberNode(10), new NumberNode(randPower));
30
+ const answerTree = new Power(10, randPower).toDecimalWriting().toTree();
31
+
32
+ const question: Question = {
33
+ statement: latexParse(statement),
34
+ answer: latexParse(answerTree),
35
+ };
36
+ return question;
37
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getPowersPowerQuestion = exports.powersPower = exports.powersOfTenPower = void 0;
4
+ var randint_1 = require("../../mathutils/random/randint");
5
+ var power_1 = require("../../numbers/integer/power");
6
+ var latexParse_1 = require("../../tree/latexParser/latexParse");
7
+ var numberNode_1 = require("../../tree/nodes/numbers/numberNode");
8
+ var powerNode_1 = require("../../tree/nodes/operators/powerNode");
9
+ var getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
10
+ /**
11
+ * (a^b)^c
12
+ */
13
+ exports.powersOfTenPower = {
14
+ id: "powersOfTenPower",
15
+ connector: "=",
16
+ instruction: "Calculer :",
17
+ label: "Puissance de 10 d'une puissance",
18
+ levels: ["4", "3", "2", "1"],
19
+ section: "Puissances",
20
+ isSingleStep: true,
21
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(function () { return getPowersPowerQuestion(true); }, nb); }
22
+ };
23
+ exports.powersPower = {
24
+ id: "powersPower",
25
+ connector: "=",
26
+ instruction: "Calculer :",
27
+ label: "Puissance d'une puissance",
28
+ levels: ["4", "3", "2", "1"],
29
+ section: "Puissances",
30
+ isSingleStep: true,
31
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getPowersPowerQuestion, nb); }
32
+ };
33
+ function getPowersPowerQuestion(useOnlyPowersOfTen) {
34
+ if (useOnlyPowersOfTen === void 0) { useOnlyPowersOfTen = false; }
35
+ var a = useOnlyPowersOfTen ? 10 : (0, randint_1.randint)(-11, 11);
36
+ var _a = [1, 2].map(function (el) { return (0, randint_1.randint)(-11, 11); }), b = _a[0], c = _a[1];
37
+ var statement = new powerNode_1.PowerNode(new powerNode_1.PowerNode(new numberNode_1.NumberNode(a), new numberNode_1.NumberNode(b)), new numberNode_1.NumberNode(c));
38
+ var answerTree = new power_1.Power(a, b * c).simplify();
39
+ var question = {
40
+ statement: (0, latexParse_1.latexParse)(statement),
41
+ answer: (0, latexParse_1.latexParse)(answerTree)
42
+ };
43
+ return question;
44
+ }
45
+ exports.getPowersPowerQuestion = getPowersPowerQuestion;
@@ -0,0 +1,55 @@
1
+ import { randint } from "../../mathutils/random/randint";
2
+ import { Integer } from "../../numbers/integer/integer";
3
+ import { Power } from "../../numbers/integer/power";
4
+ import { DiscreteSet } from "../../sets/discreteSet";
5
+ import { Interval } from "../../sets/intervals/intervals";
6
+ import { latexParse } from "../../tree/latexParser/latexParse";
7
+ import { Node } from "../../tree/nodes/node";
8
+ import { NumberNode } from "../../tree/nodes/numbers/numberNode";
9
+ import { AddNode } from "../../tree/nodes/operators/addNode";
10
+ import { DivideNode } from "../../tree/nodes/operators/divideNode";
11
+ import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
12
+ import { PowerNode } from "../../tree/nodes/operators/powerNode";
13
+ import { coin } from "../../utils/coin";
14
+ import { Exercise, Question } from "../exercise";
15
+ import { getDistinctQuestions } from "../utils/getDistinctQuestions";
16
+
17
+ /**
18
+ * (a^b)^c
19
+ */
20
+
21
+ export const powersOfTenPower: Exercise = {
22
+ id: "powersOfTenPower",
23
+ connector: "=",
24
+ instruction: "Calculer :",
25
+ label: "Puissance de 10 d'une puissance",
26
+ levels: ["4", "3", "2", "1"],
27
+ section: "Puissances",
28
+ isSingleStep: true,
29
+ generator: (nb: number) => getDistinctQuestions(() => getPowersPowerQuestion(true), nb),
30
+ };
31
+
32
+ export const powersPower: Exercise = {
33
+ id: "powersPower",
34
+ connector: "=",
35
+ instruction: "Calculer :",
36
+ label: "Puissance d'une puissance",
37
+ levels: ["4", "3", "2", "1"],
38
+ section: "Puissances",
39
+ isSingleStep: true,
40
+ generator: (nb: number) => getDistinctQuestions(getPowersPowerQuestion, nb),
41
+ };
42
+
43
+ export function getPowersPowerQuestion(useOnlyPowersOfTen: boolean = false): Question {
44
+ const a = useOnlyPowersOfTen ? 10 : randint(-11, 11);
45
+ const [b, c] = [1, 2].map((el) => randint(-11, 11));
46
+
47
+ const statement = new PowerNode(new PowerNode(new NumberNode(a), new NumberNode(b)), new NumberNode(c));
48
+ let answerTree = new Power(a, b * c).simplify();
49
+
50
+ const question: Question = {
51
+ statement: latexParse(statement),
52
+ answer: latexParse(answerTree),
53
+ };
54
+ return question;
55
+ }