math-exercises 2.0.22 → 2.0.24
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/calculLitteral/equation/equationSimpleSquare.js +2 -2
- package/lib/exercises/calculLitteral/equation/fractionEquation.js +2 -2
- package/lib/exercises/equaDiff/equaDiffCheckSolutionFirstOrderTrinom.d.ts +1 -0
- package/lib/exercises/equaDiff/equaDiffCheckSolutionFirstOrderTrinom.d.ts.map +1 -0
- package/lib/exercises/equaDiff/equaDiffCheckSolutionFirstOrderTrinom.js +53 -0
- package/lib/exercises/functions/absolute/absoluteValueEquations.js +3 -3
- package/lib/exercises/functions/absolute/absoluteValueInequations.js +1 -1
- package/lib/exercises/functions/basics/graphicEquation.js +1 -1
- package/lib/exercises/functions/basics/graphicInequation.js +1 -1
- package/lib/exercises/functions/logarithm/log10Simplifying.d.ts.map +1 -1
- package/lib/exercises/functions/logarithm/log10Simplifying.js +2 -1
- package/lib/exercises/functions/logarithm/logSimplifiying.js +1 -1
- package/lib/exercises/functions/trinoms/niceRootsFromDevForm.js +2 -2
- package/lib/exercises/functions/trinoms/rootsFromDevForm.js +2 -2
- package/lib/exercises/functions/trinoms/rootsFromFactorizedForm.js +1 -1
- package/lib/exercises/functions/trinoms/secondDegreeInequation.js +1 -1
- package/lib/exercises/sets/intervals/intervalsIntersection.js +1 -1
- package/lib/exercises/sets/setBelonging.js +1 -1
- package/lib/exercises/squareRoots/squareRootEquation.js +3 -3
- package/lib/exercises/utils/keys/equationKeys.js +1 -1
- package/lib/exercises/utils/keys/inequationKeys.js +1 -1
- package/lib/geogebra/geogebraConstructor.d.ts +7 -0
- package/lib/geogebra/geogebraConstructor.d.ts.map +1 -0
- package/lib/geogebra/geogebraConstructor.js +15 -0
- package/lib/math/polynomials/trinom.js +1 -1
- package/lib/math/sets/emptySet.js +1 -1
- package/lib/math/sets/intervals/intervals.js +1 -1
- package/lib/math/utils/arithmetic/maxPowerDecomposition.d.ts +11 -0
- package/lib/math/utils/arithmetic/maxPowerDecomposition.d.ts.map +1 -0
- package/lib/math/utils/arithmetic/maxPowerDecomposition.js +26 -0
- package/lib/math/utils/arithmetic/primeDecomposition.d.ts +5 -0
- package/lib/math/utils/arithmetic/primeDecomposition.d.ts.map +1 -0
- package/lib/math/utils/arithmetic/primeDecomposition.js +22 -0
- package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
- package/lib/tree/nodes/functions/log10Node.js +13 -6
- package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/logNode.js +16 -9
- package/lib/tree/nodes/sets/discreteSetNode.js +1 -1
- package/lib/types/keyIds.d.ts +1 -1
- package/lib/types/keyIds.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -77,7 +77,7 @@ const getPropositions = (n, { answer, randNbr }) => {
|
|
|
77
77
|
const tempAns = sqrt + (0, randint_1.randint)(-sqrt + 1, 7, [0]);
|
|
78
78
|
(0, exercise_1.tryToAddWrongProp)(propositions, (0, coinFlip_1.coinFlip)()
|
|
79
79
|
? `S=\\left\\{-${tempAns};${tempAns}\\right\\}`
|
|
80
|
-
: `S=\\
|
|
80
|
+
: `S=\\varnothing`);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
@@ -92,7 +92,7 @@ const getPropositions = (n, { answer, randNbr }) => {
|
|
|
92
92
|
const tempRadicand = radicand + (0, randint_1.randint)(-radicand + 1, 7, [0]);
|
|
93
93
|
(0, exercise_1.tryToAddWrongProp)(propositions, (0, coinFlip_1.coinFlip)()
|
|
94
94
|
? `S=\\left\\{-${tempFactor}\\sqrt{${tempRadicand}};${tempFactor}\\sqrt{${tempRadicand}}\\right\\}`
|
|
95
|
-
: `S=\\
|
|
95
|
+
: `S=\\varnothing`);
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
return (0, exercise_1.shuffleProps)(propositions, n);
|
|
@@ -18,7 +18,7 @@ const getFractionEquation = () => {
|
|
|
18
18
|
const polynome1 = new polynomial_1.Polynomial([b, a]);
|
|
19
19
|
const polynome2 = new polynomial_1.Polynomial([d, c]);
|
|
20
20
|
const answer = -d / c === -b / a
|
|
21
|
-
? `S=\\
|
|
21
|
+
? `S=\\varnothing`
|
|
22
22
|
: `S=\\left\\{${new rational_1.Rational(-b, a)
|
|
23
23
|
.simplify()
|
|
24
24
|
.toTree()
|
|
@@ -35,7 +35,7 @@ const getFractionEquation = () => {
|
|
|
35
35
|
"rbrace",
|
|
36
36
|
"semicolon",
|
|
37
37
|
"ou",
|
|
38
|
-
"
|
|
38
|
+
"varnothing",
|
|
39
39
|
],
|
|
40
40
|
answerFormat: "tex",
|
|
41
41
|
identifiers: { a, b, c, d },
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=equaDiffCheckSolutionFirstOrderTrinom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equaDiffCheckSolutionFirstOrderTrinom.d.ts","sourceRoot":"","sources":["../../../src/exercises/equaDiff/equaDiffCheckSolutionFirstOrderTrinom.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import {
|
|
3
|
+
// MathExercise,
|
|
4
|
+
// Proposition,
|
|
5
|
+
// QCMGenerator,
|
|
6
|
+
// Question,
|
|
7
|
+
// QuestionGenerator,
|
|
8
|
+
// VEA,
|
|
9
|
+
// addValidProp,
|
|
10
|
+
// shuffleProps,
|
|
11
|
+
// tryToAddWrongProp,
|
|
12
|
+
// } from "../../exercises/exercise";
|
|
13
|
+
// import { getDistinctQuestions } from "../../exercises/utils/getDistinctQuestions";
|
|
14
|
+
// import { TrinomConstructor } from "../../math/polynomials/trinom";
|
|
15
|
+
// type Identifiers = {};
|
|
16
|
+
// /**y = y' + dx^2+ex+f, alors y = ax^2+bx+c */
|
|
17
|
+
// const getEquaDiffCheckSolutionFirstOrderQuestion: QuestionGenerator<
|
|
18
|
+
// Identifiers
|
|
19
|
+
// > = () => {
|
|
20
|
+
// const trinom = TrinomConstructor.random();
|
|
21
|
+
// const d = trinom.a;
|
|
22
|
+
// const e = trinom.b - 2 * trinom.a;
|
|
23
|
+
// const f = trinom.c - trinom.b;
|
|
24
|
+
// const question: Question<Identifiers> = {
|
|
25
|
+
// answer,
|
|
26
|
+
// instruction: ``,
|
|
27
|
+
// keys: [],
|
|
28
|
+
// answerFormat: "tex",
|
|
29
|
+
// identifiers: {},
|
|
30
|
+
// };
|
|
31
|
+
// return question;
|
|
32
|
+
// };
|
|
33
|
+
// const getPropositions: QCMGenerator<Identifiers> = (n, { answer }) => {
|
|
34
|
+
// const propositions: Proposition[] = [];
|
|
35
|
+
// addValidProp(propositions, answer);
|
|
36
|
+
// while (propositions.length < n) {}
|
|
37
|
+
// return shuffleProps(propositions, n);
|
|
38
|
+
// };
|
|
39
|
+
// const isAnswerValid: VEA<Identifiers> = (ans, { answer }) => {};
|
|
40
|
+
// export const equaDiffCheckSolutionFirstOrder: MathExercise<Identifiers> = {
|
|
41
|
+
// id: "equaDiffCheckSolutionFirstOrder",
|
|
42
|
+
// connector: "",
|
|
43
|
+
// label: "",
|
|
44
|
+
// levels: [],
|
|
45
|
+
// isSingleStep: true,
|
|
46
|
+
// sections: [],
|
|
47
|
+
// generator: (nb: number) =>
|
|
48
|
+
// getDistinctQuestions(getEquaDiffCheckSolutionFirstOrderQuestion, nb),
|
|
49
|
+
// qcmTimer: 60,
|
|
50
|
+
// freeTimer: 60,
|
|
51
|
+
// getPropositions,
|
|
52
|
+
// isAnswerValid,
|
|
53
|
+
// };
|
|
@@ -18,12 +18,12 @@ const getAbsoluteValueEquationsQuestion = () => {
|
|
|
18
18
|
const answer = a === 0
|
|
19
19
|
? `S=\\left\\{${b}\\right\\}`
|
|
20
20
|
: a < 0
|
|
21
|
-
? `S=\\
|
|
21
|
+
? `S=\\varnothing`
|
|
22
22
|
: `S=\\left\\{${b - a};${b + a}\\right\\}`;
|
|
23
23
|
const question = {
|
|
24
24
|
answer: answer,
|
|
25
25
|
instruction: `Résoudre l'équation $|${poly.toTree().toTex()}| = ${a}$.`,
|
|
26
|
-
keys: ["S", "equal", "
|
|
26
|
+
keys: ["S", "equal", "varnothing", "lbrace", "semicolon", "rbrace"],
|
|
27
27
|
answerFormat: "tex",
|
|
28
28
|
identifiers: { a, b },
|
|
29
29
|
};
|
|
@@ -37,7 +37,7 @@ const getPropositions = (n, { answer, a, b }) => {
|
|
|
37
37
|
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\left\\{${b + a}\\right\\}`);
|
|
38
38
|
}
|
|
39
39
|
else if (a === 0) {
|
|
40
|
-
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\
|
|
40
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\varnothing`);
|
|
41
41
|
}
|
|
42
42
|
else if (a > 0) {
|
|
43
43
|
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\left\\{${b + a}\\right\\}`);
|
|
@@ -73,7 +73,7 @@ const getGraphicEquationQuestion = () => {
|
|
|
73
73
|
const getPropositions = (n, { answer }) => {
|
|
74
74
|
const propositions = [];
|
|
75
75
|
(0, exercise_1.addValidProp)(propositions, answer);
|
|
76
|
-
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\
|
|
76
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\varnothing`);
|
|
77
77
|
while (propositions.length < n) {
|
|
78
78
|
const nbs = [];
|
|
79
79
|
const nbSol = (0, randint_1.randint)(2, 4);
|
|
@@ -114,7 +114,7 @@ const getGraphicInequationQuestion = () => {
|
|
|
114
114
|
const getPropositions = (n, { answer, intervals, splinePoints, yValue }) => {
|
|
115
115
|
const propositions = [];
|
|
116
116
|
(0, exercise_1.addValidProp)(propositions, answer);
|
|
117
|
-
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\
|
|
117
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\varnothing`);
|
|
118
118
|
(0, exercise_1.tryToAddWrongProp)(propositions, `S=${new intervalNode_1.IntervalNode(new numberNode_1.NumberNode(splinePoints[0][0]), new numberNode_1.NumberNode(yValue), intervalNode_1.ClosureType.FF).toTex()}`);
|
|
119
119
|
while (propositions.length < n) {
|
|
120
120
|
const a = (0, randint_1.randint)(-9, 3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log10Simplifying.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/logarithm/log10Simplifying.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAalC,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"log10Simplifying.d.ts","sourceRoot":"","sources":["../../../../src/exercises/functions/logarithm/log10Simplifying.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EASb,MAAM,0BAA0B,CAAC;AAalC,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AA0FF,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,WAAW,CAgBzD,CAAC;AACF,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,WAAW,CAgBvD,CAAC"}
|
|
@@ -15,6 +15,7 @@ const operatorComposition_1 = require("../../../tree/utilities/operatorCompositi
|
|
|
15
15
|
const random_1 = require("../../../utils/random");
|
|
16
16
|
const getLog10SumSimplifyingQuestion = (opts) => {
|
|
17
17
|
const nb = (0, randint_1.randint)(2, 10);
|
|
18
|
+
const trueNb = [2, 4, 8].includes(nb) ? 2 : [3, 9].includes(nb) ? 3 : nb;
|
|
18
19
|
const nbTerms = (0, randint_1.randint)(2, 4);
|
|
19
20
|
const powers = [];
|
|
20
21
|
const signs = [];
|
|
@@ -36,7 +37,7 @@ const getLog10SumSimplifyingQuestion = (opts) => {
|
|
|
36
37
|
const answer = statement.simplify();
|
|
37
38
|
const question = {
|
|
38
39
|
answer: answer.toTex(),
|
|
39
|
-
instruction: `
|
|
40
|
+
instruction: `Exprimer le nombre suivant sous la forme $a${opts?.isLog10 ? "\\log" : "\\ln"}\\left(${trueNb}\\right)$ : $\\newline ${statement.toTex()}$`,
|
|
40
41
|
keys: [opts?.isLog10 ? "log" : "ln"],
|
|
41
42
|
answerFormat: "tex",
|
|
42
43
|
identifiers: { nb, powers, signs, isLog10: opts?.isLog10 ?? false },
|
|
@@ -31,7 +31,7 @@ const getExpSimplifiying = () => {
|
|
|
31
31
|
}
|
|
32
32
|
const answer = simplifiedExpression.toTex();
|
|
33
33
|
const question = {
|
|
34
|
-
instruction: `
|
|
34
|
+
instruction: `Ecrire le nombre suivant sous la forme $\\ln\\left(a\\right)$ : $\\newline ${expression.toTex()}$.`,
|
|
35
35
|
answer,
|
|
36
36
|
keys: ["ln"],
|
|
37
37
|
answerFormat: "tex",
|
|
@@ -16,7 +16,7 @@ const getRootsFromDevFormQuestion = () => {
|
|
|
16
16
|
instruction: `Soit $f(x) = ${trinom
|
|
17
17
|
.toTree()
|
|
18
18
|
.toTex()}$. Résoudre l'équation $f(x) = 0$.`,
|
|
19
|
-
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "
|
|
19
|
+
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "varnothing"],
|
|
20
20
|
identifiers: { a: trinom.a, b: trinom.b, c: trinom.c },
|
|
21
21
|
answerFormat: "tex",
|
|
22
22
|
};
|
|
@@ -25,7 +25,7 @@ const getRootsFromDevFormQuestion = () => {
|
|
|
25
25
|
const getPropositions = (n, { answer }) => {
|
|
26
26
|
const propositions = [];
|
|
27
27
|
(0, exercise_1.addValidProp)(propositions, answer);
|
|
28
|
-
(0, exercise_1.tryToAddWrongProp)(propositions, "S=\\
|
|
28
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, "S=\\varnothing");
|
|
29
29
|
while (propositions.length < n) {
|
|
30
30
|
let wrongX1 = (0, randint_1.randint)(-19, 0);
|
|
31
31
|
let wrongX2 = (0, randint_1.randint)(0, 20);
|
|
@@ -16,7 +16,7 @@ const getRootsFromDevFormQuestion = () => {
|
|
|
16
16
|
instruction: `Soit $f(x) = ${trinom
|
|
17
17
|
.toTree()
|
|
18
18
|
.toTex()}$. Résoudre l'équation $f(x) = 0$.`,
|
|
19
|
-
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "
|
|
19
|
+
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "varnothing"],
|
|
20
20
|
answerFormat: "tex",
|
|
21
21
|
identifiers: { a: trinom.a, b: trinom.b, c: trinom.c },
|
|
22
22
|
};
|
|
@@ -25,7 +25,7 @@ const getRootsFromDevFormQuestion = () => {
|
|
|
25
25
|
const getPropositions = (n, { answer }) => {
|
|
26
26
|
const propositions = [];
|
|
27
27
|
(0, exercise_1.addValidProp)(propositions, answer);
|
|
28
|
-
(0, exercise_1.tryToAddWrongProp)(propositions, "S=\\
|
|
28
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, "S=\\varnothing");
|
|
29
29
|
while (propositions.length < n) {
|
|
30
30
|
let wrongX1 = (0, randint_1.randint)(-19, 0);
|
|
31
31
|
let wrongX2 = (0, randint_1.randint)(0, 20);
|
|
@@ -18,7 +18,7 @@ const getRootsFromFactorizedFormQuestion = () => {
|
|
|
18
18
|
instruction: `Soit $f(x) = ${trinom
|
|
19
19
|
.getFactorizedForm()
|
|
20
20
|
.toTex()}$. Résoudre l'équation $f(x) = 0$.`,
|
|
21
|
-
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "
|
|
21
|
+
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "varnothing"],
|
|
22
22
|
answerFormat: "tex",
|
|
23
23
|
identifiers: { a: trinom.a, b: trinom.b, c: trinom.c },
|
|
24
24
|
};
|
|
@@ -10,11 +10,11 @@ const discreteSetNode_1 = require("../../tree/nodes/sets/discreteSetNode");
|
|
|
10
10
|
const shuffle_1 = require("../../utils/shuffle");
|
|
11
11
|
const getSquareRootEquationQuestion = () => {
|
|
12
12
|
const k = Math.random() < 0.2 ? (0, randint_1.randint)(-20, 0) : (0, randint_1.randint)(0, 11);
|
|
13
|
-
const answer = k < 0 ? "S=\\
|
|
13
|
+
const answer = k < 0 ? "S=\\varnothing" : `S=\\left\\{${k ** 2}\\right\\}`;
|
|
14
14
|
const question = {
|
|
15
15
|
answer: answer,
|
|
16
16
|
instruction: `Résoudre l'équation suivante : $\\sqrt x = ${k}$`,
|
|
17
|
-
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "
|
|
17
|
+
keys: ["S", "equal", "lbrace", "semicolon", "rbrace", "varnothing"],
|
|
18
18
|
answerFormat: "tex",
|
|
19
19
|
identifiers: { k },
|
|
20
20
|
};
|
|
@@ -24,7 +24,7 @@ const getPropositions = (n, { answer, k }) => {
|
|
|
24
24
|
const propositions = [];
|
|
25
25
|
(0, exercise_1.addValidProp)(propositions, answer);
|
|
26
26
|
if (k >= 0)
|
|
27
|
-
(0, exercise_1.tryToAddWrongProp)(propositions, "S=\\
|
|
27
|
+
(0, exercise_1.tryToAddWrongProp)(propositions, "S=\\varnothing");
|
|
28
28
|
if (Math.sqrt(k) !== k ** 2)
|
|
29
29
|
(0, exercise_1.tryToAddWrongProp)(propositions, `S=\\left\\{\\sqrt{${k}}\\right\\}`);
|
|
30
30
|
while (propositions.length < n) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geogebraConstructor.d.ts","sourceRoot":"","sources":["../../src/geogebra/geogebraConstructor.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAM;;IAIxB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE;IAGzB,WAAW;CAGZ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeogebraConstructor = void 0;
|
|
4
|
+
class GeogebraConstructor {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.commands = [];
|
|
7
|
+
}
|
|
8
|
+
addCommand(...s) {
|
|
9
|
+
this.commands.push(...s);
|
|
10
|
+
}
|
|
11
|
+
getCommands() {
|
|
12
|
+
return this.commands;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.GeogebraConstructor = GeogebraConstructor;
|
|
@@ -119,7 +119,7 @@ class Trinom extends polynomial_1.Polynomial {
|
|
|
119
119
|
getRootsEquationSolutionTex() {
|
|
120
120
|
const roots = this.getRootsNode();
|
|
121
121
|
if (!roots.length)
|
|
122
|
-
return `S=\\
|
|
122
|
+
return `S=\\varnothing`;
|
|
123
123
|
if (roots.length === 1)
|
|
124
124
|
return `S=\\left\\{${roots[0].toTex()}\\right\\}`;
|
|
125
125
|
return `S=\\left\\{${roots[0].toTex()};${roots[1].toTex()}\\right\\}`;
|
|
@@ -170,7 +170,7 @@ class Interval {
|
|
|
170
170
|
(this.rightBracket === "[" || interval.leftBracket === "]")) ||
|
|
171
171
|
(a === d && (interval.rightBracket === "[" || this.leftBracket === "]"));
|
|
172
172
|
if (isDisjoint) {
|
|
173
|
-
return new mathSet_1.MathSet("\\
|
|
173
|
+
return new mathSet_1.MathSet("\\varnothing", () => null);
|
|
174
174
|
}
|
|
175
175
|
const winningLeftBracket = (brack1, brack2) => brack1 === "]" || brack2 === "]" ? "]" : "[";
|
|
176
176
|
const winningRightBracket = (brack1, brack2) => brack1 === "[" || brack2 === "[" ? "[" : "]";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maxPowerDecomposition.d.ts","sourceRoot":"","sources":["../../../../src/math/utils/arithmetic/maxPowerDecomposition.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,MAAO,MAAM;WAEzB,MAAM;WAAS,MAAM;GAW1C,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maxPowerDecomposition = void 0;
|
|
4
|
+
const primeDecomposition_1 = require("./primeDecomposition");
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param n
|
|
8
|
+
* eg for n = 36 will return 6^2
|
|
9
|
+
* for n = 12 will return 2^2*3
|
|
10
|
+
*/
|
|
11
|
+
const maxPowerDecomposition = (n) => {
|
|
12
|
+
const decomposition = (0, primeDecomposition_1.primeDecomposition)(n);
|
|
13
|
+
const res = [];
|
|
14
|
+
for (const item of decomposition) {
|
|
15
|
+
const { value, power } = item;
|
|
16
|
+
const matchingPower = res.find((el) => el.power === power);
|
|
17
|
+
if (matchingPower) {
|
|
18
|
+
matchingPower.value *= value;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
res.push(item);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return res;
|
|
25
|
+
};
|
|
26
|
+
exports.maxPowerDecomposition = maxPowerDecomposition;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primeDecomposition.d.ts","sourceRoot":"","sources":["../../../../src/math/utils/arithmetic/primeDecomposition.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,MAAO,MAAM;WAEtB,MAAM;WAAS,MAAM;GAa1C,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.primeDecomposition = void 0;
|
|
4
|
+
const primeFactors_1 = require("./primeFactors");
|
|
5
|
+
const primeDecomposition = (n) => {
|
|
6
|
+
const factors = (0, primeFactors_1.primeFactors)(n);
|
|
7
|
+
const res = [];
|
|
8
|
+
for (const factor of factors) {
|
|
9
|
+
const data = res.find((el) => el.value === factor);
|
|
10
|
+
if (data) {
|
|
11
|
+
data.power++;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
res.push({
|
|
15
|
+
value: factor,
|
|
16
|
+
power: 1,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return res;
|
|
21
|
+
};
|
|
22
|
+
exports.primeDecomposition = primeDecomposition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log10Node.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/log10Node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"log10Node.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/log10Node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,SAAS,CAEnD;AACD,qBAAa,SAAU,YAAW,YAAY;IAC5C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAQpD,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAaf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,IAAI,aAAa;IAgCzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGrC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;CAGrC"}
|
|
@@ -9,7 +9,7 @@ const numberNode_1 = require("../numbers/numberNode");
|
|
|
9
9
|
const isInt_1 = require("../../../utils/isInt");
|
|
10
10
|
const powerNode_1 = require("../operators/powerNode");
|
|
11
11
|
const multiplyNode_1 = require("../operators/multiplyNode");
|
|
12
|
-
const
|
|
12
|
+
const maxPowerDecomposition_1 = require("../../../math/utils/arithmetic/maxPowerDecomposition");
|
|
13
13
|
function isLog10Node(a) {
|
|
14
14
|
return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.log10;
|
|
15
15
|
}
|
|
@@ -58,11 +58,18 @@ class Log10Node {
|
|
|
58
58
|
if ((0, isInt_1.isInt)(log10))
|
|
59
59
|
return new numberNode_1.NumberNode(log10);
|
|
60
60
|
if ((0, isInt_1.isInt)(value)) {
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
const decomposition = (0, maxPowerDecomposition_1.maxPowerDecomposition)(value);
|
|
62
|
+
if (decomposition.length === 1) {
|
|
63
|
+
const el = decomposition[0];
|
|
64
|
+
if (el.power === 1)
|
|
65
|
+
return this; //isPrime
|
|
66
|
+
else
|
|
67
|
+
return new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(el.power), new Log10Node(new numberNode_1.NumberNode(el.value)));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
//! things like log(6) will return themselves
|
|
71
|
+
//! even true for log(12). Should they be simplified into 2ln(2)+ln(3) ?
|
|
72
|
+
return new Log10Node(simplifiedChild);
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/logNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"logNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/logNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAQpD,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAaf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,IAAI,aAAa;IAmCzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGrC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;CAGrC"}
|
|
@@ -9,8 +9,8 @@ const multiplyNode_1 = require("../operators/multiplyNode");
|
|
|
9
9
|
const powerNode_1 = require("../operators/powerNode");
|
|
10
10
|
const numberNode_1 = require("../numbers/numberNode");
|
|
11
11
|
const isInt_1 = require("../../../utils/isInt");
|
|
12
|
-
const primeFactors_1 = require("../../../math/utils/arithmetic/primeFactors");
|
|
13
12
|
const expNode_1 = require("./expNode");
|
|
13
|
+
const maxPowerDecomposition_1 = require("../../../math/utils/arithmetic/maxPowerDecomposition");
|
|
14
14
|
function isLogNode(a) {
|
|
15
15
|
return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.log;
|
|
16
16
|
}
|
|
@@ -55,15 +55,22 @@ class LogNode {
|
|
|
55
55
|
const simplifiedChild = this.child.simplify();
|
|
56
56
|
if ((0, numberNode_1.isNumberNode)(simplifiedChild)) {
|
|
57
57
|
const value = simplifiedChild.value;
|
|
58
|
-
const
|
|
59
|
-
if ((0, isInt_1.isInt)(
|
|
60
|
-
return new numberNode_1.NumberNode(
|
|
58
|
+
const log10 = Math.log10(value);
|
|
59
|
+
if ((0, isInt_1.isInt)(log10))
|
|
60
|
+
return new numberNode_1.NumberNode(log10);
|
|
61
61
|
if ((0, isInt_1.isInt)(value)) {
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
const decomposition = (0, maxPowerDecomposition_1.maxPowerDecomposition)(value);
|
|
63
|
+
if (decomposition.length === 1) {
|
|
64
|
+
const el = decomposition[0];
|
|
65
|
+
if (el.power === 1)
|
|
66
|
+
return this; //isPrime
|
|
67
|
+
else
|
|
68
|
+
return new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(el.power), new LogNode(new numberNode_1.NumberNode(el.value)));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
//! things like log(6) will return themselves
|
|
72
|
+
//! even true for log(12). Should they be simplified into 2ln(2)+ln(3) ?
|
|
73
|
+
return new LogNode(simplifiedChild);
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
}
|
package/lib/types/keyIds.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type KeyId =
|
|
|
10
10
|
/**operations */
|
|
11
11
|
| "plus" | "minus" | "times" | "frac" | "obelus" | "sqrt" | "sqrtCub" | "square" | "cube" | "power" | "percent" | "leftParenthesis" | "rightParenthesis" | "equal" | "comma" | "semicolon" | "dot" | "sup" | "inf" | "geq" | "leq" | "approx" | "xsquare" | "xcube"
|
|
12
12
|
/**sets */
|
|
13
|
-
| "belongs" | "notin" | "cap" | "cup" | "lbrace" | "rbrace" | "lbracket" | "rbracket" | "
|
|
13
|
+
| "belongs" | "notin" | "cap" | "cup" | "lbrace" | "rbrace" | "lbracket" | "rbracket" | "varnothing" | "naturals" | "integers" | "rationals" | "decimals" | "reals" | "complex" | "ast" | "del" | "right" | "left" | "rightarrow" | "overrightarrow" | "infty"
|
|
14
14
|
/**fcts */
|
|
15
15
|
| "log" | "ln" | "exp" | "epower" | "sin" | "cos" | "tan" | "arccos" | "arcsin" | "arctan" | "abs" | "fx"
|
|
16
16
|
/**sequences */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyIds.d.ts","sourceRoot":"","sources":["../../src/types/keyIds.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK;AACf,WAAW;AACT,IAAI,GACJ,KAAK,GACL,SAAS,GACT,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI;AAEN,aAAa;GACX,QAAQ,GACR,OAAO,GACP,MAAM,GACN,YAAY,GACZ,KAAK,GACL,OAAO,GACP,QAAQ,GACR,KAAK;AAEP,WAAW;GACT,IAAI,GACJ,IAAI,GACJ,OAAO;AAET,cAAc;GACZ,gBAAgB,GAChB,QAAQ,GACR,SAAS;AAEX,gBAAgB;GACd,MAAM,GACN,OAAO,GACP,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,GACR,MAAM,GACN,OAAO,GACP,SAAS,GACT,iBAAiB,GACjB,kBAAkB,GAClB,OAAO,GACP,OAAO,GACP,WAAW,GACX,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,QAAQ,GACR,SAAS,GACT,OAAO;AAET,UAAU;GACR,SAAS,GACT,OAAO,GACP,KAAK,GACL,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,
|
|
1
|
+
{"version":3,"file":"keyIds.d.ts","sourceRoot":"","sources":["../../src/types/keyIds.ts"],"names":[],"mappings":"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"}
|