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
@@ -1,6 +1,16 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
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");
4
14
  var allIdentities_1 = require("./calculLitteral/distributivity/allIdentities");
5
15
  var doubleDistributivity_1 = require("./calculLitteral/distributivity/doubleDistributivity");
6
16
  var firstIdentity_1 = require("./calculLitteral/distributivity/firstIdentity");
@@ -12,8 +22,16 @@ var equationType2Exercise_1 = require("./calculLitteral/equation/equationType2Ex
12
22
  var equationType3Exercise_1 = require("./calculLitteral/equation/equationType3Exercise");
13
23
  var equationType4Exercise_1 = require("./calculLitteral/equation/equationType4Exercise");
14
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");
15
30
  var simpifySquareRoot_1 = require("./squareRoots/simpifySquareRoot");
16
31
  exports.exercises = [
32
+ /**
33
+ * calcul litteral
34
+ */
17
35
  factoType1Exercise_1.factoType1Exercise,
18
36
  simpleDistributivity_1.simpleDistributivity,
19
37
  doubleDistributivity_1.doubleDistributivity,
@@ -25,5 +43,41 @@ exports.exercises = [
25
43
  equationType2Exercise_1.equationType2Exercise,
26
44
  equationType3Exercise_1.equationType3Exercise,
27
45
  equationType4Exercise_1.equationType4Exercise,
46
+ /**
47
+ * square roots
48
+ */
28
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,
29
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
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getPowersProductQuestion = exports.powersProduct = exports.powersOfTenProduct = 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 multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
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.powersOfTenProduct = {
15
+ id: "powersOfTenProduct",
16
+ connector: "=",
17
+ instruction: "Calculer :",
18
+ label: "Multiplication de puissances de 10",
19
+ levels: ["4", "3", "2", "1"],
20
+ section: "Calculs",
21
+ isSingleStep: true,
22
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(function () { return getPowersProductQuestion(true); }, nb); }
23
+ };
24
+ exports.powersProduct = {
25
+ id: "powersProduct",
26
+ connector: "=",
27
+ instruction: "Calculer :",
28
+ label: "Multiplication de puissances",
29
+ levels: ["4", "3", "2", "1"],
30
+ section: "Puissances",
31
+ isSingleStep: true,
32
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getPowersProductQuestion, nb); }
33
+ };
34
+ function getPowersProductQuestion(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 multiplyNode_1.MultiplyNode(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.getPowersProductQuestion = getPowersProductQuestion;
@@ -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 { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
6
+ import { PowerNode } from "../../tree/nodes/operators/powerNode";
7
+ import { Exercise, Question } from "../exercise";
8
+ import { getDistinctQuestions } from "../utils/getDistinctQuestions";
9
+
10
+ /**
11
+ * a^b*a^c
12
+ */
13
+
14
+ export const powersOfTenProduct: Exercise = {
15
+ id: "powersOfTenProduct",
16
+ connector: "=",
17
+ instruction: "Calculer :",
18
+ label: "Multiplication de puissances de 10",
19
+ levels: ["4", "3", "2", "1"],
20
+ section: "Calculs",
21
+ isSingleStep: true,
22
+ generator: (nb: number) => getDistinctQuestions(() => getPowersProductQuestion(true), nb),
23
+ };
24
+
25
+ export const powersProduct: Exercise = {
26
+ id: "powersProduct",
27
+ connector: "=",
28
+ instruction: "Calculer :",
29
+ label: "Multiplication de puissances",
30
+ levels: ["4", "3", "2", "1"],
31
+ section: "Puissances",
32
+ isSingleStep: true,
33
+ generator: (nb: number) => getDistinctQuestions(getPowersProductQuestion, nb),
34
+ };
35
+
36
+ export function getPowersProductQuestion(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 MultiplyNode(
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,38 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getScientificToDecimalQuestion = exports.scientificToDecimal = void 0;
4
+ var randint_1 = require("../../mathutils/random/randint");
5
+ var decimal_1 = require("../../numbers/decimals/decimal");
6
+ var integer_1 = require("../../numbers/integer/integer");
7
+ var latexParse_1 = require("../../tree/latexParser/latexParse");
8
+ var numberNode_1 = require("../../tree/nodes/numbers/numberNode");
9
+ var multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
10
+ var powerNode_1 = require("../../tree/nodes/operators/powerNode");
11
+ var getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
12
+ /**
13
+ * a*10^x vers décimal
14
+ * */
15
+ exports.scientificToDecimal = {
16
+ id: "scientificToDecimal",
17
+ connector: "=",
18
+ instruction: "Donner l'écriture décimale de :",
19
+ label: "Ecriture décimale de $a\\times 10^x",
20
+ levels: ["5", "4", "3", "2"],
21
+ section: "Puissances",
22
+ isSingleStep: true,
23
+ generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getScientificToDecimalQuestion, nb); }
24
+ };
25
+ function getScientificToDecimalQuestion() {
26
+ var randPower = (0, randint_1.randint)(-6, 8);
27
+ var int = integer_1.IntegerConstructor.random((0, randint_1.randint)(1, 4));
28
+ var fracPart = decimal_1.DecimalConstructor.randomFracPart((0, randint_1.randint)(0, 4));
29
+ var randDecimal = decimal_1.DecimalConstructor.fromParts(int + "", fracPart);
30
+ var statement = new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(randDecimal.value), new powerNode_1.PowerNode(new numberNode_1.NumberNode(10), new numberNode_1.NumberNode(randPower)));
31
+ var answerTree = randDecimal.multiplyByPowerOfTen(randPower).toTree();
32
+ var question = {
33
+ statement: (0, latexParse_1.latexParse)(statement),
34
+ answer: (0, latexParse_1.latexParse)(answerTree)
35
+ };
36
+ return question;
37
+ }
38
+ exports.getScientificToDecimalQuestion = getScientificToDecimalQuestion;
@@ -0,0 +1,44 @@
1
+ import { randint } from "../../mathutils/random/randint";
2
+ import { DecimalConstructor } from "../../numbers/decimals/decimal";
3
+ import { IntegerConstructor } from "../../numbers/integer/integer";
4
+ import { Power } from "../../numbers/integer/power";
5
+ import { latexParse } from "../../tree/latexParser/latexParse";
6
+ import { NumberNode } from "../../tree/nodes/numbers/numberNode";
7
+ import { FractionNode } from "../../tree/nodes/operators/fractionNode";
8
+ import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
9
+ import { PowerNode } from "../../tree/nodes/operators/powerNode";
10
+ import { Exercise, Question } from "../exercise";
11
+ import { getDistinctQuestions } from "../utils/getDistinctQuestions";
12
+
13
+ /**
14
+ * a*10^x vers décimal
15
+ * */
16
+
17
+ export const scientificToDecimal: Exercise = {
18
+ id: "scientificToDecimal",
19
+ connector: "=",
20
+ instruction: "Donner l'écriture décimale de :",
21
+ label: "Ecriture décimale de $a\\times 10^x",
22
+ levels: ["5", "4", "3", "2"],
23
+ section: "Puissances",
24
+ isSingleStep: true,
25
+ generator: (nb: number) => getDistinctQuestions(getScientificToDecimalQuestion, nb),
26
+ };
27
+
28
+ export function getScientificToDecimalQuestion(): Question {
29
+ const randPower = randint(-6, 8);
30
+ const int = IntegerConstructor.random(randint(1, 4));
31
+ const fracPart = DecimalConstructor.randomFracPart(randint(0, 4));
32
+ const randDecimal = DecimalConstructor.fromParts(int + "", fracPart);
33
+ const statement = new MultiplyNode(
34
+ new NumberNode(randDecimal.value),
35
+ new PowerNode(new NumberNode(10), new NumberNode(randPower))
36
+ );
37
+ const answerTree = randDecimal.multiplyByPowerOfTen(randPower).toTree();
38
+
39
+ const question: Question = {
40
+ statement: latexParse(statement),
41
+ answer: latexParse(answerTree),
42
+ };
43
+ return question;
44
+ }
@@ -10,6 +10,7 @@ exports.simplifySquareRoot = {
10
10
  instruction: "Simplifier :",
11
11
  label: "Simplification de racines carrées",
12
12
  levels: ["3", "2", "1"],
13
+ isSingleStep: false,
13
14
  section: "Racines carrées",
14
15
  generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getSimplifySquareRoot, nb); }
15
16
  };
