math-exercises 3.0.217 → 3.0.218

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/lib/exercises/math/calcul/arithmetics/commonDivisorsList.d.ts.map +1 -1
  2. package/lib/exercises/math/calcul/arithmetics/commonDivisorsList.js +1 -0
  3. package/lib/exercises/math/calcul/fractions/fractionAndIntegerDivision.d.ts.map +1 -1
  4. package/lib/exercises/math/calcul/fractions/fractionAndIntegerDivision.js +5 -8
  5. package/lib/exercises/math/calcul/fractions/fractionAndIntegerProduct.d.ts.map +1 -1
  6. package/lib/exercises/math/calcul/fractions/fractionAndIntegerProduct.js +7 -17
  7. package/lib/exercises/math/calcul/fractions/fractionForbiddenValue.d.ts.map +1 -1
  8. package/lib/exercises/math/calcul/fractions/fractionForbiddenValue.js +5 -6
  9. package/lib/exercises/math/calcul/fractions/fractionsDivision.d.ts.map +1 -1
  10. package/lib/exercises/math/calcul/fractions/fractionsDivision.js +7 -17
  11. package/lib/exercises/math/calcul/fractions/fractionsSum.d.ts.map +1 -1
  12. package/lib/exercises/math/calcul/fractions/fractionsSum.js +7 -22
  13. package/lib/exercises/math/calcul/fractions/fractionsSumFillInTheBlank.d.ts.map +1 -1
  14. package/lib/exercises/math/calcul/fractions/fractionsSumFillInTheBlank.js +7 -19
  15. package/lib/exercises/math/calcul/fractions/fractionsSumsMultiplesDenominators.d.ts.map +1 -1
  16. package/lib/exercises/math/calcul/fractions/fractionsSumsMultiplesDenominators.js +7 -22
  17. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.d.ts.map +1 -1
  18. package/lib/exercises/math/calcul/fractions/fractionsSumsPrimeDenominators.js +7 -22
  19. package/lib/exercises/math/calcul/fractions/fractionsSumsSameDenominators.d.ts +4 -1
  20. package/lib/exercises/math/calcul/fractions/fractionsSumsSameDenominators.d.ts.map +1 -1
  21. package/lib/exercises/math/calcul/fractions/fractionsSumsSameDenominators.js +7 -23
  22. package/lib/exercises/math/calcul/fractions/periodicWritingToFraction.d.ts.map +1 -1
  23. package/lib/exercises/math/calcul/fractions/periodicWritingToFraction.js +3 -7
  24. package/lib/exercises/math/calcul/fractions/simplifyFraction.d.ts.map +1 -1
  25. package/lib/exercises/math/calcul/fractions/simplifyFraction.js +6 -7
  26. package/lib/exercises/math/calcul/mentalCaluls/mentalDivisions.d.ts.map +1 -1
  27. package/lib/exercises/math/calcul/mentalCaluls/mentalDivisions.js +3 -4
  28. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication101AndFriends.d.ts.map +1 -1
  29. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication101AndFriends.js +2 -4
  30. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication11AndFriends.d.ts.map +1 -1
  31. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplication11AndFriends.js +2 -4
  32. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplicationTable.d.ts.map +1 -1
  33. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplicationTable.js +2 -4
  34. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplications.d.ts.map +1 -1
  35. package/lib/exercises/math/calcul/mentalCaluls/mentalMultiplications.js +2 -4
  36. package/lib/exercises/math/calcul/operations/operationsPrioritiesWithoutRelative.d.ts.map +1 -1
  37. package/lib/exercises/math/calcul/operations/operationsPrioritiesWithoutRelative.js +3 -4
  38. package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityAdd.d.ts.map +1 -1
  39. package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityAdd.js +14 -3
  40. package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivitySubstract.d.ts.map +1 -1
  41. package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivitySubstract.js +14 -3
  42. package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityWithCoeff.d.ts.map +1 -1
  43. package/lib/exercises/math/calculLitteral/distributivity/doubleDistributivityWithCoeff.js +8 -5
  44. package/lib/exercises/math/calculLitteral/distributivity/simpleDistriXCoeff.d.ts.map +1 -1
  45. package/lib/exercises/math/calculLitteral/distributivity/simpleDistriXCoeff.js +14 -5
  46. package/lib/exercises/math/calculLitteral/equation/fractionEquation.d.ts.map +1 -1
  47. package/lib/exercises/math/calculLitteral/equation/fractionEquation.js +10 -10
  48. package/lib/exercises/math/calculLitteral/factorisation/factoByXK.d.ts +0 -8
  49. package/lib/exercises/math/calculLitteral/factorisation/factoByXK.d.ts.map +1 -1
  50. package/lib/exercises/math/calculLitteral/factorisation/factoByXK.js +223 -190
  51. package/lib/exercises/math/calculLitteral/factorisation/factorizeCanonicalFormWithSqrt.d.ts.map +1 -1
  52. package/lib/exercises/math/calculLitteral/factorisation/factorizeCanonicalFormWithSqrt.js +22 -9
  53. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts +0 -1
  54. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts.map +1 -1
  55. package/lib/exercises/math/calculLitteral/factorisation/index.js +1 -1
  56. package/lib/exercises/math/complex/argumentFromAlgebraicComplex.d.ts.map +1 -1
  57. package/lib/exercises/math/complex/argumentFromAlgebraicComplex.js +10 -4
  58. package/lib/exercises/math/functions/absolute/absoluteValueEquations.js +12 -12
  59. package/lib/exercises/math/functions/affines/adjustment/affineAdjustmentRsquared.d.ts.map +1 -1
  60. package/lib/exercises/math/functions/affines/adjustment/affineAdjustmentRsquared.js +10 -18
  61. package/lib/exercises/math/functions/affines/affineMeanValue.d.ts.map +1 -1
  62. package/lib/exercises/math/functions/affines/affineMeanValue.js +3 -5
  63. package/lib/exercises/math/functions/basics/findZeroesProductQuotient.d.ts.map +1 -1
  64. package/lib/exercises/math/functions/basics/findZeroesProductQuotient.js +0 -1
  65. package/lib/exercises/math/functions/basics/twoFunctionsEquation.d.ts.map +1 -1
  66. package/lib/exercises/math/functions/basics/twoFunctionsEquation.js +12 -7
  67. package/lib/exercises/math/functions/integral/integralExpAxPlusB.d.ts.map +1 -1
  68. package/lib/exercises/math/functions/integral/integralExpAxPlusB.js +19 -3
  69. package/lib/exercises/math/functions/logarithm/log10Simplifying.d.ts.map +1 -1
  70. package/lib/exercises/math/functions/logarithm/log10Simplifying.js +20 -6
  71. package/lib/exercises/math/functions/logarithm/logSimplifiying.d.ts.map +1 -1
  72. package/lib/exercises/math/functions/logarithm/logSimplifiying.js +14 -9
  73. package/lib/exercises/math/functions/rationalFraction/rationalFractionForbiddenValue.d.ts.map +1 -1
  74. package/lib/exercises/math/functions/rationalFraction/rationalFractionForbiddenValue.js +9 -6
  75. package/lib/exercises/math/functions/trinoms/equation/solveSecondDegreeEquationFromCano.d.ts.map +1 -1
  76. package/lib/exercises/math/functions/trinoms/equation/solveSecondDegreeEquationFromCano.js +12 -8
  77. package/lib/exercises/math/functions/trinoms/summitAndCanonical/canonicalFromDevForm.d.ts.map +1 -1
  78. package/lib/exercises/math/functions/trinoms/summitAndCanonical/canonicalFromDevForm.js +21 -4
  79. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.d.ts.map +1 -1
  80. package/lib/exercises/math/functions/trinoms/summitAndCanonical/extremumFromCanonicalForm.js +4 -7
  81. package/lib/exercises/math/functions/trinoms/trinomialMeanValue.d.ts.map +1 -1
  82. package/lib/exercises/math/functions/trinoms/trinomialMeanValue.js +3 -5
  83. package/lib/exercises/math/geometry/areas/circleArea.d.ts.map +1 -1
  84. package/lib/exercises/math/geometry/areas/circleArea.js +4 -2
  85. package/lib/exercises/math/geometry/areas/rectangleArea.d.ts.map +1 -1
  86. package/lib/exercises/math/geometry/areas/rectangleArea.js +4 -2
  87. package/lib/exercises/math/geometry/areas/rightTriangleArea.d.ts.map +1 -1
  88. package/lib/exercises/math/geometry/areas/rightTriangleArea.js +14 -11
  89. package/lib/exercises/math/geometry/areas/squareArea.d.ts.map +1 -1
  90. package/lib/exercises/math/geometry/areas/squareArea.js +4 -2
  91. package/lib/exercises/math/geometry/areas/squareSideFromArea.d.ts.map +1 -1
  92. package/lib/exercises/math/geometry/areas/squareSideFromArea.js +6 -4
  93. package/lib/exercises/math/geometry/areas/triangleArea.d.ts.map +1 -1
  94. package/lib/exercises/math/geometry/areas/triangleArea.js +3 -1
  95. package/lib/exercises/math/geometry/areas/triangleAreaV2.d.ts.map +1 -1
  96. package/lib/exercises/math/geometry/areas/triangleAreaV2.js +4 -2
  97. package/lib/exercises/math/geometry/cartesian/midpoint.d.ts.map +1 -1
  98. package/lib/exercises/math/geometry/cartesian/midpoint.js +6 -11
  99. package/lib/exercises/math/geometry/perimeters/rectangleSideFromPerimeter.d.ts.map +1 -1
  100. package/lib/exercises/math/geometry/perimeters/rectangleSideFromPerimeter.js +3 -3
  101. package/lib/exercises/math/geometry/perimeters/squareSideFromPerimeter.d.ts.map +1 -1
  102. package/lib/exercises/math/geometry/perimeters/squareSideFromPerimeter.js +3 -3
  103. package/lib/exercises/math/geometry/vectors/vectorNormCalculation.d.ts.map +1 -1
  104. package/lib/exercises/math/geometry/vectors/vectorNormCalculation.js +3 -5
  105. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.d.ts.map +1 -1
  106. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.js +3 -4
  107. package/lib/exercises/math/geometry/volumes/sphereVolume.d.ts.map +1 -1
  108. package/lib/exercises/math/geometry/volumes/sphereVolume.js +3 -4
  109. package/lib/exercises/math/geometry/volumes/volumeOfCube.d.ts.map +1 -1
  110. package/lib/exercises/math/geometry/volumes/volumeOfCube.js +3 -4
  111. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.d.ts.map +1 -1
  112. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleBase.js +3 -6
  113. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.d.ts.map +1 -1
  114. package/lib/exercises/math/geometry/volumes/volumeOfPyramidWithTriangleRectBase.js +3 -6
  115. package/lib/exercises/math/graphs/graphsChainOrPathOfLengthN.d.ts.map +1 -1
  116. package/lib/exercises/math/graphs/graphsChainOrPathOfLengthN.js +3 -1
  117. package/lib/exercises/math/graphs/graphsCheckIsConnectedGraph.d.ts.map +1 -1
  118. package/lib/exercises/math/graphs/graphsCheckIsConnectedGraph.js +19 -42
  119. package/lib/exercises/math/graphs/graphsCheckIsSameGraph.d.ts +0 -2
  120. package/lib/exercises/math/graphs/graphsCheckIsSameGraph.d.ts.map +1 -1
  121. package/lib/exercises/math/graphs/graphsCheckIsSameGraph.js +4 -14
  122. package/lib/exercises/math/graphs/graphsCheckIsVerticesAdjacent.d.ts.map +1 -1
  123. package/lib/exercises/math/graphs/graphsCheckIsVerticesAdjacent.js +3 -1
  124. package/lib/exercises/math/graphs/graphsDegreeOfVertex.d.ts.map +1 -1
  125. package/lib/exercises/math/graphs/graphsDegreeOfVertex.js +3 -1
  126. package/lib/exercises/math/graphs/graphsOrderOfGraph.d.ts.map +1 -1
  127. package/lib/exercises/math/graphs/graphsOrderOfGraph.js +3 -1
  128. package/lib/exercises/math/limits/rationalFracLimit.d.ts.map +1 -1
  129. package/lib/exercises/math/limits/rationalFracLimit.js +9 -20
  130. package/lib/exercises/math/limits/sequences/sequenceRationalFracLimit.d.ts.map +1 -1
  131. package/lib/exercises/math/limits/sequences/sequenceRationalFracLimit.js +9 -20
  132. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormula.d.ts.map +1 -1
  133. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormula.js +11 -28
  134. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstRankOne.d.ts.map +1 -1
  135. package/lib/exercises/math/sequences/geometric/geometricFindExplicitFormulaFirstRankOne.js +12 -27
  136. package/lib/exercises/math/spaceGeometry/vectors/spaceVectorNormCalculation.d.ts.map +1 -1
  137. package/lib/exercises/math/spaceGeometry/vectors/spaceVectorNormCalculation.js +3 -5
  138. package/lib/exercises/math/squareRoots/simpifySquareRoot.d.ts.map +1 -1
  139. package/lib/exercises/math/squareRoots/simpifySquareRoot.js +5 -4
  140. package/lib/exercises/math/squareRoots/squareRootEquation.d.ts.map +1 -1
  141. package/lib/exercises/math/squareRoots/squareRootEquation.js +9 -8
  142. package/lib/exercises/math/squareRoots/squareRootIdentities.d.ts.map +1 -1
  143. package/lib/exercises/math/squareRoots/squareRootIdentities.js +7 -4
  144. package/lib/exercises/math/squareRoots/squareRootsDistributivity.d.ts.map +1 -1
  145. package/lib/exercises/math/squareRoots/squareRootsDistributivity.js +7 -8
  146. package/lib/exercises/math/trigonometry/arcLength.d.ts.map +1 -1
  147. package/lib/exercises/math/trigonometry/arcLength.js +3 -8
  148. package/lib/exercises/pc/chemicalElements/findAtomEntitiesNumberFromMass.d.ts.map +1 -1
  149. package/lib/exercises/pc/chemicalElements/findAtomEntitiesNumberFromMass.js +0 -6
  150. package/lib/exercises/pc/dosage/beerLambertRandomValue.d.ts.map +1 -1
  151. package/lib/exercises/pc/dosage/beerLambertRandomValue.js +3 -4
  152. package/lib/exercises/pc/dosage/concentrationFromMassCalculation.d.ts.map +1 -1
  153. package/lib/exercises/pc/dosage/concentrationFromMassCalculation.js +3 -18
  154. package/lib/exercises/pc/energy/energyTransfer.d.ts.map +1 -1
  155. package/lib/exercises/pc/energy/energyTransfer.js +3 -8
  156. package/lib/exercises/pc/energy/thermalEnergyTransferCalculation.d.ts.map +1 -1
  157. package/lib/exercises/pc/energy/thermalEnergyTransferCalculation.js +3 -24
  158. package/lib/exercises/pc/math/proportionnalityCoeffFromLine.d.ts.map +1 -1
  159. package/lib/exercises/pc/math/proportionnalityCoeffFromLine.js +9 -6
  160. package/lib/exercises/vea/equationVEA.d.ts.map +1 -1
  161. package/lib/exercises/vea/equationVEA.js +2 -0
  162. package/lib/exercises/vea/rationalVEA.d.ts +2 -1
  163. package/lib/exercises/vea/rationalVEA.d.ts.map +1 -1
  164. package/lib/exercises/vea/rationalVEA.js +36 -2
  165. package/lib/index.d.ts +3 -8
  166. package/lib/index.d.ts.map +1 -1
  167. package/lib/math/utils/graphs/graphRenderer.d.ts +7 -9
  168. package/lib/math/utils/graphs/graphRenderer.d.ts.map +1 -1
  169. package/lib/math/utils/graphs/graphRenderer.js +25 -117
  170. package/lib/tree/nodes/algebraicNode.d.ts +2 -0
  171. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  172. package/lib/tree/nodes/algebraicNode.js +11 -0
  173. package/lib/tree/nodes/functions/log10Node.d.ts +2 -2
  174. package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
  175. package/lib/tree/nodes/functions/log10Node.js +3 -1
  176. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  177. package/lib/tree/nodes/functions/logNode.js +2 -0
  178. package/lib/tree/nodes/operators/addNode.js +1 -1
  179. package/lib/tree/nodes/operators/fractionNode.js +1 -1
  180. package/package.json +1 -7
