math-exercises 3.0.48 → 3.0.49
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/math/calcul/addAndSub.d.ts +7 -1
- package/lib/exercises/math/calcul/addAndSub.d.ts.map +1 -1
- package/lib/exercises/math/calcul/addAndSub.js +26 -14
- package/lib/exercises/math/calculLitteral/factorisation/factoIdRmq1.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/factorisation/factoIdRmq2.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/factorisation/factoIdRmq3.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/affineExpressionReading.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/affineExpressionReading.js +0 -1
- package/lib/exercises/math/functions/affines/index.d.ts +0 -1
- package/lib/exercises/math/functions/affines/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/index.js +0 -1
- package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.d.ts +10 -0
- package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.js +171 -0
- package/lib/exercises/math/geometry/lines/findPointOnLineWithCartesianEquation.d.ts +9 -0
- package/lib/exercises/math/geometry/lines/findPointOnLineWithCartesianEquation.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/findPointOnLineWithCartesianEquation.js +146 -0
- package/lib/exercises/math/geometry/lines/findPointOnLineWithReductEquation.d.ts +8 -0
- package/lib/exercises/math/geometry/lines/findPointOnLineWithReductEquation.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/findPointOnLineWithReductEquation.js +99 -0
- package/lib/exercises/math/geometry/lines/index.d.ts +5 -0
- package/lib/exercises/math/geometry/lines/index.d.ts.map +1 -1
- package/lib/exercises/math/geometry/lines/index.js +5 -0
- package/lib/exercises/math/geometry/lines/isPointOnCartesianLine.d.ts +13 -0
- package/lib/exercises/math/geometry/lines/isPointOnCartesianLine.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/isPointOnCartesianLine.js +118 -0
- package/lib/exercises/math/geometry/lines/isPointOnLine.d.ts +11 -0
- package/lib/exercises/math/geometry/lines/isPointOnLine.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/isPointOnLine.js +94 -0
- package/lib/exercises/math/probaStat/probabilityTree.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/etendueList.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/etendueList.js +46 -14
- package/lib/index.d.ts +28 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/math/sequences/geometricSequence.js +2 -2
- package/lib/playground.d.ts.map +1 -1
- package/lib/playground.js +0 -6
- package/lib/tree/nodes/algebraicNode.d.ts +0 -1
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/node.d.ts +1 -0
- package/lib/tree/nodes/node.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
- package/lib/tree/nodes/numbers/numberNode.js +4 -1
- package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/fractionNode.js +14 -25
- package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/multiplyNode.js +7 -1
- package/lib/tree/nodes/operators/scalarProductNode.d.ts.map +1 -1
- package/lib/tree/nodes/polynomials/monomNode.js +1 -2
- package/lib/tree/parsers/pointParser.d.ts +3 -0
- package/lib/tree/parsers/pointParser.d.ts.map +1 -0
- package/lib/tree/parsers/pointParser.js +13 -0
- package/lib/tree/parsers/spacePointParser.d.ts.map +1 -1
- package/lib/tree/parsers/spacePointParser.js +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { Point } from "../../../../math/geometry/point.js";
|
|
4
|
+
import { gcd } from "../../../../math/utils/arithmetic/gcd.js";
|
|
5
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
6
|
+
import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
|
|
7
|
+
import { add } from "../../../../tree/nodes/operators/addNode.js";
|
|
8
|
+
import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
|
|
9
|
+
import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
10
|
+
import { substract } from "../../../../tree/nodes/operators/substractNode.js";
|
|
11
|
+
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
12
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
13
|
+
import { randomLetter } from "../../../../utils/strings/randomLetter.js";
|
|
14
|
+
const getCartesianEquation = (identifiers) => {
|
|
15
|
+
const { a, b, c } = identifiers;
|
|
16
|
+
return add(add(multiply(a, "x"), multiply(b, "y")), c).simplify({
|
|
17
|
+
forbidFactorize: true,
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
const getPropositions = (n, { answer }) => {
|
|
21
|
+
const propositions = [];
|
|
22
|
+
addValidProp(propositions, answer, "raw");
|
|
23
|
+
tryToAddWrongProp(propositions, "Oui", "raw");
|
|
24
|
+
tryToAddWrongProp(propositions, "Non", "raw");
|
|
25
|
+
tryToAddWrongProp(propositions, "On ne peut pas savoir", "raw");
|
|
26
|
+
return shuffleProps(propositions, n);
|
|
27
|
+
};
|
|
28
|
+
const getAnswer = (identifiers) => {
|
|
29
|
+
return identifiers.isOnLine ? "Oui" : "Non";
|
|
30
|
+
};
|
|
31
|
+
const getInstruction = (identifiers) => {
|
|
32
|
+
const { x, y } = identifiers;
|
|
33
|
+
const point = new Point(randomLetter(true), reifyAlgebraic(x), reifyAlgebraic(y));
|
|
34
|
+
return `On considère la droite $d$ d'équation cartésienne :
|
|
35
|
+
|
|
36
|
+
$$
|
|
37
|
+
${getCartesianEquation(identifiers).toTex()}=0
|
|
38
|
+
$$
|
|
39
|
+
|
|
40
|
+
Le point $${point.toTexWithCoords()}$ appartient-il à $d$ ?`;
|
|
41
|
+
};
|
|
42
|
+
const getHint = (identifiers) => {
|
|
43
|
+
return `Remplace $x$ et $y$ dans l'équation de la droite par les coordonnées du point. Le point appartient à la droite si et seulement si le résultat est égal à $0$.`;
|
|
44
|
+
};
|
|
45
|
+
const getCorrection = (identifiers) => {
|
|
46
|
+
const { x, y } = identifiers;
|
|
47
|
+
const xNode = reifyAlgebraic(x);
|
|
48
|
+
const yNode = reifyAlgebraic(y);
|
|
49
|
+
const equation = getCartesianEquation(identifiers);
|
|
50
|
+
const detailed = equation.toDetailedEvaluation({ x: xNode, y: yNode });
|
|
51
|
+
const simp = detailed.simplify();
|
|
52
|
+
return `On remplace $x$ et $y$ dans l'équation de la droite par les coordonnées du point :
|
|
53
|
+
|
|
54
|
+
${alignTex([
|
|
55
|
+
["", detailed.toTex()],
|
|
56
|
+
["=", simp.toTex()],
|
|
57
|
+
])}
|
|
58
|
+
|
|
59
|
+
${identifiers.isOnLine
|
|
60
|
+
? `On obtient bien $0$. Le point appartient donc bien à la droite.`
|
|
61
|
+
: `On n'obtient pas $0$. Le point n'appartient donc pas à la droite.`}
|
|
62
|
+
`;
|
|
63
|
+
};
|
|
64
|
+
const getKeys = (identifiers) => {
|
|
65
|
+
return [];
|
|
66
|
+
};
|
|
67
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
68
|
+
throw Error("VEA not implemented");
|
|
69
|
+
};
|
|
70
|
+
const getIsPointOnLineQuestion = () => {
|
|
71
|
+
let a;
|
|
72
|
+
let b;
|
|
73
|
+
let c;
|
|
74
|
+
do {
|
|
75
|
+
a = randint(-9, 10);
|
|
76
|
+
b = randint(-9, 10, a === 0 ? [0] : undefined);
|
|
77
|
+
c = randint(-9, 10, (a === 1 && b === 0) || (a === 0 && b === 1) ? [0] : undefined);
|
|
78
|
+
} while (gcd(a, b, c) !== 1 || (a <= 0 && b <= 0 && c <= 0));
|
|
79
|
+
const isOnLine = coinFlip();
|
|
80
|
+
const x = b === 0 && isOnLine ? frac(-c, a).simplify() : randint(-10, 10).toTree();
|
|
81
|
+
const yOnLine = b === 0 ? (0).toTree() : frac(substract(-c, multiply(a, x)), b).simplify();
|
|
82
|
+
const y = isOnLine ? yOnLine : add(yOnLine, randint(-10, 10, [0])).simplify();
|
|
83
|
+
const identifiers = {
|
|
84
|
+
x: x.toIdentifiers(),
|
|
85
|
+
y: y.toIdentifiers(),
|
|
86
|
+
isOnLine,
|
|
87
|
+
a,
|
|
88
|
+
b,
|
|
89
|
+
c,
|
|
90
|
+
};
|
|
91
|
+
const question = {
|
|
92
|
+
answer: getAnswer(identifiers),
|
|
93
|
+
instruction: getInstruction(identifiers),
|
|
94
|
+
keys: getKeys(identifiers),
|
|
95
|
+
answerFormat: "raw",
|
|
96
|
+
identifiers,
|
|
97
|
+
hint: getHint(identifiers),
|
|
98
|
+
correction: getCorrection(identifiers),
|
|
99
|
+
};
|
|
100
|
+
return question;
|
|
101
|
+
};
|
|
102
|
+
export const isPointOnCartesianLine = {
|
|
103
|
+
id: "isPointOnCartesianLine",
|
|
104
|
+
connector: "=",
|
|
105
|
+
label: "Vérifier si un point appartient à une droite d'équation cartésienne donnée",
|
|
106
|
+
isSingleStep: true,
|
|
107
|
+
generator: (nb) => getDistinctQuestions(getIsPointOnLineQuestion, nb),
|
|
108
|
+
qcmTimer: 60,
|
|
109
|
+
freeTimer: 60,
|
|
110
|
+
getPropositions,
|
|
111
|
+
isAnswerValid,
|
|
112
|
+
subject: "Mathématiques",
|
|
113
|
+
getHint,
|
|
114
|
+
getCorrection,
|
|
115
|
+
getAnswer,
|
|
116
|
+
answerType: "QCU",
|
|
117
|
+
hasHintAndCorrection: true,
|
|
118
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
affineA: number;
|
|
4
|
+
affineB: number;
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
isOnLine: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const isPointOnLine: Exercise<Identifiers>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=isPointOnLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isPointOnLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/lines/isPointOnLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAoFF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,WAAW,CAgB/C,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { Point } from "../../../../math/geometry/point.js";
|
|
4
|
+
import { Affine, AffineConstructor } from "../../../../math/polynomials/affine.js";
|
|
5
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
6
|
+
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
7
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
8
|
+
import { randomLetter } from "../../../../utils/strings/randomLetter.js";
|
|
9
|
+
const getPropositions = (n, { answer }) => {
|
|
10
|
+
const propositions = [];
|
|
11
|
+
addValidProp(propositions, answer, "raw");
|
|
12
|
+
tryToAddWrongProp(propositions, "Oui", "raw");
|
|
13
|
+
tryToAddWrongProp(propositions, "Non", "raw");
|
|
14
|
+
tryToAddWrongProp(propositions, "On ne peut pas savoir", "raw");
|
|
15
|
+
return shuffleProps(propositions, n);
|
|
16
|
+
};
|
|
17
|
+
const getAnswer = (identifiers) => {
|
|
18
|
+
return identifiers.isOnLine ? "Oui" : "Non";
|
|
19
|
+
};
|
|
20
|
+
const getInstruction = (identifiers) => {
|
|
21
|
+
const point = new Point(randomLetter(true), identifiers.x.toTree(), identifiers.y.toTree());
|
|
22
|
+
const affine = new Affine(identifiers.affineA, identifiers.affineB);
|
|
23
|
+
return `Le point $${point.toTexWithCoords()}$ appartient-il à la droite d'équation $${affine.toReducedEquation()}$ ?`;
|
|
24
|
+
};
|
|
25
|
+
const getHint = (identifiers) => {
|
|
26
|
+
return `Remplace $x$ dans l'équation de la droite par l'abscisse du point. Le point appartient à la droite si et seulement si le résultat est égal à l'ordonnée du point.`;
|
|
27
|
+
};
|
|
28
|
+
const getCorrection = (identifiers) => {
|
|
29
|
+
const affine = new Affine(identifiers.affineA, identifiers.affineB);
|
|
30
|
+
const affineTree = affine.toTree();
|
|
31
|
+
const res = affine.calculate(identifiers.x).toTree().toTex();
|
|
32
|
+
return `On remplace $x$ dans l'équation de la droite par l'abscisse du point :
|
|
33
|
+
|
|
34
|
+
${alignTex([
|
|
35
|
+
[
|
|
36
|
+
"y",
|
|
37
|
+
"=",
|
|
38
|
+
affineTree.toDetailedEvaluation({ x: identifiers.x.toTree() }).toTex(),
|
|
39
|
+
],
|
|
40
|
+
["", "=", res],
|
|
41
|
+
])}
|
|
42
|
+
|
|
43
|
+
${identifiers.isOnLine
|
|
44
|
+
? `On obtient bien l'ordonnée du point. Ainsi, le point appartient bien à la droite.`
|
|
45
|
+
: `On n'obtient pas l'ordonnée du point. Ainsi, le point n'appartient pas à la droite.`}
|
|
46
|
+
`;
|
|
47
|
+
};
|
|
48
|
+
const getKeys = (identifiers) => {
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
51
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
52
|
+
throw Error("VEA not implemented");
|
|
53
|
+
};
|
|
54
|
+
const getIsPointOnLineQuestion = () => {
|
|
55
|
+
const affine = AffineConstructor.random();
|
|
56
|
+
const x = randint(-10, 10);
|
|
57
|
+
const isOnLine = coinFlip();
|
|
58
|
+
const yOnLine = affine.calculate(x);
|
|
59
|
+
const y = isOnLine ? yOnLine : yOnLine + randint(-10, 10, [0]);
|
|
60
|
+
const identifiers = {
|
|
61
|
+
x,
|
|
62
|
+
y,
|
|
63
|
+
isOnLine,
|
|
64
|
+
affineA: affine.a,
|
|
65
|
+
affineB: affine.b,
|
|
66
|
+
};
|
|
67
|
+
const question = {
|
|
68
|
+
answer: getAnswer(identifiers),
|
|
69
|
+
instruction: getInstruction(identifiers),
|
|
70
|
+
keys: getKeys(identifiers),
|
|
71
|
+
answerFormat: "raw",
|
|
72
|
+
identifiers,
|
|
73
|
+
hint: getHint(identifiers),
|
|
74
|
+
correction: getCorrection(identifiers),
|
|
75
|
+
};
|
|
76
|
+
return question;
|
|
77
|
+
};
|
|
78
|
+
export const isPointOnLine = {
|
|
79
|
+
id: "isPointOnLine",
|
|
80
|
+
connector: "=",
|
|
81
|
+
label: "Vérifier si un point appartient à une droite d'équation $y=ax+b$",
|
|
82
|
+
isSingleStep: true,
|
|
83
|
+
generator: (nb) => getDistinctQuestions(getIsPointOnLineQuestion, nb),
|
|
84
|
+
qcmTimer: 60,
|
|
85
|
+
freeTimer: 60,
|
|
86
|
+
getPropositions,
|
|
87
|
+
isAnswerValid,
|
|
88
|
+
subject: "Mathématiques",
|
|
89
|
+
getHint,
|
|
90
|
+
getCorrection,
|
|
91
|
+
getAnswer,
|
|
92
|
+
answerType: "QCU",
|
|
93
|
+
hasHintAndCorrection: true,
|
|
94
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probabilityTree.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/probaStat/probabilityTree.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"probabilityTree.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/probaStat/probabilityTree.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAa7C,OAAO,EACL,QAAQ,EAeT,MAAM,mBAAmB,CAAC;AAmC3B,KAAK,WAAW,GAAG;IAIjB,CAAC,EAAE,eAAe,CAAC;IACnB,CAAC,EAAE,eAAe,CAAC;IACnB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,eAAe,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA4MF,KAAK,OAAO,GAAG;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA+CF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAiB1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"etendueList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/etendueList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"etendueList.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/stats1var/etendueList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAMrC,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAgFF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,CAkB7C,CAAC"}
|
|
@@ -1,28 +1,50 @@
|
|
|
1
1
|
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
2
|
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
3
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
4
|
+
import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
|
|
5
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
6
|
+
const getInstruction = (identifiers) => {
|
|
7
|
+
const { sortedValues } = identifiers;
|
|
8
|
+
return `On considère la liste de valeurs suivante :
|
|
9
|
+
|
|
10
|
+
$$
|
|
11
|
+
${sortedValues.join("\\ ;\\ ")}
|
|
12
|
+
$$
|
|
13
|
+
|
|
14
|
+
Calculer l'étendue de cette liste de valeurs.`;
|
|
15
|
+
};
|
|
16
|
+
const getAnswer = (identifiers) => {
|
|
17
|
+
const { sortedValues } = identifiers;
|
|
18
|
+
const answer = (sortedValues[sortedValues.length - 1] - sortedValues[0]).frenchify();
|
|
19
|
+
return answer;
|
|
20
|
+
};
|
|
21
|
+
const getHint = (identifiers) => {
|
|
22
|
+
return "L'étendue d'une liste de valeurs est la différence entre la valeur maximale et la valeur minimale.";
|
|
23
|
+
};
|
|
24
|
+
const getCorrection = (identifiers) => {
|
|
25
|
+
const { sortedValues } = identifiers;
|
|
26
|
+
return `L'étendue est la différence entre la valeur maximale et la valeur minimale :
|
|
27
|
+
|
|
28
|
+
$$
|
|
29
|
+
${sortedValues[sortedValues.length - 1]} - ${sortedValues[0]} = ${getAnswer(identifiers)}
|
|
30
|
+
$$
|
|
31
|
+
`;
|
|
32
|
+
};
|
|
4
33
|
const getEtendueListQuestion = () => {
|
|
5
34
|
let randomValues = [];
|
|
6
35
|
const length = randint(6, 10);
|
|
7
36
|
for (let i = 0; i < length; i++)
|
|
8
37
|
randomValues.push(randint(1, 20));
|
|
9
38
|
const sortedValues = randomValues.sort((a, b) => a - b);
|
|
10
|
-
const
|
|
39
|
+
const identifiers = { sortedValues };
|
|
11
40
|
const question = {
|
|
12
|
-
answer,
|
|
13
|
-
instruction:
|
|
14
|
-
$\\\\$Calculer l'étendue de cette liste de valeurs.`,
|
|
41
|
+
answer: getAnswer(identifiers),
|
|
42
|
+
instruction: getInstruction(identifiers),
|
|
15
43
|
keys: [],
|
|
16
44
|
answerFormat: "tex",
|
|
17
|
-
identifiers
|
|
18
|
-
hint:
|
|
19
|
-
correction:
|
|
20
|
-
On calcule la différence entre la valeur maximale et la valeur minimale :
|
|
21
|
-
|
|
22
|
-
$$
|
|
23
|
-
${sortedValues[sortedValues.length - 1]} - ${sortedValues[0]} = ${answer}
|
|
24
|
-
$$
|
|
25
|
-
`,
|
|
45
|
+
identifiers,
|
|
46
|
+
hint: getHint(identifiers),
|
|
47
|
+
correction: getCorrection(identifiers),
|
|
26
48
|
};
|
|
27
49
|
return question;
|
|
28
50
|
};
|
|
@@ -36,7 +58,13 @@ const getPropositions = (n, { answer, sortedValues }) => {
|
|
|
36
58
|
return shuffleProps(propositions, n);
|
|
37
59
|
};
|
|
38
60
|
const isAnswerValid = (ans, { answer }) => {
|
|
39
|
-
|
|
61
|
+
try {
|
|
62
|
+
const parsed = parseAlgebraic(ans);
|
|
63
|
+
return parsed.simplify().toTex() === answer;
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
return handleVEAError(err);
|
|
67
|
+
}
|
|
40
68
|
};
|
|
41
69
|
export const etendueList = {
|
|
42
70
|
id: "etendueList",
|
|
@@ -52,4 +80,8 @@ export const etendueList = {
|
|
|
52
80
|
isAnswerValid,
|
|
53
81
|
subject: "Mathématiques",
|
|
54
82
|
hasHintAndCorrection: true,
|
|
83
|
+
getInstruction,
|
|
84
|
+
getAnswer,
|
|
85
|
+
getHint,
|
|
86
|
+
getCorrection,
|
|
55
87
|
};
|
package/lib/index.d.ts
CHANGED
|
@@ -3,7 +3,9 @@ import "./prototypesEnhancement.js";
|
|
|
3
3
|
import { parseAlgebraic } from "./tree/parsers/latexParser.js";
|
|
4
4
|
declare const mathExercises: (Exercise<{
|
|
5
5
|
numbers: number[];
|
|
6
|
-
}, {
|
|
6
|
+
}, {
|
|
7
|
+
explicitWriting?: boolean;
|
|
8
|
+
}> | Exercise<{
|
|
7
9
|
numbers: number[];
|
|
8
10
|
}, {}> | Exercise<{
|
|
9
11
|
dividend: number;
|
|
@@ -696,12 +698,6 @@ declare const mathExercises: (Exercise<{
|
|
|
696
698
|
xB: number;
|
|
697
699
|
yA: number;
|
|
698
700
|
yB: number;
|
|
699
|
-
}, {}> | Exercise<{
|
|
700
|
-
affineA: number;
|
|
701
|
-
affineB: number;
|
|
702
|
-
x: number;
|
|
703
|
-
y: number;
|
|
704
|
-
isOnLine: boolean;
|
|
705
701
|
}, {}> | Exercise<{
|
|
706
702
|
xValue: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
707
703
|
polynomeCoeffs: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers[];
|
|
@@ -1321,6 +1317,31 @@ declare const mathExercises: (Exercise<{
|
|
|
1321
1317
|
label: string;
|
|
1322
1318
|
}[];
|
|
1323
1319
|
coupleAsked: number;
|
|
1320
|
+
}, {}> | Exercise<{
|
|
1321
|
+
a: number;
|
|
1322
|
+
b: number;
|
|
1323
|
+
}, {}> | Exercise<{
|
|
1324
|
+
a: number;
|
|
1325
|
+
b: number;
|
|
1326
|
+
c: number;
|
|
1327
|
+
toReduced: boolean;
|
|
1328
|
+
}, {}> | Exercise<{
|
|
1329
|
+
a: number;
|
|
1330
|
+
b: number;
|
|
1331
|
+
c: number;
|
|
1332
|
+
}, {}> | Exercise<{
|
|
1333
|
+
affineA: number;
|
|
1334
|
+
affineB: number;
|
|
1335
|
+
x: number;
|
|
1336
|
+
y: number;
|
|
1337
|
+
isOnLine: boolean;
|
|
1338
|
+
}, {}> | Exercise<{
|
|
1339
|
+
a: number;
|
|
1340
|
+
b: number;
|
|
1341
|
+
c: number;
|
|
1342
|
+
x: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1343
|
+
y: import("./tree/nodes/nodeConstructor.js").NodeIdentifiers;
|
|
1344
|
+
isOnLine: boolean;
|
|
1324
1345
|
}, {}> | Exercise<{
|
|
1325
1346
|
triangleIdentifiers: import("./math/geometry/triangles/triangle.js").TriangleIdentifiers;
|
|
1326
1347
|
type: number;
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,11 +35,11 @@ export class GeometricSequenceConstructor {
|
|
|
35
35
|
switch (type) {
|
|
36
36
|
case NumberType.Decimal:
|
|
37
37
|
reason = coinFlip()
|
|
38
|
-
? randfloat(-0.
|
|
38
|
+
? randfloat(-0.99, 1, 2).toTree()
|
|
39
39
|
: randfloat(1.01, 10, 2).toTree();
|
|
40
40
|
break;
|
|
41
41
|
case NumberType.Integer:
|
|
42
|
-
reason = randint(2, 10
|
|
42
|
+
reason = randint(2, 10).toTree();
|
|
43
43
|
break;
|
|
44
44
|
case NumberType.Rational:
|
|
45
45
|
reason = RationalConstructor.randomIrreductible().toTree();
|
package/lib/playground.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,UAAU,YAEtB,CAAC"}
|
package/lib/playground.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { multiply } from "./tree/nodes/operators/multiplyNode.js";
|
|
2
|
-
import { substract } from "./tree/nodes/operators/substractNode.js";
|
|
3
1
|
export const playground = () => {
|
|
4
|
-
// const tex = "3\\%";
|
|
5
|
-
// console.log(parseAlgebraic(tex).simplify({}).toTex());
|
|
6
|
-
const x = multiply(3, substract("x", 9));
|
|
7
|
-
// console.log(x.simplify().toTex());
|
|
8
2
|
// console.log(x.equals(x.simplify()));
|
|
9
3
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,
|
|
1
|
+
{"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,IAAI;IACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe,KAAK,MAAM,CAAC;IAC5E,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC;IAC7E,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,aAAa,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;CACjD;AACD,8BAAsB,cAAc;;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ;CAGxB;AACD,eAAO,MAAM,eAAe,SAAU,IAAI,KAAG,IAAI,IAAI,aACX,CAAC"}
|
package/lib/tree/nodes/node.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/node.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,UAAU,IAAA;IACV,KAAK,IAAA;IACL,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,MAAM,KAAA;IACN,GAAG,KAAA;IACH,MAAM,KAAA;IACN,KAAK,KAAA;IACL,OAAO,KAAA;CACR;AACD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numberNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/numberNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AAE5E,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AACD,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,IAAI,GACN,CAAC,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAE5C;AACD,8BAAsB,qBAAqB;IACzC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO;CAGhE;AACD,qBAAa,UAAW,YAAW,aAAa;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAmB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEjB,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,WAAW;IASpB,YAAY,IAAI,MAAM;IAGtB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"numberNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/numbers/numberNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AAE5E,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AACD,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,IAAI,GACN,CAAC,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAE5C;AACD,8BAAsB,qBAAqB;IACzC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO;CAGhE;AACD,qBAAa,UAAW,YAAW,aAAa;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAmB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;gBAEjB,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,WAAW;IASpB,YAAY,IAAI,MAAM;IAGtB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAarC,QAAQ;IAGR,aAAa;;;;IAMb,cAAc;IAOd,iBAAiB;IAGjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAQ/C,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GACd,aAAa;IAGtC,MAAM;CAGP"}
|
|
@@ -34,7 +34,10 @@ export class NumberNode {
|
|
|
34
34
|
toTex(options) {
|
|
35
35
|
const opts = this.opts?.toTexOptions ?? options;
|
|
36
36
|
const color = opts?.color;
|
|
37
|
-
|
|
37
|
+
const tex = options?.explicitNumberWriting
|
|
38
|
+
? `\\left(${this.value >= 0 ? "+" : ""}${this.tex}\\right)`
|
|
39
|
+
: this.tex;
|
|
40
|
+
return colorize(`${opts?.cancel ? "\\cancel{" : ""}${tex}${options?.unit ? `\\text{ ${options.unit}}` : ""}${opts?.cancel ? "}" : ""}`, color);
|
|
38
41
|
}
|
|
39
42
|
toMathjs() {
|
|
40
43
|
return this.toMathString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/addNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,WAAW,EAIZ,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"addNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/addNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,WAAW,EAIZ,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAcrE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,eAAO,MAAM,GAAG,MACX,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,YAOnC,CAAC;AAEF,qBAAa,OAAQ,YAAW,uBAAuB;IACrD,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,OAAO,aAGL;IACF,WAAW,UAAW,eAAe,aAUnC;IAEF,YAAY,IAAI,MAAM;IAItB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAoCtD,SAAS,IAAI,MAAM,EAAE;IAIrB,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAK5C,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAerC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAsJ/C,aAAa;;;;;;;;;IAOb,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAUpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAMxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;IAMvD,mBAAmB,CAAC,IAAI,CAAC,EAAE,eAAe;CAK3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAC;AAK9E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAC;AAK9E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,IAAI,MACZ,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,SAC3B,WAAW,iBAOnB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC;AACF,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAiBpB,YAAY,IAAI,MAAM;IAItB,aAAa,IAAI,uBAAuB;IAQxC,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA+BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,SAAS;IAUT,KAAK,IAAI,MAAM;IA2Bf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IA2M/C,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAOpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAOxD,mBAAmB;IAQnB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
|
|
@@ -10,7 +10,7 @@ import { operatorComposition } from "../../../tree/utilities/operatorComposition
|
|
|
10
10
|
import { AddNode, isAddNode } from "./addNode.js";
|
|
11
11
|
import { PowerNode, isPowerNode } from "./powerNode.js";
|
|
12
12
|
import { SubstractNode, isSubstractNode } from "./substractNode.js";
|
|
13
|
-
import {
|
|
13
|
+
import { parseToMonomNode } from "../polynomials/monomNode.js";
|
|
14
14
|
export function isFractionNode(a) {
|
|
15
15
|
return isOperatorNode(a) && a.id === OperatorIds.fraction;
|
|
16
16
|
}
|
|
@@ -188,9 +188,9 @@ export class FractionNode {
|
|
|
188
188
|
if (isNumberNode(num) && isNumberNode(denum)) {
|
|
189
189
|
if (denum.value < 0) {
|
|
190
190
|
if (num.value < 0) {
|
|
191
|
-
return new FractionNode(new NumberNode(-num.value), new NumberNode(-denum.value)).simplify();
|
|
191
|
+
return new FractionNode(new NumberNode(-num.value), new NumberNode(-denum.value)).simplify(opts);
|
|
192
192
|
}
|
|
193
|
-
return new OppositeNode(new FractionNode(num, new NumberNode(-denum.value)).simplify());
|
|
193
|
+
return new OppositeNode(new FractionNode(num, new NumberNode(-denum.value)).simplify(opts));
|
|
194
194
|
}
|
|
195
195
|
const frac = new Rational(num.value, denum.value);
|
|
196
196
|
if (frac.isIrreductible())
|
|
@@ -203,13 +203,13 @@ export class FractionNode {
|
|
|
203
203
|
const trueDenum = isFractionNode(denum)
|
|
204
204
|
? denum
|
|
205
205
|
: denum.child;
|
|
206
|
-
return new MultiplyNode(num, new FractionNode(trueDenum.rightChild, trueDenum.leftChild)).simplify();
|
|
206
|
+
return new MultiplyNode(num, new FractionNode(trueDenum.rightChild, trueDenum.leftChild)).simplify(opts);
|
|
207
207
|
}
|
|
208
208
|
if (isNumberNode(denum) &&
|
|
209
209
|
(isFractionNode(num) ||
|
|
210
210
|
(isOppositeNode(num) && isFractionNode(num.child)))) {
|
|
211
211
|
const trueNum = isFractionNode(num) ? num : num.child;
|
|
212
|
-
return new FractionNode(trueNum.leftChild, new MultiplyNode(trueNum.rightChild, denum)).simplify();
|
|
212
|
+
return new FractionNode(trueNum.leftChild, new MultiplyNode(trueNum.rightChild, denum)).simplify(opts);
|
|
213
213
|
}
|
|
214
214
|
if (opts?.forceDistributeFractions &&
|
|
215
215
|
isNumberNode(denum) &&
|
|
@@ -221,27 +221,14 @@ export class FractionNode {
|
|
|
221
221
|
return new SubstractNode(new FractionNode(num.leftChild, denum), new FractionNode(num.rightChild, denum)).simplify(opts);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
// if (isMultiplyNode(num)) {
|
|
230
|
-
// if (isVariableNode(num.leftChild)) {
|
|
231
|
-
// return new MultiplyNode(
|
|
232
|
-
// new FractionNode(num.rightChild, denum),
|
|
233
|
-
// num.leftChild,
|
|
234
|
-
// ).simplify(opts);
|
|
235
|
-
// } else if (isVariableNode(num.rightChild)) {
|
|
236
|
-
// return new MultiplyNode(
|
|
237
|
-
// new FractionNode(num.leftChild, denum),
|
|
238
|
-
// num.rightChild,
|
|
239
|
-
// ).simplify(opts);
|
|
240
|
-
// }
|
|
241
|
-
// }
|
|
224
|
+
let parsedMonom = parseToMonomNode(num);
|
|
225
|
+
if (opts?.forceDistributeFractions &&
|
|
226
|
+
isNumberNode(denum) &&
|
|
227
|
+
parsedMonom) {
|
|
228
|
+
return new MultiplyNode(new FractionNode(parsedMonom.a, denum), parsedMonom.variable.toTree()).simplify(opts);
|
|
242
229
|
}
|
|
243
230
|
if (isFractionNode(denum) && isFractionNode(num)) {
|
|
244
|
-
return new MultiplyNode(num, new FractionNode(denum.rightChild, denum.leftChild)).simplify();
|
|
231
|
+
return new MultiplyNode(num, new FractionNode(denum.rightChild, denum.leftChild)).simplify(opts);
|
|
245
232
|
}
|
|
246
233
|
//!ya mieux à faire pour gérer tous les cas d'un coup
|
|
247
234
|
//!s'insiprer de multiply
|
|
@@ -286,7 +273,9 @@ export class FractionNode {
|
|
|
286
273
|
? externalsNums[0]
|
|
287
274
|
: operatorComposition(MultiplyNode, externalsNums).simplify(opts);
|
|
288
275
|
if (externalsDenums.length === 0) {
|
|
289
|
-
return shouldAddOppositeNode
|
|
276
|
+
return shouldAddOppositeNode
|
|
277
|
+
? new OppositeNode(nums).simplify(opts)
|
|
278
|
+
: nums;
|
|
290
279
|
}
|
|
291
280
|
const denums = externalsDenums.length === 1
|
|
292
281
|
? externalsDenums[0]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiplyNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/multiplyNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EACL,aAAa,EACb,eAAe,EAEhB,MAAM,qBAAqB,CAAC;AAU7B,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,QAAQ,MAChB,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,SAC3B,WAAW,iBAOnB,CAAC;AACF,eAAO,MAAM,iBAAiB,QAAS,aAAa,EAAE,SAYrD,CAAC;AACF,qBAAa,YAAa,YAAW,uBAAuB;IAC1D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,OAAO,aAGL;IAEF,WAAW,UAAW,eAAe,kBAUnC;IAEF,UAAU,qBAER;IACF,YAAY,IAAI,MAAM;IAItB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAgFrC,SAAS;IAkDT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAyFrD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,aAAa;;;;;;;;;IAYb,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,IAAI;IAGJ,cAAc;IACd,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"multiplyNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/multiplyNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EACL,aAAa,EACb,eAAe,EAEhB,MAAM,qBAAqB,CAAC;AAU7B,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,QAAQ,MAChB,aAAa,GAAG,MAAM,GAAG,MAAM,KAC/B,aAAa,GAAG,MAAM,GAAG,MAAM,SAC3B,WAAW,iBAOnB,CAAC;AACF,eAAO,MAAM,iBAAiB,QAAS,aAAa,EAAE,SAYrD,CAAC;AACF,qBAAa,YAAa,YAAW,uBAAuB;IAC1D,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,OAAO,aAGL;IAEF,WAAW,UAAW,eAAe,kBAUnC;IAEF,UAAU,qBAER;IACF,YAAY,IAAI,MAAM;IAItB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAgFrC,SAAS;IAkDT,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE;IAyFrD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,aAAa;;;;;;;;;IAYb,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,IAAI;IAGJ,cAAc;IACd,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAsL/C,mBAAmB,CAAC,IAAI,CAAC,EAAE,eAAe;IAM1C,MAAM,CAAC,IAAI,EAAE,aAAa;IAU1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAQxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAMxD"}
|
|
@@ -348,7 +348,13 @@ export class MultiplyNode {
|
|
|
348
348
|
isPowerNode(b) &&
|
|
349
349
|
isNumberNode(b.leftChild) &&
|
|
350
350
|
a.value === b.leftChild.value) {
|
|
351
|
-
return new PowerNode(b.leftChild, new AddNode(b.rightChild, (1).toTree())).simplify();
|
|
351
|
+
return new PowerNode(b.leftChild, new AddNode(b.rightChild, (1).toTree())).simplify(opts);
|
|
352
|
+
}
|
|
353
|
+
if (isNumberNode(a) && isFractionNode(b) && b.isNumeric) {
|
|
354
|
+
return new FractionNode(multiply(a, b.leftChild), b.rightChild).simplify(opts);
|
|
355
|
+
}
|
|
356
|
+
if (isNumberNode(b) && isFractionNode(a) && a.isNumeric) {
|
|
357
|
+
return new FractionNode(multiply(a.leftChild, b), a.rightChild).simplify(opts);
|
|
352
358
|
}
|
|
353
359
|
if (isFractionNode(a) &&
|
|
354
360
|
a.isNumeric &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalarProductNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/scalarProductNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAY,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scalarProductNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/scalarProductNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAY,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEvD,eAAO,MAAM,IAAI,MAAO,MAAM,KAAK,MAAM,sBAExC,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;gBACP,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAMrE,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;CAGtC"}
|
|
@@ -31,8 +31,7 @@ export class MonomNode extends CAlgebraicNode {
|
|
|
31
31
|
super();
|
|
32
32
|
// super([c, b, a], opts?.variable ?? "x");
|
|
33
33
|
this.a = typeof a === "number" ? a.toTree() : a;
|
|
34
|
-
if (this.a.evaluate() === 0)
|
|
35
|
-
throw new Error("Monom with coeff null");
|
|
34
|
+
// if (this.a.evaluate() === 0) throw new Error("Monom with coeff null");
|
|
36
35
|
this.degree = degree;
|
|
37
36
|
this.isNumeric = false;
|
|
38
37
|
this.variable = opts?.variable ?? "x";
|