math-exercises 3.0.134 → 3.0.136
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/arithmetics/coprime.d.ts +8 -0
- package/lib/exercises/math/calcul/arithmetics/coprime.d.ts.map +1 -0
- package/lib/exercises/math/calcul/arithmetics/coprime.js +113 -0
- package/lib/exercises/math/calcul/arithmetics/index.d.ts +1 -0
- package/lib/exercises/math/calcul/arithmetics/index.d.ts.map +1 -1
- package/lib/exercises/math/calcul/arithmetics/index.js +1 -0
- package/lib/exercises/math/calcul/decimals/decimalFractionToDecimal.d.ts +11 -0
- package/lib/exercises/math/calcul/decimals/decimalFractionToDecimal.d.ts.map +1 -0
- package/lib/exercises/math/calcul/decimals/decimalFractionToDecimal.js +243 -0
- package/lib/exercises/math/calcul/decimals/index.d.ts +1 -0
- package/lib/exercises/math/calcul/decimals/index.d.ts.map +1 -1
- package/lib/exercises/math/calcul/decimals/index.js +1 -0
- package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityAdd.d.ts +12 -0
- package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityAdd.d.ts.map +1 -0
- package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityAdd.js +173 -0
- package/lib/exercises/math/calculLitteral/distributivity/index.d.ts +1 -0
- package/lib/exercises/math/calculLitteral/distributivity/index.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/distributivity/index.js +1 -0
- package/lib/exercises/math/calculLitteral/equation/equationSecondDegreeWithNoB.d.ts +7 -0
- package/lib/exercises/math/calculLitteral/equation/equationSecondDegreeWithNoB.d.ts.map +1 -0
- package/lib/exercises/math/calculLitteral/equation/equationSecondDegreeWithNoB.js +160 -0
- package/lib/exercises/math/calculLitteral/simplifying/compareMinusA.js +1 -1
- package/lib/exercises/math/dataRepresentations/barChartInterpreting.d.ts.map +1 -1
- package/lib/exercises/math/dataRepresentations/barChartInterpreting.js +0 -1
- package/lib/exercises/math/derivation/derivative/composition/functionCompositionDerivative.d.ts +11 -0
- package/lib/exercises/math/derivation/derivative/composition/functionCompositionDerivative.d.ts.map +1 -0
- package/lib/exercises/math/derivation/derivative/composition/functionCompositionDerivative.js +372 -0
- package/lib/exercises/math/derivation/derivative/composition/index.d.ts +2 -0
- package/lib/exercises/math/derivation/derivative/composition/index.d.ts.map +1 -0
- package/lib/exercises/math/derivation/derivative/composition/index.js +1 -0
- package/lib/exercises/math/derivation/derivative/index.d.ts +1 -0
- package/lib/exercises/math/derivation/derivative/index.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/index.js +1 -0
- package/lib/exercises/math/functions/affines/recognizeAffineGraph.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/recognizeAffineGraph.js +3 -3
- package/lib/exercises/math/functions/affines/recognizeExprAffine.js +2 -2
- package/lib/exercises/math/functions/composition/functionComposition.js +1 -1
- package/lib/exercises/math/functions/composition/functionDecompositionFindPossibleUVs.d.ts +13 -0
- package/lib/exercises/math/functions/composition/functionDecompositionFindPossibleUVs.d.ts.map +1 -0
- package/lib/exercises/math/functions/composition/functionDecompositionFindPossibleUVs.js +223 -0
- package/lib/exercises/math/functions/composition/functionDecompositionFindUOrV.d.ts +9 -0
- package/lib/exercises/math/functions/composition/functionDecompositionFindUOrV.d.ts.map +1 -0
- package/lib/exercises/math/functions/composition/functionDecompositionFindUOrV.js +252 -0
- package/lib/exercises/math/functions/composition/index.d.ts +2 -0
- package/lib/exercises/math/functions/composition/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/composition/index.js +2 -0
- package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLineV2.d.ts.map +1 -1
- package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLineV2.js +1 -1
- package/lib/exercises/math/geometry/vectors/constructions/index.d.ts +1 -0
- package/lib/exercises/math/geometry/vectors/constructions/index.d.ts.map +1 -1
- package/lib/exercises/math/geometry/vectors/constructions/index.js +1 -0
- package/lib/exercises/math/geometry/vectors/constructions/traceVectorCL.d.ts +13 -0
- package/lib/exercises/math/geometry/vectors/constructions/traceVectorCL.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/constructions/traceVectorCL.js +178 -0
- package/lib/exercises/math/percent/evolutions/findEndValueAfterEvolution.d.ts.map +1 -1
- package/lib/exercises/math/percent/evolutions/findEndValueAfterEvolution.js +1 -1
- package/lib/exercises/math/powers/powersMixOperations.d.ts +4 -1
- package/lib/exercises/math/powers/powersMixOperations.d.ts.map +1 -1
- package/lib/exercises/math/powers/powersMixOperations.js +17 -7
- package/lib/exercises/math/probaStat/stats1var/plausibilityOfAverage.js +1 -1
- package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormula.d.ts.map +1 -1
- package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormula.js +2 -1
- package/lib/exercises/math/sequences/geometric/geometricFirstTermsGeneralSum.d.ts +5 -1
- package/lib/exercises/math/sequences/geometric/geometricFirstTermsGeneralSum.d.ts.map +1 -1
- package/lib/exercises/math/sequences/geometric/geometricFirstTermsGeneralSum.js +23 -6
- package/lib/exercises/math/sequences/recurrenceFormulaUsage.js +1 -1
- package/lib/index.d.ts +42 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/math/utils/arithmetic/isCoprime.d.ts +2 -0
- package/lib/math/utils/arithmetic/isCoprime.d.ts.map +1 -0
- package/lib/math/utils/arithmetic/isCoprime.js +10 -0
- package/lib/math/utils/arithmetic/primeDecompNode.d.ts +3 -0
- package/lib/math/utils/arithmetic/primeDecompNode.d.ts.map +1 -0
- package/lib/math/utils/arithmetic/primeDecompNode.js +24 -0
- package/lib/math/utils/functions/functionComparison.d.ts +3 -0
- package/lib/math/utils/functions/functionComparison.d.ts.map +1 -0
- package/lib/math/utils/functions/functionComparison.js +58 -0
- package/lib/math/utils/functions/functionComposition.d.ts +13 -0
- package/lib/math/utils/functions/functionComposition.d.ts.map +1 -0
- package/lib/math/utils/functions/functionComposition.js +117 -0
- package/lib/math/utils/functions/functionDecomposition.d.ts +10 -0
- package/lib/math/utils/functions/functionDecomposition.d.ts.map +1 -0
- package/lib/math/utils/functions/functionDecomposition.js +256 -0
- package/lib/server.js +25 -29
- package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/powerNode.js +4 -0
- package/lib/utils/strings/joinanded.d.ts +2 -0
- package/lib/utils/strings/joinanded.d.ts.map +1 -0
- package/lib/utils/strings/joinanded.js +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coprime.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/arithmetics/coprime.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EAWT,MAAM,sBAAsB,CAAC;AAQ9B,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA4GF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,WAAW,CAezC,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
2
|
+
import { addValidProp, tryToAddWrongProp, } from "../../../exercise.js";
|
|
3
|
+
import { getDistinctQuestions } from "../../../utils/getDistinctQuestions.js";
|
|
4
|
+
import { isPrime } from "../../../../math/utils/arithmetic/isPrime.js";
|
|
5
|
+
import { primeDecomposition } from "../../../../math/utils/arithmetic/primeDecomposition.js";
|
|
6
|
+
import { isCoprime } from "../../../../math/utils/arithmetic/isCoprime.js";
|
|
7
|
+
import { joinanded } from "../../../../utils/strings/joinanded.js";
|
|
8
|
+
import { primeDecompNode } from "../../../../math/utils/arithmetic/primeDecompNode.js";
|
|
9
|
+
const getInstruction = (identifiers) => {
|
|
10
|
+
const { a, b } = identifiers;
|
|
11
|
+
return `Les nombres $${a}$ et $${b}$ sont-ils premiers entre eux ?`;
|
|
12
|
+
};
|
|
13
|
+
const getAnswer = (identifiers) => {
|
|
14
|
+
const { a, b } = identifiers;
|
|
15
|
+
return ["Oui", "Non"][isCoprime(a, b) ? 0 : 1];
|
|
16
|
+
};
|
|
17
|
+
const getHint = () => {
|
|
18
|
+
return `On dit que deux nombres sont premiers entre eux lorsqu'ils n'ont qu'un seul diviseur commun (le nombre $1$).`;
|
|
19
|
+
};
|
|
20
|
+
const getCorrection = (identifiers) => {
|
|
21
|
+
const { a, b } = identifiers;
|
|
22
|
+
const [isPrimeA, isPrimeB] = [a, b].map((n) => isPrime(n));
|
|
23
|
+
if (isPrimeA && isPrimeB) {
|
|
24
|
+
return `$${a.frenchify()}$ est un nombre premier.
|
|
25
|
+
$${b.frenchify()}$ est un nombre premier.
|
|
26
|
+
Les nombres $${a.frenchify()}$ et $${b.frenchify()}$ n'ont que $1$ comme diviseur commun.
|
|
27
|
+
Autrement dit, ils sont premiers entre eux.`;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const [dictDecompA, dictDecompB] = [a, b].map((n) => {
|
|
31
|
+
const arrDecomp = primeDecomposition(n);
|
|
32
|
+
const dictDecomp = Object.fromEntries(arrDecomp.map(({ value, power }) => [value, power]));
|
|
33
|
+
return dictDecomp;
|
|
34
|
+
});
|
|
35
|
+
const commonPrimeFactors = Object.keys(dictDecompA)
|
|
36
|
+
.filter((value) => dictDecompB[value] !== undefined)
|
|
37
|
+
.map((str) => +str);
|
|
38
|
+
return `
|
|
39
|
+
Avant tout chose, on peut déjà dire que $${a.frenchify()}$ et $${b.frenchify()}$ ont $1$ comme un diviseur commun.
|
|
40
|
+
|
|
41
|
+
Voici les décompositions en facteurs premiers de $${a.frenchify()}$ et $${b.frenchify()}$ :
|
|
42
|
+
|
|
43
|
+
$$
|
|
44
|
+
${a.frenchify()} = ${primeDecompNode(a).toTex()}
|
|
45
|
+
$$
|
|
46
|
+
|
|
47
|
+
$$
|
|
48
|
+
${b.frenchify()} = ${primeDecompNode(b).toTex()}
|
|
49
|
+
$$
|
|
50
|
+
|
|
51
|
+
${(() => {
|
|
52
|
+
if (commonPrimeFactors.length === 0) {
|
|
53
|
+
return `
|
|
54
|
+
Les nombres $${a.frenchify()}$ et $${b.frenchify()}$ n'admettent aucun facteur premier commun.
|
|
55
|
+
Leur seul diviseur commun est $1$.
|
|
56
|
+
Ils sont premiers entre eux.`;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return `
|
|
60
|
+
Les nombres $${a.frenchify()}$ et $${b.frenchify()}$ admettent ${joinanded(commonPrimeFactors.map((v) => `$${v}$`), ", ", " et ")} comme ${commonPrimeFactors.length > 1
|
|
61
|
+
? "facteurs premiers communs"
|
|
62
|
+
: "facteur premier commun"}.
|
|
63
|
+
Ils admettent donc au moins deux diviseurs communs : $1$ et $${commonPrimeFactors[0].frenchify()}$.
|
|
64
|
+
Ils ne sont pas premiers entre eux.`;
|
|
65
|
+
}
|
|
66
|
+
})()}`;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const getPropositions = (_, { answer }) => {
|
|
70
|
+
const propositions = [];
|
|
71
|
+
["Oui", "Non"].forEach((str) => {
|
|
72
|
+
if (str === answer) {
|
|
73
|
+
addValidProp(propositions, str, "raw");
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
tryToAddWrongProp(propositions, str, "raw");
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return propositions;
|
|
80
|
+
};
|
|
81
|
+
const getCoprimeQuestion = () => {
|
|
82
|
+
const a = randint(2, 100);
|
|
83
|
+
const b = randint(2, 100, [a]);
|
|
84
|
+
const identifiers = { a, b };
|
|
85
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
86
|
+
};
|
|
87
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
88
|
+
const question = {
|
|
89
|
+
instruction: getInstruction(identifiers),
|
|
90
|
+
answer: getAnswer(identifiers),
|
|
91
|
+
keys: [],
|
|
92
|
+
answerFormat: "tex",
|
|
93
|
+
identifiers,
|
|
94
|
+
hint: getHint(identifiers),
|
|
95
|
+
correction: getCorrection(identifiers),
|
|
96
|
+
};
|
|
97
|
+
return question;
|
|
98
|
+
};
|
|
99
|
+
export const coprime = {
|
|
100
|
+
id: "coprime",
|
|
101
|
+
connector: "=",
|
|
102
|
+
label: "Déterminer si deux nombres sont premiers entre eux",
|
|
103
|
+
isSingleStep: true,
|
|
104
|
+
generator: (nb, opts) => getDistinctQuestions(() => getCoprimeQuestion(opts), nb, 30),
|
|
105
|
+
qcmTimer: 60,
|
|
106
|
+
freeTimer: 60,
|
|
107
|
+
getPropositions,
|
|
108
|
+
subject: "Mathématiques",
|
|
109
|
+
maxAllowedQuestions: 30,
|
|
110
|
+
getQuestionFromIdentifiers,
|
|
111
|
+
hasHintAndCorrection: true,
|
|
112
|
+
answerType: "QCU",
|
|
113
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/arithmetics/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/arithmetics/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
isFractionToDigital: boolean;
|
|
4
|
+
nb: number;
|
|
5
|
+
};
|
|
6
|
+
type Options = {
|
|
7
|
+
conversionType: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const decimalFractionToDecimal: Exercise<Identifiers, Options>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=decimalFractionToDecimal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimalFractionToDecimal.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/decimals/decimalFractionToDecimal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAiBT,MAAM,6BAA6B,CAAC;AAoBrC,KAAK,WAAW,GAAG;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAkQF,KAAK,OAAO,GAAG;IACb,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AA4BF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAgBnE,CAAC"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { GeneratorOptionTarget, GeneratorOptionType, addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { Decimal } from "../../../../math/numbers/decimals/decimal.js";
|
|
4
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
5
|
+
import { isNumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
|
|
6
|
+
import { frac, isFractionNode, } from "../../../../tree/nodes/operators/fractionNode.js";
|
|
7
|
+
import { MultiplyNode } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
8
|
+
import { power } from "../../../../tree/nodes/operators/powerNode.js";
|
|
9
|
+
import { substract } from "../../../../tree/nodes/operators/substractNode.js";
|
|
10
|
+
import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
|
|
11
|
+
import { operatorComposition } from "../../../../tree/utilities/operatorComposition.js";
|
|
12
|
+
import { random } from "../../../../utils/alea/random.js";
|
|
13
|
+
import { shuffle } from "../../../../utils/alea/shuffle.js";
|
|
14
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
15
|
+
const getAnswer = ({ nb, isFractionToDigital }) => {
|
|
16
|
+
const dec = new Decimal(nb);
|
|
17
|
+
const digitalTex = dec.toTree().toTex();
|
|
18
|
+
const fractionNode = dec.toRational(false).toTree();
|
|
19
|
+
return isFractionToDigital ? digitalTex : fractionNode.toTex();
|
|
20
|
+
};
|
|
21
|
+
const getInstruction = ({ isFractionToDigital, nb, }) => {
|
|
22
|
+
const dec = new Decimal(nb);
|
|
23
|
+
const digitalTex = dec.toTree().toTex();
|
|
24
|
+
const fractionTex = dec.toRational(false).toTree().toTex();
|
|
25
|
+
return `Écrire le nombre suivant ${isFractionToDigital
|
|
26
|
+
? "sous forme de nombre à virgule"
|
|
27
|
+
: "sous forme de fraction décimale"} :
|
|
28
|
+
|
|
29
|
+
$$
|
|
30
|
+
${isFractionToDigital ? fractionTex : digitalTex}
|
|
31
|
+
$$`;
|
|
32
|
+
};
|
|
33
|
+
const getHint = ({ isFractionToDigital }) => {
|
|
34
|
+
return `${isFractionToDigital
|
|
35
|
+
? `Rappelle-toi que $\\frac{1}{100}$, c'est un centième, donc $0,01$.`
|
|
36
|
+
: `Rappelle-toi que $0,01$, c'est un centième, donc $1$ sur $100$, autrement dit $${new Decimal(0.01)
|
|
37
|
+
.toRational(false)
|
|
38
|
+
.toTree()
|
|
39
|
+
.toTex()}$.`}`;
|
|
40
|
+
};
|
|
41
|
+
const getCorrection = ({ isFractionToDigital, nb, }) => {
|
|
42
|
+
const dec = new Decimal(nb);
|
|
43
|
+
const digitalTex = dec.toTree().toTex();
|
|
44
|
+
const fractionNode = dec.toRational(false).toTree();
|
|
45
|
+
const numNodeSrc = fractionNode.leftChild;
|
|
46
|
+
const denNodeSrc = fractionNode.rightChild;
|
|
47
|
+
const log10OfDen = Math.log10(denNodeSrc.evaluate());
|
|
48
|
+
const arrFractionNodes = [...Array(log10OfDen).keys()].map((i) => {
|
|
49
|
+
const numNode = frac(numNodeSrc, power(10, i)).evaluate().toTree();
|
|
50
|
+
const denNode = operatorComposition(MultiplyNode, [...Array(log10OfDen - i).keys()].map(() => (10).toTree()));
|
|
51
|
+
return frac(numNode, denNode.evaluate());
|
|
52
|
+
});
|
|
53
|
+
const arrFractionNodesReversed = arrFractionNodes.toReversed();
|
|
54
|
+
return isFractionToDigital
|
|
55
|
+
? `Quand on divise un nombre par $10$, cela revient à décaler tous les chiffres de son écriture décimale d'un rang vers la droite.
|
|
56
|
+
|
|
57
|
+
${(() => {
|
|
58
|
+
const fractionNodeExpanded = frac(numNodeSrc, operatorComposition(MultiplyNode, [...Array(log10OfDen).keys()].map(() => (10).toTree())));
|
|
59
|
+
const texFractionNode = fractionNode.toTex();
|
|
60
|
+
const texFractionNodeExpanded = fractionNodeExpanded.toTex();
|
|
61
|
+
if (texFractionNode !== texFractionNodeExpanded) {
|
|
62
|
+
return `Ici, on a :
|
|
63
|
+
|
|
64
|
+
$$
|
|
65
|
+
${texFractionNode} = ${texFractionNodeExpanded}
|
|
66
|
+
$$`;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return "";
|
|
70
|
+
}
|
|
71
|
+
})()}
|
|
72
|
+
|
|
73
|
+
On divise ${log10OfDen > 1 ? "donc" : ""} $${log10OfDen}$ fois par $10$, donc on décale $${log10OfDen}$ fois les chiffres d'un rang vers la droite.
|
|
74
|
+
|
|
75
|
+
$$
|
|
76
|
+
${alignTex(arrFractionNodes.length > 1
|
|
77
|
+
? [
|
|
78
|
+
[arrFractionNodes[0].toTex(), "=", arrFractionNodes[1].toTex()],
|
|
79
|
+
...arrFractionNodes.slice(2).map((node) => ["", "=", node.toTex()]),
|
|
80
|
+
["", "=", digitalTex],
|
|
81
|
+
]
|
|
82
|
+
: [[arrFractionNodes[0].toTex(), "=", digitalTex]], true)}
|
|
83
|
+
$$
|
|
84
|
+
|
|
85
|
+
`
|
|
86
|
+
: `Pour écrire un nombre à virgule sous la forme d'une fraction décimale,
|
|
87
|
+
on a envie de décaler ses chiffres un certain nombre de fois vers la gauche,
|
|
88
|
+
ce qui revient à le multiplier par $10$ autant de fois que nécessaire jusqu'à ce que tous les chiffres soient à gauche de la virgule et qu'il n'y ait plus besoin de la faire figurer.
|
|
89
|
+
Mais pour conserver l'égalité avec le nombre que l'on avait au départ, il ne faut pas oublier de diviser par $10$ autant de fois que l'on a décalé d'un rang vers la gauche.
|
|
90
|
+
|
|
91
|
+
Ici on va faire $${log10OfDen}$ fois le décalage et la division.
|
|
92
|
+
|
|
93
|
+
$$
|
|
94
|
+
${alignTex([
|
|
95
|
+
[digitalTex, "=", arrFractionNodesReversed[0].toTex()],
|
|
96
|
+
...arrFractionNodesReversed.slice(1).map((node) => ["", "=", node.toTex()]),
|
|
97
|
+
], true)}
|
|
98
|
+
$$
|
|
99
|
+
|
|
100
|
+
Si on continue à décaler et diviser, on obtient d'autres fractions décimales égales à $${digitalTex}$.
|
|
101
|
+
|
|
102
|
+
`;
|
|
103
|
+
};
|
|
104
|
+
const getPropositions = (n, { answer, isFractionToDigital, nb }) => {
|
|
105
|
+
console.log("getPropositions", nb);
|
|
106
|
+
const propositions = [];
|
|
107
|
+
addValidProp(propositions, answer);
|
|
108
|
+
const dec = new Decimal(nb);
|
|
109
|
+
const fractionNode = dec.toRational(false).toTree();
|
|
110
|
+
const denNodeSrc = fractionNode.rightChild;
|
|
111
|
+
const log10OfDen = Math.log10(denNodeSrc.evaluate());
|
|
112
|
+
const maxExponentExcluded = log10OfDen;
|
|
113
|
+
console.log("maxExponentExcluded", maxExponentExcluded);
|
|
114
|
+
const mandatoryExponents = [-1, ...(maxExponentExcluded > 1 ? [1] : [])];
|
|
115
|
+
const fillerExponents = [
|
|
116
|
+
-3,
|
|
117
|
+
-2,
|
|
118
|
+
...(maxExponentExcluded > 2 ? [2] : []),
|
|
119
|
+
...(maxExponentExcluded > 3 ? [3] : []),
|
|
120
|
+
];
|
|
121
|
+
function tryToAddWrongPropWithExponent(exponent) {
|
|
122
|
+
const wrongNumber = dec.multiplyByPowerOfTen(exponent);
|
|
123
|
+
const node = isFractionToDigital
|
|
124
|
+
? wrongNumber.toTree()
|
|
125
|
+
: wrongNumber.toRational(false).toTree();
|
|
126
|
+
tryToAddWrongProp(propositions, node.toTex());
|
|
127
|
+
}
|
|
128
|
+
mandatoryExponents.forEach((exponent) => {
|
|
129
|
+
tryToAddWrongPropWithExponent(exponent);
|
|
130
|
+
});
|
|
131
|
+
shuffle(fillerExponents).forEach((exponent) => {
|
|
132
|
+
if (propositions.length < n) {
|
|
133
|
+
tryToAddWrongPropWithExponent(exponent);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return shuffleProps(propositions, n);
|
|
137
|
+
};
|
|
138
|
+
const isAnswerValid = (ans, { answer, isFractionToDigital, nb }) => {
|
|
139
|
+
if (isFractionToDigital) {
|
|
140
|
+
const isValidDigital = /^\d+,\d+$/.test(ans);
|
|
141
|
+
if (!isValidDigital) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const nodeAns = parseAlgebraic(answer);
|
|
145
|
+
return substract(nodeAns, nb).evaluate() === 0;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const nodeAns = parseAlgebraic(ans);
|
|
149
|
+
if (isFractionNode(nodeAns)) {
|
|
150
|
+
const fractionNodeAns = nodeAns;
|
|
151
|
+
const denAns = fractionNodeAns.rightChild;
|
|
152
|
+
if (isNumberNode(denAns)) {
|
|
153
|
+
const log10Den = Math.log10(denAns.value);
|
|
154
|
+
const isDecAPowerOf10 = log10Den % 1 === 0;
|
|
155
|
+
if (isDecAPowerOf10) {
|
|
156
|
+
return substract(nodeAns, nb).evaluate() === 0;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const getDecimalFractionToDecimalQuestion = (optsIn) => {
|
|
172
|
+
const arrayedOptions = optsIn ?? optsDefault;
|
|
173
|
+
const opts = {
|
|
174
|
+
conversionType: random(arrayedOptions.conversionType),
|
|
175
|
+
};
|
|
176
|
+
const isFractionToDigital = opts.conversionType === "Fraction vers nombre à virgule";
|
|
177
|
+
const nb = (() => {
|
|
178
|
+
const createNum = (nbDigitsOfNum) => {
|
|
179
|
+
if (nbDigitsOfNum === 1) {
|
|
180
|
+
return randint(1, 10);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
return parseInt(`${randint(1, Math.pow(10, nbDigitsOfNum - 1))}${randint(1, 10)}`);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
const nbDigitsOfNum = randint(1, 6);
|
|
187
|
+
const num = createNum(nbDigitsOfNum);
|
|
188
|
+
const den = Math.pow(10, randint(1, nbDigitsOfNum + 3));
|
|
189
|
+
return num / den;
|
|
190
|
+
})();
|
|
191
|
+
const identifiers = {
|
|
192
|
+
isFractionToDigital,
|
|
193
|
+
nb,
|
|
194
|
+
};
|
|
195
|
+
return getQuestionFromIdentifiers(identifiers, opts);
|
|
196
|
+
};
|
|
197
|
+
const getQuestionFromIdentifiers = (identifiers, opts) => {
|
|
198
|
+
const question = {
|
|
199
|
+
answer: getAnswer(identifiers),
|
|
200
|
+
instruction: getInstruction(identifiers),
|
|
201
|
+
keys: [],
|
|
202
|
+
answerFormat: "tex",
|
|
203
|
+
identifiers,
|
|
204
|
+
hint: getHint(identifiers),
|
|
205
|
+
correction: getCorrection(identifiers),
|
|
206
|
+
options: opts,
|
|
207
|
+
};
|
|
208
|
+
return question;
|
|
209
|
+
};
|
|
210
|
+
const optsDefault = {
|
|
211
|
+
conversionType: [
|
|
212
|
+
"Fraction vers nombre à virgule",
|
|
213
|
+
"Nombre à virgule vers fraction",
|
|
214
|
+
],
|
|
215
|
+
};
|
|
216
|
+
const options = [
|
|
217
|
+
{
|
|
218
|
+
id: "conversionType",
|
|
219
|
+
label: "Type de conversion",
|
|
220
|
+
target: GeneratorOptionTarget.generation,
|
|
221
|
+
type: GeneratorOptionType.multiselect,
|
|
222
|
+
values: [
|
|
223
|
+
"Fraction vers nombre à virgule",
|
|
224
|
+
"Nombre à virgule vers fraction",
|
|
225
|
+
],
|
|
226
|
+
defaultValue: optsDefault.conversionType,
|
|
227
|
+
},
|
|
228
|
+
];
|
|
229
|
+
export const decimalFractionToDecimal = {
|
|
230
|
+
id: "decimalFractionToDecimal",
|
|
231
|
+
connector: "=",
|
|
232
|
+
label: "Passer de la fraction décimale à l'écriture avec la virgule et vice-versa",
|
|
233
|
+
isSingleStep: true,
|
|
234
|
+
generator: (nb, opts) => getDistinctQuestions(() => getDecimalFractionToDecimalQuestion(opts), nb),
|
|
235
|
+
options,
|
|
236
|
+
qcmTimer: 60,
|
|
237
|
+
freeTimer: 60,
|
|
238
|
+
getPropositions,
|
|
239
|
+
isAnswerValid,
|
|
240
|
+
subject: "Mathématiques",
|
|
241
|
+
hasHintAndCorrection: true,
|
|
242
|
+
getQuestionFromIdentifiers,
|
|
243
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/decimals/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/decimals/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { GeneralAffineIdentifiers } from "../../../../math/polynomials/generalAffine.js";
|
|
3
|
+
type Identifiers = {
|
|
4
|
+
type: number;
|
|
5
|
+
affine1: GeneralAffineIdentifiers;
|
|
6
|
+
affine2: GeneralAffineIdentifiers;
|
|
7
|
+
affine3: GeneralAffineIdentifiers;
|
|
8
|
+
affine4?: GeneralAffineIdentifiers;
|
|
9
|
+
};
|
|
10
|
+
export declare const doubleDistributivityAdd: Exercise<Identifiers>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=doubleDistributivityAdd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubleDistributivityAdd.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/distributivity/doubleDistributivityAdd.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAGL,wBAAwB,EACzB,MAAM,yCAAyC,CAAC;AASjD,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,wBAAwB,CAAC;IAElC,OAAO,EAAE,wBAAwB,CAAC;IAElC,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAoLF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { GeneralAffine, GeneralAffineConstructor, } from "../../../../math/polynomials/generalAffine.js";
|
|
4
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
5
|
+
import { add } from "../../../../tree/nodes/operators/addNode.js";
|
|
6
|
+
import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
7
|
+
import { square } from "../../../../tree/nodes/operators/powerNode.js";
|
|
8
|
+
import { substract } from "../../../../tree/nodes/operators/substractNode.js";
|
|
9
|
+
import { TrinomNodeConstructor } from "../../../../tree/nodes/polynomials/trinomNode.js";
|
|
10
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
11
|
+
//(ax+b)(cx+d)+ex(gx+h)
|
|
12
|
+
//(ax+b)(cx+d)+(ex+f)(gx+h)
|
|
13
|
+
//(ax+b)(cx+d)+(ex+-f)^2
|
|
14
|
+
const getPropositions = (n, { answer, affine1, affine2, affine3, type, affine4 }) => {
|
|
15
|
+
const propositions = [];
|
|
16
|
+
addValidProp(propositions, answer);
|
|
17
|
+
const affs = [
|
|
18
|
+
GeneralAffineConstructor.fromIdentifiers(affine1),
|
|
19
|
+
GeneralAffineConstructor.fromIdentifiers(affine2),
|
|
20
|
+
GeneralAffineConstructor.fromIdentifiers(affine3),
|
|
21
|
+
].map((e) => e.toTree());
|
|
22
|
+
if (affine4) {
|
|
23
|
+
affs.push(GeneralAffineConstructor.fromIdentifiers(affine4).toTree());
|
|
24
|
+
}
|
|
25
|
+
if (type === 3)
|
|
26
|
+
tryToAddWrongProp(propositions, substract(multiply(affs[0], affs[1]), square(affs[2]))
|
|
27
|
+
.simplify({
|
|
28
|
+
forbidFactorize: true,
|
|
29
|
+
towardsDistribute: true,
|
|
30
|
+
})
|
|
31
|
+
.toTex());
|
|
32
|
+
else
|
|
33
|
+
tryToAddWrongProp(propositions, substract(multiply(affs[0], affs[1]), multiply(affs[2], affs[3]))
|
|
34
|
+
.simplify({
|
|
35
|
+
forbidFactorize: true,
|
|
36
|
+
towardsDistribute: true,
|
|
37
|
+
})
|
|
38
|
+
.toTex());
|
|
39
|
+
propWhile(propositions, n, () => {
|
|
40
|
+
tryToAddWrongProp(propositions, TrinomNodeConstructor.random().toTex());
|
|
41
|
+
});
|
|
42
|
+
return shuffleProps(propositions, n);
|
|
43
|
+
};
|
|
44
|
+
const getAnswerNode = (identifiers) => {
|
|
45
|
+
return getStatementNode(identifiers).simplify({
|
|
46
|
+
forbidFactorize: true,
|
|
47
|
+
towardsDistribute: true,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
const getAnswer = (identifiers) => {
|
|
51
|
+
return getAnswerNode(identifiers).toTex();
|
|
52
|
+
};
|
|
53
|
+
const getStatementNode = (identifiers) => {
|
|
54
|
+
const affs = [
|
|
55
|
+
GeneralAffineConstructor.fromIdentifiers(identifiers.affine1),
|
|
56
|
+
GeneralAffineConstructor.fromIdentifiers(identifiers.affine2),
|
|
57
|
+
GeneralAffineConstructor.fromIdentifiers(identifiers.affine3),
|
|
58
|
+
].map((e) => e.toTree());
|
|
59
|
+
if (identifiers.affine4) {
|
|
60
|
+
affs.push(GeneralAffineConstructor.fromIdentifiers(identifiers.affine4).toTree());
|
|
61
|
+
}
|
|
62
|
+
if (identifiers.affine4)
|
|
63
|
+
return add(multiply(affs[0], affs[1]), multiply(affs[2], affs[3]));
|
|
64
|
+
return add(multiply(affs[0], affs[1]), square(affs[2]));
|
|
65
|
+
};
|
|
66
|
+
const getInstruction = (identifiers) => {
|
|
67
|
+
return `Développer et réduire :
|
|
68
|
+
|
|
69
|
+
$$
|
|
70
|
+
${getStatementNode(identifiers).toTex()}
|
|
71
|
+
$$
|
|
72
|
+
`;
|
|
73
|
+
};
|
|
74
|
+
const getHint = () => {
|
|
75
|
+
return "Développe et réduit chacun des produits d'abord. Puis, additionne les deux résultats.";
|
|
76
|
+
};
|
|
77
|
+
const getCorrection = (identifiers) => {
|
|
78
|
+
const { affine1, affine2, affine3, type, affine4 } = identifiers;
|
|
79
|
+
const affs = [
|
|
80
|
+
GeneralAffineConstructor.fromIdentifiers(affine1),
|
|
81
|
+
GeneralAffineConstructor.fromIdentifiers(affine2),
|
|
82
|
+
GeneralAffineConstructor.fromIdentifiers(affine3),
|
|
83
|
+
affine4 ? GeneralAffineConstructor.fromIdentifiers(affine4) : 0,
|
|
84
|
+
].map((e) => e.toTree());
|
|
85
|
+
const first = multiply(affs[0], affs[1]);
|
|
86
|
+
const second = type === 3 ? square(affs[2]) : multiply(affs[2], affs[3]);
|
|
87
|
+
const firstSimp = first.simplify({
|
|
88
|
+
towardsDistribute: true,
|
|
89
|
+
forbidFactorize: true,
|
|
90
|
+
});
|
|
91
|
+
const secondSimp = second.simplify({
|
|
92
|
+
towardsDistribute: true,
|
|
93
|
+
forbidFactorize: true,
|
|
94
|
+
});
|
|
95
|
+
return `D'une part :
|
|
96
|
+
|
|
97
|
+
${alignTex([
|
|
98
|
+
["", first.toTex()],
|
|
99
|
+
["=", firstSimp.toTex()],
|
|
100
|
+
])}
|
|
101
|
+
|
|
102
|
+
D'autre part :
|
|
103
|
+
${alignTex([
|
|
104
|
+
["", second.toTex()],
|
|
105
|
+
["=", secondSimp.toTex()],
|
|
106
|
+
])}
|
|
107
|
+
|
|
108
|
+
On additionne les deux résultats :
|
|
109
|
+
|
|
110
|
+
${alignTex([
|
|
111
|
+
["", add(first, second).toTex()],
|
|
112
|
+
["=", add(firstSimp, secondSimp).toTex()],
|
|
113
|
+
[
|
|
114
|
+
"=",
|
|
115
|
+
add(first, second)
|
|
116
|
+
.simplify({ towardsDistribute: true, forbidFactorize: true })
|
|
117
|
+
.toTex(),
|
|
118
|
+
],
|
|
119
|
+
])}
|
|
120
|
+
`;
|
|
121
|
+
};
|
|
122
|
+
const getKeys = () => {
|
|
123
|
+
return ["x"];
|
|
124
|
+
};
|
|
125
|
+
const isAnswerValid = (ans, { answer, ...identifiers }) => {
|
|
126
|
+
const texs = getAnswerNode(identifiers).toAllValidTexs({});
|
|
127
|
+
return texs.includes(ans);
|
|
128
|
+
};
|
|
129
|
+
const getDoubleDistributivityAddQuestion = () => {
|
|
130
|
+
const type = randint(1, 4);
|
|
131
|
+
const affine1 = GeneralAffineConstructor.randomInts({ allowBNull: false });
|
|
132
|
+
const affine2 = GeneralAffineConstructor.randomInts({ allowBNull: false });
|
|
133
|
+
const affine3 = type === 1
|
|
134
|
+
? new GeneralAffine(randint(-10, 11, [0]), 0)
|
|
135
|
+
: GeneralAffineConstructor.randomInts({ allowBNull: false });
|
|
136
|
+
const affine4 = type === 3
|
|
137
|
+
? undefined
|
|
138
|
+
: GeneralAffineConstructor.randomInts({ allowBNull: false });
|
|
139
|
+
const identifiers = {
|
|
140
|
+
type,
|
|
141
|
+
affine1: affine1.toIdentifiers(),
|
|
142
|
+
affine2: affine2.toIdentifiers(),
|
|
143
|
+
affine3: affine3.toIdentifiers(),
|
|
144
|
+
affine4: affine4?.toIdentifiers(),
|
|
145
|
+
};
|
|
146
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
147
|
+
};
|
|
148
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
149
|
+
const question = {
|
|
150
|
+
answer: getAnswer(identifiers),
|
|
151
|
+
instruction: getInstruction(identifiers),
|
|
152
|
+
keys: getKeys(identifiers),
|
|
153
|
+
answerFormat: "tex",
|
|
154
|
+
identifiers,
|
|
155
|
+
hint: getHint(identifiers),
|
|
156
|
+
correction: getCorrection(identifiers),
|
|
157
|
+
};
|
|
158
|
+
return question;
|
|
159
|
+
};
|
|
160
|
+
export const doubleDistributivityAdd = {
|
|
161
|
+
id: "doubleDistributivityAdd",
|
|
162
|
+
connector: "=",
|
|
163
|
+
label: "Double distributivité : addition de deux produits",
|
|
164
|
+
isSingleStep: false,
|
|
165
|
+
generator: (nb, opts) => getDistinctQuestions(() => getDoubleDistributivityAddQuestion(opts), nb),
|
|
166
|
+
qcmTimer: 60,
|
|
167
|
+
freeTimer: 60,
|
|
168
|
+
getPropositions,
|
|
169
|
+
isAnswerValid,
|
|
170
|
+
subject: "Mathématiques",
|
|
171
|
+
getQuestionFromIdentifiers,
|
|
172
|
+
hasHintAndCorrection: true,
|
|
173
|
+
};
|
|
@@ -10,4 +10,5 @@ export * from "./simpleDistriXCoeff.js";
|
|
|
10
10
|
export * from "./doubleDistributivitySubstract.js";
|
|
11
11
|
export * from "./identitiesWithNonIntegers.js";
|
|
12
12
|
export * from "./simpleDistriMinus1.js";
|
|
13
|
+
export * from "./doubleDistributivityAdd.js";
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/distributivity/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/distributivity/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equationSecondDegreeWithNoB.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/equation/equationSecondDegreeWithNoB.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAwBrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAoKF,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,WAAW,CAa7D,CAAC"}
|