@@ -1,190 +1,223 @@
1
- import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, } from "../../../../exercises/exercise.js";
2
- import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
- import { AffineConstructor } from "../../../../math/polynomials/affine.js";
4
- import { gcd } from "../../../../math/utils/arithmetic/gcd.js";
5
- import { randint } from "../../../../math/utils/random/randint.js";
6
- import { add } from "../../../../tree/nodes/operators/addNode.js";
7
- import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
8
- import { power } from "../../../../tree/nodes/operators/powerNode.js";
9
- import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
10
- import { random } from "../../../../utils/alea/random.js";
11
- import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
12
- import { alignTex } from "../../../../utils/latex/alignTex.js";
13
- const getHydrated = (identifiers) => {
14
- const { a, b, k1, k2 } = identifiers;
15
- const nodeMonomA = multiply(a, power("x".toTree(), k1)).simplify();
16
- const nodeMonomB = multiply(b, power("x".toTree(), k2)).simplify();
17
- const nodeSum = add(nodeMonomA, nodeMonomB);
18
- return {
19
- nodeMonomA,
20
- nodeMonomB,
21
- nodeSum,
22
- };
23
- };
24
- const getStatementNode = (identifiers) => {
25
- const { nodeSum } = getHydrated(identifiers);
26
- return nodeSum;
27
- };
28
- const getInstruction = (identifiers) => {
29
- const statement = getStatementNode(identifiers);
30
- return `Factoriser :
31
-
32
- $$
33
- ${statement.toTex()}
34
- $$`;
35
- };
36
- const getAnswerNode = (identifiers) => {
37
- const { a, b, k1, k2 } = identifiers;
38
- let pgcd = gcd(a, b);
39
- if (a < 0 && b < 0)
40
- pgcd = -pgcd;
41
- const strK1K2 = `${k1}${k2}`;
42
- switch (strK1K2) {
43
- case "11": {
44
- return multiply(a + b, "x");
45
- }
46
- case "12": {
47
- const affine = add(a / pgcd, multiply(b / pgcd, "x"));
48
- return multiply(multiply(pgcd, "x"), affine);
49
- }
50
- case "21": {
51
- const affine = add(multiply(a / pgcd, "x"), b / pgcd);
52
- return multiply(multiply(pgcd, "x"), affine);
53
- }
54
- case "22": {
55
- return multiply(a + b, power("x", 2));
56
- }
57
- default:
58
- throw new Error("Unsupported strK1K2: " + strK1K2);
59
- }
60
- };
61
- const getAnswer = (identifiers) => {
62
- return getAnswerNode(identifiers).toTex();
63
- };
64
- const getHint = (identifiers) => {
65
- const { nodeMonomA, nodeMonomB } = getHydrated(identifiers);
66
- return `Repère le facteur commun : c'est le terme qui apparaît à la fois dans $${nodeMonomA.toTex()}$ et dans $${nodeMonomB.toTex()}$.`;
67
- };
68
- const getCorrection = (identifiers) => {
69
- const { a, b, k1, k2 } = identifiers;
70
- const { nodeMonomA, nodeMonomB } = getHydrated(identifiers);
71
- const answer = getAnswer(identifiers);
72
- const statement = getStatementNode(identifiers).toTex();
73
- let pgcd = gcd(a, b);
74
- if (a < 0 && b < 0)
75
- pgcd = -pgcd;
76
- const [nodeCommon, nodeDetailed] = (() => {
77
- const strK1K2 = `${k1}${k2}`;
78
- switch (strK1K2) {
79
- case "11": {
80
- const nodeCommon = "x".toTree();
81
- const nodeDetailed = multiply(nodeCommon, add(a, b));
82
- return [nodeCommon, nodeDetailed];
83
- }
84
- case "12": {
85
- const nodeCommon = multiply(pgcd, "x");
86
- const nodeDetailed = add(multiply(nodeCommon, a / pgcd), multiply(nodeCommon, multiply(b / pgcd, "x").simplify(), {
87
- toTexOptions: { forceTimesSign: true, noPropagation: true },
88
- }));
89
- return [nodeCommon, nodeDetailed];
90
- }
91
- case "21": {
92
- const nodeCommon = multiply(pgcd, "x");
93
- const nodeDetailed = add(multiply(nodeCommon, multiply(a / pgcd, "x").simplify(), {
94
- toTexOptions: { forceTimesSign: true, noPropagation: true },
95
- }), multiply(nodeCommon, b / pgcd));
96
- return [nodeCommon, nodeDetailed];
97
- }
98
- case "22": {
99
- const nodeCommon = power("x", 2);
100
- const nodeDetailed = multiply(nodeCommon, add(a, b));
101
- return [nodeCommon, nodeDetailed];
102
- }
103
- default:
104
- throw new Error("Unsupported strK1K2: " + strK1K2);
105
- }
106
- })();
107
- const detailed = nodeDetailed.toTex();
108
- return `Le terme $${nodeCommon.toTex()}$ apparaît à la fois dans $${nodeMonomA.toTex()}$ et dans $${nodeMonomB.toTex()}$.
109
-
110
- On peut donc factoriser l'expression par $${nodeCommon.toTex()}$ :
111
-
112
- ${alignTex([
113
- ["", "", statement],
114
- ["", "=", detailed],
115
- ["", "=", answer],
116
- ])}
117
- `;
118
- };
119
- const getPropositions = (n, { answer, ...identifiers }) => {
120
- const propositions = [];
121
- addValidProp(propositions, answer);
122
- [
123
- [1, 1],
124
- [1, 2],
125
- [2, 1],
126
- [2, 2],
127
- ].forEach(([k1, k2]) => {
128
- const identifiersWrong = { ...identifiers, k1, k2 };
129
- tryToAddWrongProp(propositions, getAnswer(identifiersWrong));
130
- });
131
- propWhile(propositions, n, () => {
132
- tryToAddWrongProp(propositions, multiply("x", AffineConstructor.random().toTree()).toTex());
133
- });
134
- return shuffleProps(propositions, n);
135
- };
136
- const getKeys = () => {
137
- return ["x"];
138
- };
139
- const isAnswerValid = (ans, { answer }) => {
140
- try {
141
- const nodeAnswer = parseAlgebraic(answer);
142
- return nodeAnswer.toAllValidTexs().some((tex) => ans === tex);
143
- }
144
- catch (err) {
145
- return handleVEAError(err);
146
- }
147
- };
148
- const getFactoByXKQuestion = () => {
149
- const a = randint(-10, 10, [0], { favor: { value: 1, proba: 0.3 } });
150
- const b = randint(-10, 10, [0, -a, a], a !== 1 ? { favor: { value: 1, proba: 0.3 } } : undefined);
151
- const [k1, k2] = random([
152
- [1, 1],
153
- [1, 2],
154
- [2, 1],
155
- [2, 2],
156
- ]);
157
- const identifiers = {
158
- a,
159
- b,
160
- k1,
161
- k2,
162
- };
163
- return getQuestionFromIdentifiers(identifiers);
164
- };
165
- const getQuestionFromIdentifiers = (identifiers) => {
166
- const question = {
167
- answer: getAnswer(identifiers),
168
- instruction: getInstruction(identifiers),
169
- keys: getKeys(identifiers),
170
- answerFormat: "tex",
171
- identifiers,
172
- hint: getHint(identifiers),
173
- correction: getCorrection(identifiers),
174
- };
175
- return question;
176
- };
177
- export const factoByXK = {
178
- id: "factoByXK",
179
- connector: "=",
180
- label: "Factorisation du type $ax^k + bx^{k'}$",
181
- isSingleStep: false,
182
- generator: (nb, opts) => getDistinctQuestions(() => getFactoByXKQuestion(opts), nb),
183
- qcmTimer: 60,
184
- freeTimer: 60,
185
- getPropositions,
186
- isAnswerValid,
187
- subject: "Mathématiques",
188
- getQuestionFromIdentifiers,
189
- hasHintAndCorrection: true,
190
- };
1
+ // import {
2
+ // Exercise,
3
+ // Proposition,
4
+ // QCMGenerator,
5
+ // Question,
6
+ // QuestionGenerator,
7
+ // VEA,
8
+ // addValidProp,
9
+ // shuffleProps,
10
+ // GetAnswer,
11
+ // GetHint,
12
+ // GetCorrection,
13
+ // GetInstruction,
14
+ // GetKeys,
15
+ // tryToAddWrongProp,
16
+ // GetQuestionFromIdentifiers,
17
+ // propWhile,
18
+ // } from "../../../../exercises/exercise.js";
19
+ // import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
20
+ // import { AffineConstructor } from "../../../../math/polynomials/affine.js";
21
+ export {};
22
+ // import { gcd } from "../../../../math/utils/arithmetic/gcd.js";
23
+ // import { randint } from "../../../../math/utils/random/randint.js";
24
+ // import { add } from "../../../../tree/nodes/operators/addNode.js";
25
+ // import {
26
+ // isMultiplyNode,
27
+ // multiply,
28
+ // } from "../../../../tree/nodes/operators/multiplyNode.js";
29
+ // import { power } from "../../../../tree/nodes/operators/powerNode.js";
30
+ // import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
31
+ // import { random } from "../../../../utils/alea/random.js";
32
+ // import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
33
+ // import { alignTex } from "../../../../utils/latex/alignTex.js";
34
+ // type Identifiers = {
35
+ // a: number;
36
+ // k1: number;
37
+ // b: number;
38
+ // k2: number;
39
+ // };
40
+ // const getHydrated = (identifiers: Identifiers) => {
41
+ // const { a, b, k1, k2 } = identifiers;
42
+ // const nodeMonomA = multiply(a, power("x".toTree(), k1)).simplify();
43
+ // const nodeMonomB = multiply(b, power("x".toTree(), k2)).simplify();
44
+ // const nodeSum = add(nodeMonomA, nodeMonomB);
45
+ // return {
46
+ // nodeMonomA,
47
+ // nodeMonomB,
48
+ // nodeSum,
49
+ // };
50
+ // };
51
+ // const getStatementNode = (identifiers: Identifiers) => {
52
+ // const { nodeSum } = getHydrated(identifiers);
53
+ // return nodeSum;
54
+ // };
55
+ // const getInstruction: GetInstruction<Identifiers> = (identifiers) => {
56
+ // const statement = getStatementNode(identifiers);
57
+ // return `Factoriser :
58
+ // $$
59
+ // ${statement.toTex()}
60
+ // $$`;
61
+ // };
62
+ // const getAnswerNode = (identifiers: Identifiers) => {
63
+ // const { a, b, k1, k2 } = identifiers;
64
+ // let pgcd = gcd(a, b);
65
+ // if (a < 0 && b < 0) pgcd = -pgcd;
66
+ // const strK1K2 = `${k1}${k2}`;
67
+ // switch (strK1K2) {
68
+ // case "11": {
69
+ // return multiply(a + b, "x");
70
+ // }
71
+ // case "12": {
72
+ // const affine = add(a / pgcd, multiply(b / pgcd, "x"));
73
+ // return multiply(multiply(pgcd, "x"), affine);
74
+ // }
75
+ // case "21": {
76
+ // const affine = add(multiply(a / pgcd, "x"), b / pgcd);
77
+ // return multiply(multiply(pgcd, "x"), affine);
78
+ // }
79
+ // case "22": {
80
+ // return multiply(a + b, power("x", 2));
81
+ // }
82
+ // default:
83
+ // throw new Error("Unsupported strK1K2: " + strK1K2);
84
+ // }
85
+ // };
86
+ // const getAnswer: GetAnswer<Identifiers> = (identifiers) => {
87
+ // return getAnswerNode(identifiers).toTex();
88
+ // };
89
+ // const getHint: GetHint<Identifiers> = (identifiers) => {
90
+ // const { nodeMonomA, nodeMonomB } = getHydrated(identifiers);
91
+ // return `Repère le facteur commun : c'est le terme qui apparaît à la fois dans $${nodeMonomA.toTex()}$ et dans $${nodeMonomB.toTex()}$.`;
92
+ // };
93
+ // const getCorrection: GetCorrection<Identifiers> = (identifiers) => {
94
+ // const { a, b, k1, k2 } = identifiers;
95
+ // const { nodeMonomA, nodeMonomB } = getHydrated(identifiers);
96
+ // const answer = getAnswer(identifiers);
97
+ // const statement = getStatementNode(identifiers).toTex();
98
+ // let pgcd = gcd(a, b);
99
+ // if (a < 0 && b < 0) pgcd = -pgcd;
100
+ // const [nodeCommon, nodeDetailed] = (() => {
101
+ // const strK1K2 = `${k1}${k2}`;
102
+ // switch (strK1K2) {
103
+ // case "11": {
104
+ // const nodeCommon = "x".toTree();
105
+ // const nodeDetailed = multiply(nodeCommon, add(a, b));
106
+ // return [nodeCommon, nodeDetailed];
107
+ // }
108
+ // case "12": {
109
+ // const nodeCommon = multiply(pgcd, "x");
110
+ // const nodeDetailed = add(
111
+ // multiply(nodeCommon, a / pgcd),
112
+ // multiply(nodeCommon, multiply(b / pgcd, "x").simplify(), {
113
+ // toTexOptions: { forceTimesSign: true, noPropagation: true },
114
+ // }),
115
+ // );
116
+ // return [nodeCommon, nodeDetailed];
117
+ // }
118
+ // case "21": {
119
+ // const nodeCommon = multiply(pgcd, "x");
120
+ // const nodeDetailed = add(
121
+ // multiply(nodeCommon, multiply(a / pgcd, "x").simplify(), {
122
+ // toTexOptions: { forceTimesSign: true, noPropagation: true },
123
+ // }),
124
+ // multiply(nodeCommon, b / pgcd),
125
+ // );
126
+ // return [nodeCommon, nodeDetailed];
127
+ // }
128
+ // case "22": {
129
+ // const nodeCommon = power("x", 2);
130
+ // const nodeDetailed = multiply(nodeCommon, add(a, b));
131
+ // return [nodeCommon, nodeDetailed];
132
+ // }
133
+ // default:
134
+ // throw new Error("Unsupported strK1K2: " + strK1K2);
135
+ // }
136
+ // })();
137
+ // const detailed = nodeDetailed.toTex();
138
+ // return `Le terme $${nodeCommon.toTex()}$ apparaît à la fois dans $${nodeMonomA.toTex()}$ et dans $${nodeMonomB.toTex()}$.
139
+ // On peut donc factoriser l'expression par $${nodeCommon.toTex()}$ :
140
+ // ${alignTex([
141
+ // ["", "", statement],
142
+ // ["", "=", detailed],
143
+ // ["", "=", answer],
144
+ // ])}
145
+ // `;
146
+ // };
147
+ // const getPropositions: QCMGenerator<Identifiers> = (
148
+ // n,
149
+ // { answer, ...identifiers },
150
+ // ) => {
151
+ // const propositions: Proposition[] = [];
152
+ // addValidProp(propositions, answer);
153
+ // [
154
+ // [1, 1],
155
+ // [1, 2],
156
+ // [2, 1],
157
+ // [2, 2],
158
+ // ].forEach(([k1, k2]) => {
159
+ // const identifiersWrong = { ...identifiers, k1, k2 };
160
+ // tryToAddWrongProp(propositions, getAnswer(identifiersWrong));
161
+ // });
162
+ // propWhile(propositions, n, () => {
163
+ // tryToAddWrongProp(
164
+ // propositions,
165
+ // multiply("x", AffineConstructor.random().toTree()).toTex(),
166
+ // );
167
+ // });
168
+ // return shuffleProps(propositions, n);
169
+ // };
170
+ // const getKeys: GetKeys<Identifiers> = () => {
171
+ // return ["x"];
172
+ // };
173
+ // const getFactoByXKQuestion: QuestionGenerator<Identifiers> = () => {
174
+ // const a = randint(-10, 10, [0], { favor: { value: 1, proba: 0.3 } });
175
+ // const b = randint(
176
+ // -10,
177
+ // 10,
178
+ // [0, -a, a],
179
+ // a !== 1 ? { favor: { value: 1, proba: 0.3 } } : undefined,
180
+ // );
181
+ // const [k1, k2] = random([
182
+ // [1, 1],
183
+ // [1, 2],
184
+ // [2, 1],
185
+ // [2, 2],
186
+ // ]);
187
+ // const identifiers: Identifiers = {
188
+ // a,
189
+ // b,
190
+ // k1,
191
+ // k2,
192
+ // };
193
+ // return getQuestionFromIdentifiers(identifiers);
194
+ // };
195
+ // const getQuestionFromIdentifiers: GetQuestionFromIdentifiers<Identifiers> = (
196
+ // identifiers,
197
+ // ) => {
198
+ // const question: Question<Identifiers> = {
199
+ // answer: getAnswer(identifiers),
200
+ // instruction: getInstruction(identifiers),
201
+ // keys: getKeys(identifiers),
202
+ // answerFormat: "tex",
203
+ // identifiers,
204
+ // hint: getHint(identifiers),
205
+ // correction: getCorrection(identifiers),
206
+ // };
207
+ // return question;
208
+ // };
209
+ // export const factoByXK: Exercise<Identifiers> = {
210
+ // id: "factoByXK",
211
+ // connector: "=",
212
+ // label: "Factorisation du type $ax^k + bx^{k'}$",
213
+ // isSingleStep: false,
214
+ // generator: (nb, opts) =>
215
+ // getDistinctQuestions(() => getFactoByXKQuestion(opts), nb),
216
+ // qcmTimer: 60,
217
+ // freeTimer: 60,
218
+ // getPropositions,
219
+ // isAnswerValid,
220
+ // subject: "Mathématiques",
221
+ // getQuestionFromIdentifiers,
222
+ // hasHintAndCorrection: true,
223
+ // };
@@ -1 +1 @@
1
- {"version":3,"file":"factorizeCanonicalFormWithSqrt.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/factorisation/factorizeCanonicalFormWithSqrt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAoIF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,WAAW,CAehE,CAAC"}
1
+ {"version":3,"file":"factorizeCanonicalFormWithSqrt.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/factorisation/factorizeCanonicalFormWithSqrt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAiJF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,WAAW,CAehE,CAAC"}
@@ -3,10 +3,12 @@ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQue
3
3
  import { SquareRoot, SquareRootConstructor, } from "../../../../math/numbers/reals/real.js";