@@ -9,6 +9,7 @@ export const simplifySquareRoot: Exercise = {
9
9
  instruction: "Simplifier :",
10
10
  label: "Simplification de racines carrées",
11
11
  levels: ["3", "2", "1"],
12
+ isSingleStep: false,
12
13
  section: "Racines carrées",
13
14
  generator: (nb: number) => getDistinctQuestions(getSimplifySquareRoot, nb),
14
15
  };
package/src/index.js CHANGED
@@ -3,3 +3,8 @@ exports.__esModule = true;
3
3
  exports.exercises = void 0;
4
4
  var exercises_1 = require("./exercises/exercises");
5
5
  exports.exercises = exercises_1.exercises;
6
+ var scientificToDecimal_1 = require("./exercises/powers/scientificToDecimal");
7
+ // exercises.forEach((exo) => {
8
+ // console.log(exo.instruction, exo.generator(10));
9
+ // });
10
+ console.log(scientificToDecimal_1.scientificToDecimal);
package/src/index.ts CHANGED
@@ -1,19 +1,8 @@
1
- import { allIdentities } from "./exercises/calculLitteral/distributivity/allIdentities";
2
- import { doubleDistributivity } from "./exercises/calculLitteral/distributivity/doubleDistributivity";
3
- import { simpleDistributivity } from "./exercises/calculLitteral/distributivity/simpleDistributivity";
4
- import { equationType1Exercise } from "./exercises/calculLitteral/equation/equationType1Exercise";
5
- import { equationType2Exercise } from "./exercises/calculLitteral/equation/equationType2Exercise";
6
- import { equationType3Exercise } from "./exercises/calculLitteral/equation/equationType3Exercise";
7
- import { equationType4Exercise } from "./exercises/calculLitteral/equation/equationType4Exercise";
8
- import { factoType1Exercise } from "./exercises/calculLitteral/factorisation/factoType1Exercise";
9
1
  import { exercises } from "./exercises/exercises";
10
- import { simplifySquareRoot } from "./exercises/squareRoots/simpifySquareRoot";
11
- import { randint } from "./mathutils/random/randint";
12
- import { Rational } from "./numbers/rationals/rational";
13
- import { SquareRoot } from "./numbers/reals/squareRoot";
14
- import { Affine } from "./polynomials/affine";
15
- import { Polynomial } from "./polynomials/polynomial";
16
- import { latexParse } from "./tree/latexParser/latexParse";
17
- import { VariableNode } from "./tree/nodes/variables/variableNode";
2
+ import { scientificToDecimal } from "./exercises/powers/scientificToDecimal";
18
3
 
4
+ console.log(scientificToDecimal.generator(10));
5
+ // exercises.forEach((exo) => {
6
+ // console.log(exo.instruction, exo.generator(10));
7
+ // });
19
8
  export { exercises };