math-exercises 1.2.8 → 1.2.11
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.
- package/lib/exercises/calcul/addAndSub.js +40 -0
- package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.js +35 -0
- package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.js +31 -0
- package/lib/exercises/calcul/fractions/fractionAndIntegerSum.js +32 -0
- package/lib/exercises/calcul/fractions/fractionsDivision.js +29 -0
- package/lib/exercises/calcul/fractions/fractionsProduct.js +29 -0
- package/lib/exercises/calcul/fractions/fractionsSum.js +29 -0
- package/lib/exercises/calcul/fractions/simplifyFraction.js +25 -0
- package/lib/exercises/calcul/operations/operationsPriorities.js +88 -0
- package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.js +111 -0
- package/{src → lib}/exercises/calcul/operationsPriorities.js +88 -89
- package/{src → lib}/exercises/calcul/rounding/rounding.js +86 -87
- package/{src → lib}/exercises/calculLitteral/distributivity/allIdentities.js +27 -27
- package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +31 -0
- package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +32 -0
- package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +33 -0
- package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +33 -0
- package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +32 -0
- package/lib/exercises/calculLitteral/equation/equationType1Exercise.js +38 -0
- package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +41 -0
- package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +42 -0
- package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +44 -0
- package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.js +39 -0
- package/{src → lib}/exercises/exercise.js +7 -7
- package/lib/exercises/exercises.js +95 -0
- package/lib/exercises/geometry/cartesian/midpoint.js +29 -0
- package/lib/exercises/geometry/vectors/scalarProductViaCoords.js +29 -0
- package/lib/exercises/geometry/vectors/scalarProductViaNorms.js +27 -0
- package/lib/exercises/powers/powersDivision.js +45 -0
- package/lib/exercises/powers/powersOfTenToDecimal.js +33 -0
- package/lib/exercises/powers/powersPower.js +44 -0
- package/lib/exercises/powers/powersProduct.js +45 -0
- package/lib/exercises/powers/scientificToDecimal.js +38 -0
- package/{src → lib}/exercises/squareRoots/simpifySquareRoot.js +28 -28
- package/lib/exercises/utils/getDistinctQuestions.js +16 -0
- package/lib/geometry/point.js +27 -0
- package/lib/geometry/vector.js +31 -0
- package/lib/index.js +10 -0
- package/lib/mathutils/arithmetic/coprimesOf.js +13 -0
- package/lib/mathutils/arithmetic/dividersOf.js +12 -0
- package/{src → lib}/mathutils/arithmetic/gcd.js +7 -7
- package/{src → lib}/mathutils/arithmetic/isSquare.js +7 -7
- package/{src → lib}/mathutils/arithmetic/lcd.js +12 -12
- package/lib/mathutils/arithmetic/nonCoprimesOf.js +13 -0
- package/lib/mathutils/arithmetic/nonDividersOf.js +14 -0
- package/{src → lib}/mathutils/arithmetic/primeFactors.js +22 -22
- package/lib/mathutils/decimals/decimalPartLengthOf.js +14 -0
- package/lib/mathutils/random/randTupleInt.js +30 -0
- package/{src → lib}/mathutils/random/randint.js +18 -18
- package/{src → lib}/mathutils/round.js +8 -8
- package/{src → lib}/numbers/decimals/decimal.js +140 -144
- package/{src → lib}/numbers/epsilon.js +10 -10
- package/{src → lib}/numbers/integer/integer.js +68 -72
- package/{src → lib}/numbers/integer/power.js +52 -53
- package/{src → lib}/numbers/nombre.js +10 -10
- package/lib/numbers/rationals/rational.js +113 -0
- package/lib/numbers/reals/real.js +16 -0
- package/lib/numbers/reals/squareRoot.js +63 -0
- package/lib/polynomials/affine.js +42 -0
- package/lib/polynomials/polynomial.js +125 -0
- package/lib/sets/discreteSet.js +28 -0
- package/{src/sets/emptySet.ts → lib/sets/emptySet.js} +6 -6
- package/{src → lib}/sets/intervals/intervals.js +108 -113
- package/lib/sets/intervals/union.js +1 -0
- package/lib/sets/mathSet.js +10 -0
- package/lib/sets/mathSetInterface.js +2 -0
- package/{src → lib}/tree/nodes/functions/functionNode.js +18 -19
- package/lib/tree/nodes/functions/oppositeNode.js +13 -0
- package/lib/tree/nodes/functions/sqrtNode.js +15 -0
- package/{src → lib}/tree/nodes/node.js +10 -10
- package/lib/tree/nodes/numbers/numberNode.js +18 -0
- package/lib/tree/nodes/operators/addNode.js +15 -0
- package/lib/tree/nodes/operators/divideNode.js +17 -0
- package/lib/tree/nodes/operators/equalNode.js +13 -0
- package/lib/tree/nodes/operators/fractionNode.js +17 -0
- package/lib/tree/nodes/operators/multiplyNode.js +13 -0
- package/{src → lib}/tree/nodes/operators/operatorNode.js +35 -37
- package/lib/tree/nodes/operators/powerNode.js +13 -0
- package/lib/tree/nodes/operators/substractNode.js +13 -0
- package/lib/tree/nodes/variables/variableNode.js +16 -0
- package/{src → lib}/tree/parsers/derivateParser.js +60 -60
- package/{src → lib}/tree/parsers/latexParser.js +117 -117
- package/lib/utils/arrayEqual.js +13 -0
- package/{src → lib}/utils/coin.js +7 -7
- package/{src → lib}/utils/random.js +7 -7
- package/lib/utils/shuffle.js +15 -0
- package/package.json +35 -28
- package/nodemon.json +0 -5
- package/src/exercises/calcul/addAndSub.js +0 -40
- package/src/exercises/calcul/addAndSub.ts +0 -39
- package/src/exercises/calcul/fractions/fractionAndIntegerDivision.js +0 -35
- package/src/exercises/calcul/fractions/fractionAndIntegerDivision.ts +0 -36
- package/src/exercises/calcul/fractions/fractionAndIntegerProduct.js +0 -31
- package/src/exercises/calcul/fractions/fractionAndIntegerProduct.ts +0 -32
- package/src/exercises/calcul/fractions/fractionAndIntegerSum.js +0 -32
- package/src/exercises/calcul/fractions/fractionAndIntegerSum.ts +0 -31
- package/src/exercises/calcul/fractions/fractionsDivision.js +0 -29
- package/src/exercises/calcul/fractions/fractionsDivision.ts +0 -30
- package/src/exercises/calcul/fractions/fractionsProduct.js +0 -29
- package/src/exercises/calcul/fractions/fractionsProduct.ts +0 -29
- package/src/exercises/calcul/fractions/fractionsSum.js +0 -29
- package/src/exercises/calcul/fractions/fractionsSum.ts +0 -28
- package/src/exercises/calcul/fractions/simplifyFraction.js +0 -25
- package/src/exercises/calcul/fractions/simplifyFraction.ts +0 -24
- package/src/exercises/calcul/operationsPriorities.ts +0 -115
- package/src/exercises/calcul/rounding/rounding.ts +0 -87
- package/src/exercises/calculLitteral/distributivity/allIdentities.ts +0 -26
- package/src/exercises/calculLitteral/distributivity/doubleDistributivity.js +0 -31
- package/src/exercises/calculLitteral/distributivity/doubleDistributivity.ts +0 -33
- package/src/exercises/calculLitteral/distributivity/firstIdentity.js +0 -32
- package/src/exercises/calculLitteral/distributivity/firstIdentity.ts +0 -33
- package/src/exercises/calculLitteral/distributivity/secondIdentity.js +0 -33
- package/src/exercises/calculLitteral/distributivity/secondIdentity.ts +0 -35
- package/src/exercises/calculLitteral/distributivity/simpleDistributivity.js +0 -33
- package/src/exercises/calculLitteral/distributivity/simpleDistributivity.ts +0 -33
- package/src/exercises/calculLitteral/distributivity/thirdIdentity.js +0 -32
- package/src/exercises/calculLitteral/distributivity/thirdIdentity.ts +0 -34
- package/src/exercises/calculLitteral/equation/equationType1Exercise.js +0 -38
- package/src/exercises/calculLitteral/equation/equationType1Exercise.ts +0 -38
- package/src/exercises/calculLitteral/equation/equationType2Exercise.js +0 -41
- package/src/exercises/calculLitteral/equation/equationType2Exercise.ts +0 -41
- package/src/exercises/calculLitteral/equation/equationType3Exercise.js +0 -42
- package/src/exercises/calculLitteral/equation/equationType3Exercise.ts +0 -43
- package/src/exercises/calculLitteral/equation/equationType4Exercise.js +0 -44
- package/src/exercises/calculLitteral/equation/equationType4Exercise.ts +0 -46
- package/src/exercises/calculLitteral/factorisation/factoType1Exercise.js +0 -39
- package/src/exercises/calculLitteral/factorisation/factoType1Exercise.ts +0 -54
- package/src/exercises/exercise.ts +0 -22
- package/src/exercises/exercises.js +0 -85
- package/src/exercises/exercises.ts +0 -94
- package/src/exercises/powers/powersDivision.js +0 -46
- package/src/exercises/powers/powersDivision.ts +0 -51
- package/src/exercises/powers/powersOfTenToDecimal.js +0 -33
- package/src/exercises/powers/powersOfTenToDecimal.ts +0 -37
- package/src/exercises/powers/powersPower.js +0 -45
- package/src/exercises/powers/powersPower.ts +0 -55
- package/src/exercises/powers/powersProduct.js +0 -46
- package/src/exercises/powers/powersProduct.ts +0 -51
- package/src/exercises/powers/scientificToDecimal.js +0 -38
- package/src/exercises/powers/scientificToDecimal.ts +0 -44
- package/src/exercises/squareRoots/simpifySquareRoot.ts +0 -27
- package/src/exercises/utils/getDistinctQuestions.js +0 -18
- package/src/exercises/utils/getDistinctQuestions.ts +0 -14
- package/src/index.js +0 -5
- package/src/index.ts +0 -13
- package/src/mathutils/arithmetic/coprimesOf.js +0 -13
- package/src/mathutils/arithmetic/coprimesOf.ts +0 -9
- package/src/mathutils/arithmetic/dividersOf.ts +0 -7
- package/src/mathutils/arithmetic/gcd.ts +0 -3
- package/src/mathutils/arithmetic/isSquare.ts +0 -3
- package/src/mathutils/arithmetic/lcd.ts +0 -7
- package/src/mathutils/arithmetic/nonCoprimesOf.ts +0 -9
- package/src/mathutils/arithmetic/nonDividersOf.ts +0 -12
- package/src/mathutils/arithmetic/primeFactors.ts +0 -18
- package/src/mathutils/decimals/decimalPartLengthOf.ts +0 -10
- package/src/mathutils/random/randint.ts +0 -12
- package/src/mathutils/round.ts +0 -5
- package/src/numbers/decimals/decimal.ts +0 -140
- package/src/numbers/epsilon.ts +0 -7
- package/src/numbers/integer/integer.ts +0 -72
- package/src/numbers/integer/power.ts +0 -49
- package/src/numbers/nombre.ts +0 -15
- package/src/numbers/number.js +0 -8
- package/src/numbers/rationals/rational.js +0 -128
- package/src/numbers/rationals/rational.ts +0 -122
- package/src/numbers/reals/real.js +0 -17
- package/src/numbers/reals/real.ts +0 -17
- package/src/numbers/reals/squareRoot.js +0 -85
- package/src/numbers/reals/squareRoot.ts +0 -70
- package/src/polynomials/affine.js +0 -71
- package/src/polynomials/affine.ts +0 -60
- package/src/polynomials/polynomial.js +0 -128
- package/src/polynomials/polynomial.ts +0 -137
- package/src/sets/discreteSet.js +0 -30
- package/src/sets/discreteSet.ts +0 -30
- package/src/sets/intervals/intervals.ts +0 -122
- package/src/sets/intervals/union.ts +0 -0
- package/src/sets/mathSet.js +0 -11
- package/src/sets/mathSet.ts +0 -12
- package/src/sets/mathSetInterface.js +0 -2
- package/src/sets/mathSetInterface.ts +0 -10
- package/src/tree/latexParser/latexParse.js +0 -117
- package/src/tree/nodes/functions/functionNode.ts +0 -18
- package/src/tree/nodes/functions/oppositeNode.js +0 -30
- package/src/tree/nodes/functions/oppositeNode.ts +0 -12
- package/src/tree/nodes/functions/sqrtNode.js +0 -33
- package/src/tree/nodes/functions/sqrtNode.ts +0 -12
- package/src/tree/nodes/node.ts +0 -12
- package/src/tree/nodes/numbers/numberNode.js +0 -16
- package/src/tree/nodes/numbers/numberNode.ts +0 -16
- package/src/tree/nodes/operators/addNode.js +0 -33
- package/src/tree/nodes/operators/addNode.ts +0 -13
- package/src/tree/nodes/operators/divideNode.js +0 -34
- package/src/tree/nodes/operators/divideNode.ts +0 -16
- package/src/tree/nodes/operators/equalNode.js +0 -30
- package/src/tree/nodes/operators/equalNode.ts +0 -11
- package/src/tree/nodes/operators/fractionNode.js +0 -34
- package/src/tree/nodes/operators/fractionNode.ts +0 -16
- package/src/tree/nodes/operators/multiplyNode.js +0 -30
- package/src/tree/nodes/operators/multiplyNode.ts +0 -12
- package/src/tree/nodes/operators/operatorNode.ts +0 -36
- package/src/tree/nodes/operators/oppositeNode.js +0 -18
- package/src/tree/nodes/operators/powerNode.js +0 -30
- package/src/tree/nodes/operators/powerNode.ts +0 -12
- package/src/tree/nodes/operators/substractNode.js +0 -30
- package/src/tree/nodes/operators/substractNode.ts +0 -11
- package/src/tree/nodes/variables/variableNode.js +0 -17
- package/src/tree/nodes/variables/variableNode.ts +0 -15
- package/src/tree/parsers/derivateParser.ts +0 -66
- package/src/tree/parsers/latexParser.ts +0 -122
- package/src/utils/coin.ts +0 -3
- package/src/utils/random.ts +0 -3
- package/src/utils/randomIn.js +0 -7
- package/src/utils/shuffle.js +0 -24
- package/src/utils/shuffle.ts +0 -11
- package/tsconfig.json +0 -110
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports
|
|
3
|
-
exports.derivateParser = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
function derivateParser(node) {
|
|
16
|
-
if (!node)
|
|
17
|
-
throw Error("encountered a null node ??");
|
|
18
|
-
switch (node.type) {
|
|
19
|
-
case node_1.NodeType.variable:
|
|
20
|
-
return new numberNode_1.NumberNode(1);
|
|
21
|
-
case node_1.NodeType.number:
|
|
22
|
-
return new numberNode_1.NumberNode(0);
|
|
23
|
-
case node_1.NodeType.operator:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
switch (operatorNode.id) {
|
|
28
|
-
case operatorNode_1.OperatorIds.add:
|
|
29
|
-
return new addNode_1.AddNode(derivateParser(u), derivateParser(v));
|
|
30
|
-
case operatorNode_1.OperatorIds.substract: {
|
|
31
|
-
return new substractNode_1.SubstractNode(derivateParser(u), derivateParser(v));
|
|
32
|
-
}
|
|
33
|
-
case operatorNode_1.OperatorIds.multiply: {
|
|
34
|
-
return new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(derivateParser(u), v), new multiplyNode_1.MultiplyNode(u, derivateParser(v)));
|
|
35
|
-
}
|
|
36
|
-
case operatorNode_1.OperatorIds.divide:
|
|
37
|
-
case operatorNode_1.OperatorIds.fraction:
|
|
38
|
-
return new fractionNode_1.FractionNode(new substractNode_1.SubstractNode(new multiplyNode_1.MultiplyNode(derivateParser(u), v), new multiplyNode_1.MultiplyNode(u, derivateParser(v))), new powerNode_1.PowerNode(v, new numberNode_1.NumberNode(2)));
|
|
39
|
-
case operatorNode_1.OperatorIds.power: {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return new multiplyNode_1.MultiplyNode(n, new multiplyNode_1.MultiplyNode(derivateParser(
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
case node_1.NodeType
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
switch (functionNode.id) {
|
|
50
|
-
case functionNode_1.FunctionsIds.sqrt: {
|
|
51
|
-
return new fractionNode_1.FractionNode(derivateParser(child), new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(2), new sqrtNode_1.SqrtNode(child)));
|
|
52
|
-
}
|
|
53
|
-
case functionNode_1.FunctionsIds.opposite: {
|
|
54
|
-
return new oppositeNode_1.OppositeNode(derivateParser(child));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.derivateParser = derivateParser;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.derivateParser = void 0;
|
|
4
|
+
const node_1 = require("../nodes/node");
|
|
5
|
+
const numberNode_1 = require("../nodes/numbers/numberNode");
|
|
6
|
+
const powerNode_1 = require("../nodes/operators/powerNode");
|
|
7
|
+
const addNode_1 = require("../nodes/operators/addNode");
|
|
8
|
+
const fractionNode_1 = require("../nodes/operators/fractionNode");
|
|
9
|
+
const multiplyNode_1 = require("../nodes/operators/multiplyNode");
|
|
10
|
+
const operatorNode_1 = require("../nodes/operators/operatorNode");
|
|
11
|
+
const substractNode_1 = require("../nodes/operators/substractNode");
|
|
12
|
+
const functionNode_1 = require("../nodes/functions/functionNode");
|
|
13
|
+
const sqrtNode_1 = require("../nodes/functions/sqrtNode");
|
|
14
|
+
const oppositeNode_1 = require("../nodes/functions/oppositeNode");
|
|
15
|
+
function derivateParser(node) {
|
|
16
|
+
if (!node)
|
|
17
|
+
throw Error("encountered a null node ??");
|
|
18
|
+
switch (node.type) {
|
|
19
|
+
case node_1.NodeType.variable:
|
|
20
|
+
return new numberNode_1.NumberNode(1);
|
|
21
|
+
case node_1.NodeType.number:
|
|
22
|
+
return new numberNode_1.NumberNode(0);
|
|
23
|
+
case node_1.NodeType.operator:
|
|
24
|
+
const operatorNode = node;
|
|
25
|
+
const u = operatorNode.leftChild;
|
|
26
|
+
const v = operatorNode.rightChild;
|
|
27
|
+
switch (operatorNode.id) {
|
|
28
|
+
case operatorNode_1.OperatorIds.add:
|
|
29
|
+
return new addNode_1.AddNode(derivateParser(u), derivateParser(v));
|
|
30
|
+
case operatorNode_1.OperatorIds.substract: {
|
|
31
|
+
return new substractNode_1.SubstractNode(derivateParser(u), derivateParser(v));
|
|
32
|
+
}
|
|
33
|
+
case operatorNode_1.OperatorIds.multiply: {
|
|
34
|
+
return new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(derivateParser(u), v), new multiplyNode_1.MultiplyNode(u, derivateParser(v)));
|
|
35
|
+
}
|
|
36
|
+
case operatorNode_1.OperatorIds.divide:
|
|
37
|
+
case operatorNode_1.OperatorIds.fraction:
|
|
38
|
+
return new fractionNode_1.FractionNode(new substractNode_1.SubstractNode(new multiplyNode_1.MultiplyNode(derivateParser(u), v), new multiplyNode_1.MultiplyNode(u, derivateParser(v))), new powerNode_1.PowerNode(v, new numberNode_1.NumberNode(2)));
|
|
39
|
+
case operatorNode_1.OperatorIds.power: {
|
|
40
|
+
const operatorNode = node;
|
|
41
|
+
const n = operatorNode.rightChild;
|
|
42
|
+
const u = operatorNode.leftChild;
|
|
43
|
+
return new multiplyNode_1.MultiplyNode(n, new multiplyNode_1.MultiplyNode(derivateParser(u), new powerNode_1.PowerNode(u, new numberNode_1.NumberNode(n.value - 1))));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
case node_1.NodeType.function: {
|
|
47
|
+
const functionNode = node;
|
|
48
|
+
const child = functionNode.child;
|
|
49
|
+
switch (functionNode.id) {
|
|
50
|
+
case functionNode_1.FunctionsIds.sqrt: {
|
|
51
|
+
return new fractionNode_1.FractionNode(derivateParser(child), new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(2), new sqrtNode_1.SqrtNode(child)));
|
|
52
|
+
}
|
|
53
|
+
case functionNode_1.FunctionsIds.opposite: {
|
|
54
|
+
return new oppositeNode_1.OppositeNode(derivateParser(child));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.derivateParser = derivateParser;
|
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports
|
|
3
|
-
exports.latexParser = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function latexParser(node) {
|
|
8
|
-
if (!node) {
|
|
9
|
-
console.log("parsing a null node ???");
|
|
10
|
-
return "";
|
|
11
|
-
}
|
|
12
|
-
switch (node.type) {
|
|
13
|
-
case node_1.NodeType.variable:
|
|
14
|
-
return node.tex;
|
|
15
|
-
case node_1.NodeType.number:
|
|
16
|
-
return node.tex;
|
|
17
|
-
case node_1.NodeType.operator:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
switch (operatorNode.id) {
|
|
23
|
-
case operatorNode_1.OperatorIds.add:
|
|
24
|
-
return
|
|
25
|
-
case operatorNode_1.OperatorIds.substract: {
|
|
26
|
-
|
|
27
|
-
[operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(rightChild.id)) ||
|
|
28
|
-
rightTex[0] === "-";
|
|
29
|
-
if (needBrackets)
|
|
30
|
-
rightTex =
|
|
31
|
-
return
|
|
32
|
-
}
|
|
33
|
-
case operatorNode_1.OperatorIds.multiply: {
|
|
34
|
-
if (leftChild.type === node_1.NodeType.operator) {
|
|
35
|
-
if ([operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract, operatorNode_1.OperatorIds.divide].includes(leftChild.id))
|
|
36
|
-
leftTex =
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (rightChild.type === node_1.NodeType.operator) {
|
|
40
|
-
|
|
41
|
-
needBrackets || (needBrackets = [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(operatorRightChild.id));
|
|
42
|
-
}
|
|
43
|
-
if (needBrackets)
|
|
44
|
-
rightTex =
|
|
45
|
-
// permet de gérer le cas 3*2^x
|
|
46
|
-
|
|
47
|
-
if (rightChild.type === node_1.NodeType.operator) {
|
|
48
|
-
|
|
49
|
-
showTimesSign || (showTimesSign = [operatorNode_1.OperatorIds.fraction].includes(operatorRightChild.id));
|
|
50
|
-
}
|
|
51
|
-
return
|
|
52
|
-
}
|
|
53
|
-
case operatorNode_1.OperatorIds.divide: {
|
|
54
|
-
if (leftChild.type === node_1.NodeType.operator) {
|
|
55
|
-
if ([operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract, operatorNode_1.OperatorIds.multiply].includes(leftChild.id))
|
|
56
|
-
leftTex =
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (rightChild.type === node_1.NodeType.operator) {
|
|
60
|
-
|
|
61
|
-
needBrackets || (needBrackets = [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(operatorRightChild.id));
|
|
62
|
-
}
|
|
63
|
-
if (needBrackets)
|
|
64
|
-
rightTex =
|
|
65
|
-
return
|
|
66
|
-
}
|
|
67
|
-
case operatorNode_1.OperatorIds.fraction: {
|
|
68
|
-
return
|
|
69
|
-
}
|
|
70
|
-
case operatorNode_1.OperatorIds.power: {
|
|
71
|
-
|
|
72
|
-
if (leftChild.type === node_1.NodeType.operator) {
|
|
73
|
-
|
|
74
|
-
needBrackets || (needBrackets = [
|
|
75
|
-
operatorNode_1.OperatorIds.add,
|
|
76
|
-
operatorNode_1.OperatorIds.substract,
|
|
77
|
-
operatorNode_1.OperatorIds.multiply,
|
|
78
|
-
operatorNode_1.OperatorIds.divide,
|
|
79
|
-
operatorNode_1.OperatorIds.fraction,
|
|
80
|
-
operatorNode_1.OperatorIds.power,
|
|
81
|
-
].includes(childOperator.id));
|
|
82
|
-
}
|
|
83
|
-
if (needBrackets)
|
|
84
|
-
leftTex =
|
|
85
|
-
return
|
|
86
|
-
}
|
|
87
|
-
case operatorNode_1.OperatorIds.equal: {
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
default:
|
|
91
|
-
return node.tex;
|
|
92
|
-
}
|
|
93
|
-
case node_1.NodeType
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
switch (functionNode.id) {
|
|
98
|
-
case functionNode_1.FunctionsIds.sqrt: {
|
|
99
|
-
return
|
|
100
|
-
}
|
|
101
|
-
case functionNode_1.FunctionsIds.opposite: {
|
|
102
|
-
|
|
103
|
-
if (child.type === node_1.NodeType.operator) {
|
|
104
|
-
|
|
105
|
-
needBrackets || (needBrackets = [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(operatorChild.id));
|
|
106
|
-
}
|
|
107
|
-
if (needBrackets)
|
|
108
|
-
childTex =
|
|
109
|
-
return
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
default:
|
|
114
|
-
return "";
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
exports.latexParser = latexParser;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.latexParser = void 0;
|
|
4
|
+
const functionNode_1 = require("../nodes/functions/functionNode");
|
|
5
|
+
const node_1 = require("../nodes/node");
|
|
6
|
+
const operatorNode_1 = require("../nodes/operators/operatorNode");
|
|
7
|
+
function latexParser(node) {
|
|
8
|
+
if (!node) {
|
|
9
|
+
console.log("parsing a null node ???");
|
|
10
|
+
return "";
|
|
11
|
+
}
|
|
12
|
+
switch (node.type) {
|
|
13
|
+
case node_1.NodeType.variable:
|
|
14
|
+
return node.tex;
|
|
15
|
+
case node_1.NodeType.number:
|
|
16
|
+
return node.tex;
|
|
17
|
+
case node_1.NodeType.operator:
|
|
18
|
+
const operatorNode = node;
|
|
19
|
+
let rightTex = latexParser(operatorNode.rightChild);
|
|
20
|
+
let leftTex = latexParser(operatorNode.leftChild);
|
|
21
|
+
const { leftChild, rightChild } = operatorNode;
|
|
22
|
+
switch (operatorNode.id) {
|
|
23
|
+
case operatorNode_1.OperatorIds.add:
|
|
24
|
+
return `${leftTex} ${rightTex[0] === "-" ? "" : "+ "}${rightTex}`;
|
|
25
|
+
case operatorNode_1.OperatorIds.substract: {
|
|
26
|
+
const needBrackets = (rightChild.type === node_1.NodeType.operator &&
|
|
27
|
+
[operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(rightChild.id)) ||
|
|
28
|
+
rightTex[0] === "-";
|
|
29
|
+
if (needBrackets)
|
|
30
|
+
rightTex = `(${rightTex})`;
|
|
31
|
+
return `${leftTex} - ${rightTex}`;
|
|
32
|
+
}
|
|
33
|
+
case operatorNode_1.OperatorIds.multiply: {
|
|
34
|
+
if (leftChild.type === node_1.NodeType.operator) {
|
|
35
|
+
if ([operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract, operatorNode_1.OperatorIds.divide].includes(leftChild.id))
|
|
36
|
+
leftTex = `(${leftTex})`;
|
|
37
|
+
}
|
|
38
|
+
let needBrackets = rightTex[0] === "-";
|
|
39
|
+
if (rightChild.type === node_1.NodeType.operator) {
|
|
40
|
+
const operatorRightChild = rightChild;
|
|
41
|
+
needBrackets || (needBrackets = [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(operatorRightChild.id));
|
|
42
|
+
}
|
|
43
|
+
if (needBrackets)
|
|
44
|
+
rightTex = `(${rightTex})`;
|
|
45
|
+
// permet de gérer le cas 3*2^x
|
|
46
|
+
let showTimesSign = !isNaN(+rightTex[0]) || rightChild.type === node_1.NodeType.number;
|
|
47
|
+
if (rightChild.type === node_1.NodeType.operator) {
|
|
48
|
+
const operatorRightChild = rightChild;
|
|
49
|
+
showTimesSign || (showTimesSign = [operatorNode_1.OperatorIds.fraction].includes(operatorRightChild.id));
|
|
50
|
+
}
|
|
51
|
+
return `${leftTex}${showTimesSign ? "\\times " : ""}${rightTex}`;
|
|
52
|
+
}
|
|
53
|
+
case operatorNode_1.OperatorIds.divide: {
|
|
54
|
+
if (leftChild.type === node_1.NodeType.operator) {
|
|
55
|
+
if ([operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract, operatorNode_1.OperatorIds.multiply].includes(leftChild.id))
|
|
56
|
+
leftTex = `(${leftTex})`;
|
|
57
|
+
}
|
|
58
|
+
let needBrackets = rightTex[0] === "-";
|
|
59
|
+
if (rightChild.type === node_1.NodeType.operator) {
|
|
60
|
+
const operatorRightChild = rightChild;
|
|
61
|
+
needBrackets || (needBrackets = [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(operatorRightChild.id));
|
|
62
|
+
}
|
|
63
|
+
if (needBrackets)
|
|
64
|
+
rightTex = `(${rightTex})`;
|
|
65
|
+
return `${leftTex} \\div ${rightTex}`;
|
|
66
|
+
}
|
|
67
|
+
case operatorNode_1.OperatorIds.fraction: {
|
|
68
|
+
return `\\frac{${leftTex}}{${rightTex}}`;
|
|
69
|
+
}
|
|
70
|
+
case operatorNode_1.OperatorIds.power: {
|
|
71
|
+
let needBrackets = leftTex[0] === "-";
|
|
72
|
+
if (leftChild.type === node_1.NodeType.operator) {
|
|
73
|
+
const childOperator = leftChild;
|
|
74
|
+
needBrackets || (needBrackets = [
|
|
75
|
+
operatorNode_1.OperatorIds.add,
|
|
76
|
+
operatorNode_1.OperatorIds.substract,
|
|
77
|
+
operatorNode_1.OperatorIds.multiply,
|
|
78
|
+
operatorNode_1.OperatorIds.divide,
|
|
79
|
+
operatorNode_1.OperatorIds.fraction,
|
|
80
|
+
operatorNode_1.OperatorIds.power,
|
|
81
|
+
].includes(childOperator.id));
|
|
82
|
+
}
|
|
83
|
+
if (needBrackets)
|
|
84
|
+
leftTex = `(${leftTex})`;
|
|
85
|
+
return `${leftTex}^{${rightTex}}`;
|
|
86
|
+
}
|
|
87
|
+
case operatorNode_1.OperatorIds.equal: {
|
|
88
|
+
return `${leftTex} = ${rightTex}`;
|
|
89
|
+
}
|
|
90
|
+
default:
|
|
91
|
+
return node.tex;
|
|
92
|
+
}
|
|
93
|
+
case node_1.NodeType.function: {
|
|
94
|
+
const functionNode = node;
|
|
95
|
+
const child = functionNode.child;
|
|
96
|
+
let childTex = latexParser(functionNode.child);
|
|
97
|
+
switch (functionNode.id) {
|
|
98
|
+
case functionNode_1.FunctionsIds.sqrt: {
|
|
99
|
+
return `\\sqrt{${childTex}}`;
|
|
100
|
+
}
|
|
101
|
+
case functionNode_1.FunctionsIds.opposite: {
|
|
102
|
+
let needBrackets = childTex[0] === "-";
|
|
103
|
+
if (child.type === node_1.NodeType.operator) {
|
|
104
|
+
const operatorChild = child;
|
|
105
|
+
needBrackets || (needBrackets = [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(operatorChild.id));
|
|
106
|
+
}
|
|
107
|
+
if (needBrackets)
|
|
108
|
+
childTex = `(${childTex})`;
|
|
109
|
+
return `-${childTex}`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
default:
|
|
114
|
+
return "";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.latexParser = latexParser;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.arrayEqual = void 0;
|
|
4
|
+
function arrayEqual(arr1, arr2) {
|
|
5
|
+
if (arr1.length !== arr2.length)
|
|
6
|
+
return false;
|
|
7
|
+
for (let i = 0; i < arr1.length; i++) {
|
|
8
|
+
if (arr1[i] !== arr2[i])
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
exports.arrayEqual = arrayEqual;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports
|
|
3
|
-
exports.coin = void 0;
|
|
4
|
-
|
|
5
|
-
return Math.random() < 0.5;
|
|
6
|
-
};
|
|
7
|
-
exports.coin = coin;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.coin = void 0;
|
|
4
|
+
const coin = () => {
|
|
5
|
+
return Math.random() < 0.5;
|
|
6
|
+
};
|
|
7
|
+
exports.coin = coin;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports
|
|
3
|
-
exports.random = void 0;
|
|
4
|
-
function random(array) {
|
|
5
|
-
return array[Math.floor(Math.random() * array.length)];
|
|
6
|
-
}
|
|
7
|
-
exports.random = random;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.random = void 0;
|
|
4
|
+
function random(array) {
|
|
5
|
+
return array[Math.floor(Math.random() * array.length)];
|
|
6
|
+
}
|
|
7
|
+
exports.random = random;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shuffle = void 0;
|
|
4
|
+
/* Randomize array in-place using Durstenfeld shuffle algorithm */
|
|
5
|
+
function shuffle(array) {
|
|
6
|
+
const res = [...array];
|
|
7
|
+
for (var i = res.length - 1; i > 0; i--) {
|
|
8
|
+
var j = Math.floor(Math.random() * (i + 1));
|
|
9
|
+
var temp = res[i];
|
|
10
|
+
res[i] = res[j];
|
|
11
|
+
res[j] = temp;
|
|
12
|
+
}
|
|
13
|
+
return res;
|
|
14
|
+
}
|
|
15
|
+
exports.shuffle = shuffle;
|
package/package.json
CHANGED
|
@@ -1,28 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "math-exercises",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "Générateurs d'exercices et questions mathématiques en latex",
|
|
5
|
-
"main": "src/index.js",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
},
|
|
27
|
-
"
|
|
28
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "math-exercises",
|
|
3
|
+
"version": "1.2.11",
|
|
4
|
+
"description": "Générateurs d'exercices et questions mathématiques en latex",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"lib/**/*"
|
|
8
|
+
],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
11
|
+
"start:dev": "nodemon",
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"prepublish": "tsc"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [],
|
|
16
|
+
"author": "Heureux Hasard",
|
|
17
|
+
"license": "ISC",
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^18.11.9",
|
|
20
|
+
"nodemon": "^2.0.20",
|
|
21
|
+
"prettier": "^2.8.4",
|
|
22
|
+
"ts-node": "^10.9.1",
|
|
23
|
+
"tslint": "^6.1.3",
|
|
24
|
+
"tslint-config-prettier": "^1.18.0",
|
|
25
|
+
"typescript": "^4.9.3"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/krirkrirk/math-exercices.git"
|
|
30
|
+
},
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/krirkrirk/math-exercices/issues"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://github.com/krirkrirk/math-exercices#readme"
|
|
35
|
+
}
|
package/nodemon.json
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports.__esModule = true;
|
|
3
|
-
exports.getAddAndSubQuestions = exports.addAndSubExercise = void 0;
|
|
4
|
-
var randint_1 = require("../../mathutils/random/randint");
|
|
5
|
-
var latexParser_1 = require("../../tree/parsers/latexParser");
|
|
6
|
-
var numberNode_1 = require("../../tree/nodes/numbers/numberNode");
|
|
7
|
-
var addNode_1 = require("../../tree/nodes/operators/addNode");
|
|
8
|
-
var getDistinctQuestions_1 = require("../utils/getDistinctQuestions");
|
|
9
|
-
/**
|
|
10
|
-
* a±b±c±d
|
|
11
|
-
*/
|
|
12
|
-
exports.addAndSubExercise = {
|
|
13
|
-
id: "addAndSub",
|
|
14
|
-
connector: "=",
|
|
15
|
-
instruction: "Calculer :",
|
|
16
|
-
label: "Additions et soustractions",
|
|
17
|
-
levels: ["6", "5"],
|
|
18
|
-
section: "Calculs",
|
|
19
|
-
isSingleStep: true,
|
|
20
|
-
generator: function (nb) { return (0, getDistinctQuestions_1.getDistinctQuestions)(getAddAndSubQuestions, nb); }
|
|
21
|
-
};
|
|
22
|
-
function getAddAndSubQuestions() {
|
|
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]));
|
|
27
|
-
}
|
|
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
|
-
startStatement: (0, latexParser_1.latexParser)(statementTree),
|
|
36
|
-
answer: answer
|
|
37
|
-
};
|
|
38
|
-
return question;
|
|
39
|
-
}
|
|
40
|
-
exports.getAddAndSubQuestions = getAddAndSubQuestions;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { randint } from "../../mathutils/random/randint";
|
|
2
|
-
import { latexParser } from "../../tree/parsers/latexParser";
|
|
3
|
-
import { NumberNode } from "../../tree/nodes/numbers/numberNode";
|
|
4
|
-
import { AddNode } from "../../tree/nodes/operators/addNode";
|
|
5
|
-
import { Exercise, Question } from "../exercise";
|
|
6
|
-
import { getDistinctQuestions } from "../utils/getDistinctQuestions";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* a±b±c±d
|
|
10
|
-
*/
|
|
11
|
-
export const addAndSubExercise: Exercise = {
|
|
12
|
-
id: "addAndSub",
|
|
13
|
-
connector: "=",
|
|
14
|
-
instruction: "Calculer :",
|
|
15
|
-
label: "Additions et soustractions",
|
|
16
|
-
levels: ["6", "5"],
|
|
17
|
-
section: "Calculs",
|
|
18
|
-
isSingleStep: true,
|
|
19
|
-
generator: (nb: number) => getDistinctQuestions(getAddAndSubQuestions, nb),
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export function getAddAndSubQuestions(): Question {
|
|
23
|
-
const nbOperations = randint(2, 4);
|
|
24
|
-
const numbers = [];
|
|
25
|
-
for (let i = 0; i < nbOperations + 1; i++) {
|
|
26
|
-
numbers.push(randint(-15, 15, [0]));
|
|
27
|
-
}
|
|
28
|
-
const allNumbersNodes = numbers.map((nb) => new NumberNode(nb));
|
|
29
|
-
let statementTree = new AddNode(allNumbersNodes[0], allNumbersNodes[1]);
|
|
30
|
-
for (let i = 2; i < allNumbersNodes.length; i++) {
|
|
31
|
-
statementTree = new AddNode(statementTree, allNumbersNodes[i]);
|
|
32
|
-
}
|
|
33
|
-
const answer = numbers.reduce((a, b) => a + b) + "";
|
|
34
|
-
const question: Question = {
|
|
35
|
-
startStatement: latexParser(statementTree),
|
|
36
|
-
answer: answer,
|
|
37
|
-
};
|
|
38
|
-
return question;
|
|
39
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
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 latexParser_1 = require("../../../tree/parsers/latexParser");
|
|
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: "Division d'un entier et d'une fraction",
|
|
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
|
-
startStatement: (0, latexParser_1.latexParser)(statementTree),
|
|
31
|
-
answer: (0, latexParser_1.latexParser)(answerTree)
|
|
32
|
-
};
|
|
33
|
-
return question;
|
|
34
|
-
}
|
|
35
|
-
exports.getFractionAndIntegerDivision = getFractionAndIntegerDivision;
|