4
4
  import { Affine } from "../../../../math/polynomials/affine.js";
5
5
  import { randint } from "../../../../math/utils/random/randint.js";
6
+ import { isFactorizedNode } from "../../../../tree/nodes/algebraicNode.js";
6
7
  import { AddNode } from "../../../../tree/nodes/operators/addNode.js";
7
8
  import { MultiplyNode } from "../../../../tree/nodes/operators/multiplyNode.js";
8
9
  import { SquareNode } from "../../../../tree/nodes/operators/powerNode.js";
9
10
  import { SubstractNode } from "../../../../tree/nodes/operators/substractNode.js";
11
+ import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
10
12
  import { alignTex } from "../../../../utils/latex/alignTex.js";
11
13
  //(x-a)^2-b^2 avec b irrational
12
14
  const getStatementNode = (identifiers) => {
@@ -25,15 +27,16 @@ $$
25
27
  ${getStartStatement(identifiers)}
26
28
  $$`;
27
29
  };
28
- const getAnswer = (identifiers) => {
30
+ const getAnswerNode = (identifiers) => {
29
31
  const { a, bOperand } = identifiers;
30
32
  const affine = new Affine(1, a);
31
33
  const b = new SquareRoot(bOperand);
32
- const answer = new MultiplyNode(new SubstractNode(affine.toTree(), b.toTree()), new AddNode(affine.toTree(), b.toTree()))
33
- .simplify({ forbidFactorize: true })
34
- .toTex();
34
+ const answer = new MultiplyNode(new SubstractNode(affine.toTree(), b.toTree()), new AddNode(affine.toTree(), b.toTree()));
35
35
  return answer;
36
36
  };
37
+ const getAnswer = (identifiers) => {
38
+ return getAnswerNode(identifiers).simplify({ forbidFactorize: true }).toTex();
39
+ };
37
40
  const getHint = () => {
38
41
  return `Utilise l'identité remarquable
39
42
 
@@ -95,11 +98,21 @@ const getPropositions = (n, { answer, a, bOperand }) => {
95
98
  });
96
99
  return shuffleProps(propositions, n);
97
100
  };
98
- const isAnswerValid = (ans, { a, bOperand }) => {
99
- const affine = new Affine(1, a);
100
- const b = new SquareRoot(bOperand);
101
- const answerTree = new MultiplyNode(new SubstractNode(affine.toTree(), b.toTree()), new AddNode(affine.toTree(), b.toTree())).simplify({ forbidFactorize: true });
102
- return answerTree.toAllValidTexs().includes(ans);
101
+ const isAnswerValid = (ans, { answer: _answer, ...identifiers }) => {
102
+ const parsed = parseAlgebraic(ans);
103
+ return (isFactorizedNode(parsed) &&
104
+ parsed
105
+ .simplify({
106
+ towardsDistribute: true,
107
+ forbidFactorize: true,
108
+ })
109
+ .toTex() ===
110
+ getAnswerNode(identifiers)
111
+ .simplify({
112
+ towardsDistribute: true,
113
+ forbidFactorize: true,
114
+ })
115
+ .toTex());
103
116
  };
104
117
  export const factorizeCanonicalFormWithSqrt = {
105
118
  id: "factorizeCanonicalFormWithSqrt",
@@ -8,5 +8,4 @@ export * from "./factoType2.js";
8
8
  export * from "./factoByX.js";
9
9
  export * from "./factoType3.js";
10
10
  export * from "./factoType4.js";
11
- export * from "./factoByXK.js";
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/factorisation/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/factorisation/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -9,4 +9,4 @@ export * from "./factoByX.js";
9
9
  // export * from "./factorizeAX2PlusBX.js"; //! existe déjà
10
10
  export * from "./factoType3.js";
11
11
  export * from "./factoType4.js";
12
- export * from "./factoByXK.js";
12
+ // export * from "./factoByXK.js"; //!existe déjà
@@ -1 +1 @@
1
- {"version":3,"file":"argumentFromAlgebraicComplex.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/complex/argumentFromAlgebraicComplex.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAS7C,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,eAAe,CAAC;CACxB,CAAC;AAoJF,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,WAAW,CAc9D,CAAC"}
1
+ {"version":3,"file":"argumentFromAlgebraicComplex.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/complex/argumentFromAlgebraicComplex.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAW7C,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,eAAe,CAAC;CACxB,CAAC;AAuJF,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,WAAW,CAc9D,CAAC"}
@@ -12,7 +12,9 @@ import { add } from "../../../tree/nodes/operators/addNode.js";
12
12
  import { frac } from "../../../tree/nodes/operators/fractionNode.js";
13
13
  import { MultiplyNode } from "../../../tree/nodes/operators/multiplyNode.js";
14
14
  import { square } from "../../../tree/nodes/operators/powerNode.js";
15
+ import { parseAlgebraic } from "../../../tree/parsers/latexParser.js";
15
16
  import { random } from "../../../utils/alea/random.js";
17
+ import { handleVEAError } from "../../../utils/errors/handleVEAError.js";
16
18
  import { alignTex } from "../../../utils/latex/alignTex.js";
17
19
  const getInstruction = (identifiers) => {
18
20
  const zTex = identifiers.zTex;
@@ -141,10 +143,14 @@ const getPropositions = (n, { answer }) => {
141
143
  });
142
144
  return shuffleProps(propositions, n);
143
145
  };
144
- const isAnswerValid = (ans, { arg }) => {
145
- const point = mainTrigoValues.find((point) => point.angle.evaluate({}) === arg);
146
- const texs = point.angle.toAllValidTexs();
147
- return texs.includes(ans);
146
+ const isAnswerValid = (ans, { answer }) => {
147
+ try {
148
+ const parsed = parseAlgebraic(ans);
149
+ return (parsed.simplify().toTex() === parseAlgebraic(answer).simplify().toTex());
150
+ }
151
+ catch (err) {
152
+ return handleVEAError(err);
153
+ }
148
154
  };
149
155
  export const argumentFromAlgebraicComplex = {
150
156
  id: "argumentFromAlgebraicComplex",
@@ -2,11 +2,10 @@ import { shuffleProps, tryToAddWrongProp, addValidProp, propWhile, } from "../..
2
2
  import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
3
  import { Polynomial } from "../../../../math/polynomials/polynomial.js";
4
4
  import { randint } from "../../../../math/utils/random/randint.js";
5
- import { EquationSolutionNode } from "../../../../tree/nodes/equations/equationSolutionNode.js";
6
- import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
7
- import { DiscreteSetNode } from "../../../../tree/nodes/sets/discreteSetNode.js";
5
+ import { discreteSetParser } from "../../../../tree/parsers/discreteSetParser.js";
8
6
  import { coinFlip } from "../../../../utils/alea/coinFlip.js";
9
7
  import { probaFlip } from "../../../../utils/alea/probaFlip.js";
8
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
10
9
  const getInstruction = (identifiers) => {
11
10
  const { a, b } = identifiers;
12
11
  const poly = new Polynomial([-b, 1]);
@@ -59,15 +58,16 @@ const getPropositions = (n, { answer, a, b }) => {
59
58
  });
60
59
  return shuffleProps(propositions, n);
61
60
  };
62
- const isAnswerValid = (ans, { a, b }) => {
63
- const sols = a === 0
64
- ? [new NumberNode(b)]
65
- : a < 0
66
- ? []
67
- : [new NumberNode(b - a), new NumberNode(b + a)];
68
- const answer = new EquationSolutionNode(new DiscreteSetNode(sols));
69
- const texs = answer.toAllValidTexs();
70
- return texs.includes(ans);
61
+ const isAnswerValid = (ans, { answer }) => {
62
+ try {
63
+ const parsed = discreteSetParser(ans);
64
+ if (!parsed)
65
+ return false;
66
+ return ("S=" + parsed.simplify({ decimalToFractions: true }).toTex() === answer);
67
+ }
68
+ catch (err) {
69
+ return handleVEAError(err);
70
+ }
71
71
  };
72
72
  export const absoluteValueEquations = {
73
73
  id: "absoluteValueEquation",
@@ -1 +1 @@
1
- {"version":3,"file":"affineAdjustmentRsquared.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/affines/adjustment/affineAdjustmentRsquared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAqIF,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,WAAW,CAclE,CAAC"}
1
+ {"version":3,"file":"affineAdjustmentRsquared.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/functions/affines/adjustment/affineAdjustmentRsquared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AA2GF,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,WAAW,CAclE,CAAC"}