math-exercises 2.2.37 → 2.2.39

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 (69) hide show
  1. package/lib/exercises/math/conversion/aeraConversion.d.ts.map +1 -1
  2. package/lib/exercises/math/conversion/aeraConversion.js +1 -2
  3. package/lib/exercises/math/derivation/derivative/thirdDegreeDerivative.d.ts.map +1 -1
  4. package/lib/exercises/math/derivation/derivative/thirdDegreeDerivative.js +1 -1
  5. package/lib/exercises/math/functions/basics/imageAntecedentFromSentence.d.ts +9 -0
  6. package/lib/exercises/math/functions/basics/imageAntecedentFromSentence.d.ts.map +1 -0
  7. package/lib/exercises/math/functions/basics/imageAntecedentFromSentence.js +76 -0
  8. package/lib/exercises/math/functions/basics/index.d.ts +1 -0
  9. package/lib/exercises/math/functions/basics/index.d.ts.map +1 -1
  10. package/lib/exercises/math/functions/basics/index.js +1 -0
  11. package/lib/exercises/math/geometry/areas/circleRadiusFromArea.d.ts +7 -0
  12. package/lib/exercises/math/geometry/areas/circleRadiusFromArea.d.ts.map +1 -0
  13. package/lib/exercises/math/geometry/areas/circleRadiusFromArea.js +108 -0
  14. package/lib/exercises/math/geometry/areas/index.d.ts +3 -0
  15. package/lib/exercises/math/geometry/areas/index.d.ts.map +1 -1
  16. package/lib/exercises/math/geometry/areas/index.js +3 -0
  17. package/lib/exercises/math/geometry/areas/rectangleSideFromArea.d.ts +8 -0
  18. package/lib/exercises/math/geometry/areas/rectangleSideFromArea.d.ts.map +1 -0
  19. package/lib/exercises/math/geometry/areas/rectangleSideFromArea.js +95 -0
  20. package/lib/exercises/math/geometry/areas/squareSideFromArea.d.ts +8 -0
  21. package/lib/exercises/math/geometry/areas/squareSideFromArea.d.ts.map +1 -0
  22. package/lib/exercises/math/geometry/areas/squareSideFromArea.js +77 -0
  23. package/lib/exercises/math/geometry/cartesian/readAbscissOnSemiLine.js +1 -1
  24. package/lib/exercises/math/geometry/perimeters/circleRadiusFromPerimeter.d.ts +7 -0
  25. package/lib/exercises/math/geometry/perimeters/circleRadiusFromPerimeter.d.ts.map +1 -0
  26. package/lib/exercises/math/geometry/perimeters/circleRadiusFromPerimeter.js +102 -0
  27. package/lib/exercises/math/geometry/perimeters/index.d.ts +3 -0
  28. package/lib/exercises/math/geometry/perimeters/index.d.ts.map +1 -1
  29. package/lib/exercises/math/geometry/perimeters/index.js +3 -0
  30. package/lib/exercises/math/geometry/perimeters/rectangleSideFromPerimeter.d.ts +8 -0
  31. package/lib/exercises/math/geometry/perimeters/rectangleSideFromPerimeter.d.ts.map +1 -0
  32. package/lib/exercises/math/geometry/perimeters/rectangleSideFromPerimeter.js +114 -0
  33. package/lib/exercises/math/geometry/perimeters/squareSideFromPerimeter.d.ts +7 -0
  34. package/lib/exercises/math/geometry/perimeters/squareSideFromPerimeter.d.ts.map +1 -0
  35. package/lib/exercises/math/geometry/perimeters/squareSideFromPerimeter.js +74 -0
  36. package/lib/exercises/math/trigonometry/arcValue.js +1 -1
  37. package/lib/exercises/math/trigonometry/equationCosOnRandomInterval.d.ts.map +1 -1
  38. package/lib/exercises/math/trigonometry/equationCosOnRandomInterval.js +14 -5
  39. package/lib/exercises/math/trigonometry/equationSinOnRandomInterval.js +1 -1
  40. package/lib/exercises/math/trigonometry/index.d.ts +1 -0
  41. package/lib/exercises/math/trigonometry/index.d.ts.map +1 -1
  42. package/lib/exercises/math/trigonometry/index.js +1 -1
  43. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.js +1 -1
  44. package/lib/exercises/pc/calibrationCurveOfSolution.js +4 -4
  45. package/lib/exercises/pc/chemicalEquations.d.ts.map +1 -1
  46. package/lib/exercises/pc/chemicalEquations.js +1 -0
  47. package/lib/exercises/pc/chemicalReactions/titrationEquivalenceRelation.js +22 -22
  48. package/lib/exercises/pc/forces/calculateNormalOrFrictionForce.js +2 -2
  49. package/lib/exercises/pc/forces/forceWork.js +1 -1
  50. package/lib/exercises/pc/forces/gravitationalForcePlanets.d.ts.map +1 -1
  51. package/lib/exercises/pc/forces/gravitationalForcePlanets.js +2 -0
  52. package/lib/exercises/pc/mole/moleculeCountFromMol.js +1 -1
  53. package/lib/exercises/pc/potentialEnergy.d.ts.map +1 -1
  54. package/lib/exercises/pc/potentialEnergy.js +2 -1
  55. package/lib/exercises/pc/snellDescartes.js +4 -4
  56. package/lib/exercises/pc/sound/frequencyComparison.d.ts.map +1 -1
  57. package/lib/exercises/pc/sound/frequencyComparison.js +1 -0
  58. package/lib/exercises/pc/waves/lightDistanceConversion.d.ts.map +1 -1
  59. package/lib/exercises/pc/waves/lightDistanceConversion.js +13 -4
  60. package/lib/index.d.ts +22 -0
  61. package/lib/index.d.ts.map +1 -1
  62. package/lib/math/numbers/reals/real.d.ts +2 -0
  63. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  64. package/lib/math/numbers/reals/real.js +7 -0
  65. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  66. package/lib/tree/nodes/operators/fractionNode.js +2 -1
  67. package/lib/types/keyIds.d.ts +1 -1
  68. package/lib/types/keyIds.d.ts.map +1 -1
  69. package/package.json +2 -1
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rectangleSideFromPerimeter = void 0;
4
+ const exercise_1 = require("../../../../exercises/exercise");
5
+ const getDistinctQuestions_1 = require("../../../../exercises/utils/getDistinctQuestions");
6
+ const randfloat_1 = require("../../../../math/utils/random/randfloat");
7
+ const round_1 = require("../../../../math/utils/round");
8
+ const fractionNode_1 = require("../../../../tree/nodes/operators/fractionNode");
9
+ const alignTex_1 = require("../../../../utils/latex/alignTex");
10
+ const getPropositions = (n, { answer, perimeter, width }) => {
11
+ const propositions = [];
12
+ (0, exercise_1.addValidProp)(propositions, answer);
13
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, round_1.round)(perimeter / 4, 2).frenchify());
14
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, round_1.round)(perimeter - width, 2).frenchify());
15
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, round_1.round)(perimeter - 2 * width, 2).frenchify());
16
+ while (propositions.length < n) {
17
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, randfloat_1.randfloat)(1, 100, 2).frenchify());
18
+ }
19
+ return (0, exercise_1.shuffleProps)(propositions, n);
20
+ };
21
+ const getAnswer = (identifiers) => {
22
+ return (0, round_1.round)((identifiers.perimeter - 2 * identifiers.width) / 2, 2).frenchify();
23
+ };
24
+ const getInstruction = (identifiers) => {
25
+ return `Calculer la longueur d'un rectangle de périmètre $${identifiers.perimeter.frenchify()}$ et de largeur $${identifiers.width.frenchify()}$.`;
26
+ };
27
+ const getHint = (identifiers) => {
28
+ return `Le périmètre d'un rectangle est égal à :
29
+
30
+ $$
31
+ P = 2\\times l + 2\\times L
32
+ $$
33
+
34
+ où $l$ et la largeur et $L$ et la longueur.`;
35
+ };
36
+ const getCorrection = (identifiers) => {
37
+ const lengthDouble = (0, round_1.round)(identifiers.perimeter - 2 * identifiers.width, 3);
38
+ return `Le périmètre d'un rectangle est égal à :
39
+
40
+ $$
41
+ P = 2\\times l + 2\\times L
42
+ $$
43
+
44
+ Ici, on a donc :
45
+
46
+ $$
47
+ ${identifiers.perimeter.frenchify()} = 2\\times ${identifiers.width.frenchify()} + 2\\times L
48
+ $$
49
+
50
+ Pour retrouver la longueur, on isole $L$ dans cette équation. On obtient :
51
+
52
+ ${(0, alignTex_1.alignTex)([
53
+ [
54
+ "2\\times L",
55
+ "=",
56
+ `${identifiers.perimeter.frenchify()}- 2\\times ${identifiers.width.frenchify()}`,
57
+ ],
58
+ ["", "=", `${lengthDouble.frenchify()}`],
59
+ ])}
60
+
61
+ Ainsi, la longueur du rectangle vaut :
62
+
63
+ ${(0, alignTex_1.alignTex)([
64
+ [
65
+ "L",
66
+ "=",
67
+ `${new fractionNode_1.FractionNode(lengthDouble.toTree(), (2).toTree()).toTex()}`,
68
+ ],
69
+ ["", "=", getAnswer(identifiers)],
70
+ ])}
71
+ `;
72
+ };
73
+ const getKeys = (identifiers) => {
74
+ return [];
75
+ };
76
+ const isAnswerValid = (ans, { answer, perimeter, width }) => {
77
+ const node = new fractionNode_1.FractionNode((perimeter - 2 * width).toTree(), (2).toTree());
78
+ return node.toAllValidTexs({ allowFractionToDecimal: true }).includes(ans);
79
+ };
80
+ const getRectangleSideFromPerimeterQuestion = () => {
81
+ const width = (0, randfloat_1.randfloat)(1, 50, 1);
82
+ const perimeter = (0, randfloat_1.randfloat)(2 * width + 2, 2 * width + 50, 1);
83
+ const length = (0, round_1.round)((perimeter - 2 * width) / 2, 2);
84
+ const identifiers = {
85
+ perimeter,
86
+ width: Math.min(width, length),
87
+ };
88
+ const question = {
89
+ answer: getAnswer(identifiers),
90
+ instruction: getInstruction(identifiers),
91
+ keys: getKeys(identifiers),
92
+ answerFormat: "tex",
93
+ identifiers,
94
+ hint: getHint(identifiers),
95
+ correction: getCorrection(identifiers),
96
+ };
97
+ return question;
98
+ };
99
+ exports.rectangleSideFromPerimeter = {
100
+ id: "rectangleSideFromPerimeter",
101
+ connector: "=",
102
+ label: "Calculer la longueur d'un rectangle en connaissant son périmètre et sa largeur",
103
+ isSingleStep: true,
104
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getRectangleSideFromPerimeterQuestion, nb),
105
+ qcmTimer: 60,
106
+ freeTimer: 60,
107
+ getPropositions,
108
+ isAnswerValid,
109
+ subject: "Mathématiques",
110
+ getHint,
111
+ getCorrection,
112
+ getAnswer,
113
+ hasHintAndCorrection: true,
114
+ };
@@ -0,0 +1,7 @@
1
+ import { Exercise } from "../../../../exercises/exercise";
2
+ type Identifiers = {
3
+ perimeter: number;
4
+ };
5
+ export declare const squareSideFromPerimeter: Exercise<Identifiers>;
6
+ export {};
7
+ //# sourceMappingURL=squareSideFromPerimeter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"squareSideFromPerimeter.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/perimeters/squareSideFromPerimeter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,0BAA0B,CAAC;AAQlC,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAmEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAgBzD,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.squareSideFromPerimeter = void 0;
4
+ const exercise_1 = require("../../../../exercises/exercise");
5
+ const getDistinctQuestions_1 = require("../../../../exercises/utils/getDistinctQuestions");
6
+ const real_1 = require("../../../../math/numbers/reals/real");
7
+ const randfloat_1 = require("../../../../math/utils/random/randfloat");
8
+ const round_1 = require("../../../../math/utils/round");
9
+ const fractionNode_1 = require("../../../../tree/nodes/operators/fractionNode");
10
+ const getPropositions = (n, { answer, perimeter }) => {
11
+ const propositions = [];
12
+ (0, exercise_1.addValidProp)(propositions, answer);
13
+ (0, exercise_1.tryToAddWrongProp)(propositions, (4 * perimeter).frenchify());
14
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, round_1.round)(perimeter / 2, 3).frenchify());
15
+ const sqrt = new real_1.SquareRoot(perimeter).basicSimplify().toTree().toTex();
16
+ (0, exercise_1.tryToAddWrongProp)(propositions, sqrt);
17
+ while (propositions.length < n) {
18
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, randfloat_1.randfloat)(1, 100, 2).frenchify());
19
+ }
20
+ return (0, exercise_1.shuffleProps)(propositions, n);
21
+ };
22
+ const getAnswer = (identifiers) => {
23
+ return (0, round_1.round)(identifiers.perimeter / 4, 3).frenchify();
24
+ };
25
+ const getInstruction = (identifiers) => {
26
+ return `Calculer le côté d'un carré de périmètre $${identifiers.perimeter.frenchify()}$.`;
27
+ };
28
+ const getHint = (identifiers) => {
29
+ return `Le périmètre d'un carré est égal à $4$ fois la longueur du côté.`;
30
+ };
31
+ const getCorrection = (identifiers) => {
32
+ return `Le périmètre d'un carré est égal à $4$ fois la longueur du côté. Pour retrouver le côté à partir du périmètre, il faut donc diviser le périmètre par $4$. Le côté du carré est donc égal à :
33
+
34
+ $$
35
+ ${new fractionNode_1.FractionNode(identifiers.perimeter.toTree(), (4).toTree()).toTex()}=${getAnswer(identifiers)}
36
+ $$
37
+ `;
38
+ };
39
+ const getKeys = (identifiers) => {
40
+ return [];
41
+ };
42
+ const isAnswerValid = (ans, { answer, perimeter }) => {
43
+ const node = new fractionNode_1.FractionNode(perimeter.toTree(), (4).toTree());
44
+ return node.toAllValidTexs({ allowFractionToDecimal: true }).includes(ans);
45
+ };
46
+ const getSquareSideFromPerimeterQuestion = () => {
47
+ const identifiers = { perimeter: (0, randfloat_1.randfloat)(1, 100, 1) };
48
+ const question = {
49
+ answer: getAnswer(identifiers),
50
+ instruction: getInstruction(identifiers),
51
+ keys: getKeys(identifiers),
52
+ answerFormat: "tex",
53
+ identifiers,
54
+ hint: getHint(identifiers),
55
+ correction: getCorrection(identifiers),
56
+ };
57
+ return question;
58
+ };
59
+ exports.squareSideFromPerimeter = {
60
+ id: "squareSideFromPerimeter",
61
+ connector: "=",
62
+ label: "Calculer le côté d'un carré en connaissant son périmètre",
63
+ isSingleStep: true,
64
+ generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getSquareSideFromPerimeterQuestion, nb),
65
+ qcmTimer: 60,
66
+ freeTimer: 60,
67
+ getPropositions,
68
+ isAnswerValid,
69
+ subject: "Mathématiques",
70
+ getHint,
71
+ getCorrection,
72
+ getAnswer,
73
+ hasHintAndCorrection: true,
74
+ };
@@ -69,7 +69,7 @@ ${(0, alignTex_1.alignTex)([
69
69
  ],
70
70
  ])}
71
71
 
72
- En arrondissant à l'unité, on a donc $\\theta \\approx ${answer}°$.`,
72
+ En arrondissant à l'unité, on a donc $\\theta \\approx ${answer}^{\\circ}$.`,
73
73
  identifiers: { trigFunction: selectedFunction, trigValue, angleInDegrees },
74
74
  };
75
75
  return question;
@@ -1 +1 @@
1
- {"version":3,"file":"equationCosOnRandomInterval.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/trigonometry/equationCosOnRandomInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,0BAA0B,CAAC;AAqBlC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAyGF,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,WAAW,CAgB7D,CAAC"}
1
+ {"version":3,"file":"equationCosOnRandomInterval.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/trigonometry/equationCosOnRandomInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,0BAA0B,CAAC;AAqBlC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AA6HF,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,WAAW,CAgB7D,CAAC"}
@@ -14,11 +14,19 @@ const closure_1 = require("../../../tree/nodes/sets/closure");
14
14
  const discreteSetNode_1 = require("../../../tree/nodes/sets/discreteSetNode");
15
15
  const intervalNode_1 = require("../../../tree/nodes/sets/intervalNode");
16
16
  const random_1 = require("../../../utils/alea/random");
17
- const getPropositions = (n, { answer }) => {
17
+ const getPropositions = (n, { answer, degree, leftBoundPiMultiple }) => {
18
18
  const propositions = [];
19
19
  (0, exercise_1.addValidProp)(propositions, answer);
20
+ //distracteur avec une solution manquante
21
+ if (degree !== 0 && degree !== 180) {
22
+ const answerNode = getAnswerNode({ degree, leftBoundPiMultiple });
23
+ const newSet = answerNode.solutionsSet.toDeleteRandomElement();
24
+ (0, exercise_1.tryToAddWrongProp)(propositions, new equationSolutionNode_1.EquationSolutionNode(newSet).toTex());
25
+ }
20
26
  while (propositions.length < n) {
21
- throw Error("QCM not implemented");
27
+ const value = (0, random_1.random)(remarkableValues_1.mainPositiveTrigovalues);
28
+ const randDegree = value.degree;
29
+ (0, exercise_1.tryToAddWrongProp)(propositions, getAnswer({ degree: randDegree, leftBoundPiMultiple }));
22
30
  }
23
31
  return (0, exercise_1.shuffleProps)(propositions, n);
24
32
  };
@@ -66,10 +74,11 @@ const getCorrection = (identifiers) => {
66
74
  return "";
67
75
  };
68
76
  const getKeys = (identifiers) => {
69
- return ["pi"];
77
+ return ["x", "S", "equal", "lbrace", "semicolon", "rbrace", "pi"];
70
78
  };
71
- const isAnswerValid = (ans, { answer }) => {
72
- throw Error("VEA not implemented");
79
+ const isAnswerValid = (ans, { answer, degree, leftBoundPiMultiple }) => {
80
+ const answerNode = getAnswerNode({ degree, leftBoundPiMultiple });
81
+ return answerNode.toAllValidTexs().includes(ans);
73
82
  };
74
83
  const getEquationCosOnRandomIntervalQuestion = () => {
75
84
  const value = (0, random_1.random)(remarkableValues_1.mainPositiveTrigovalues);
@@ -90,7 +90,7 @@ const getEquationSinOnRandomIntervalQuestion = () => {
90
90
  exports.equationSinOnRandomInterval = {
91
91
  id: "equationSinOnRandomInterval",
92
92
  connector: "\\iff",
93
- label: "Résoudre une équation du type $\\Sin\\left(x\\right)=k$ sur un intervalle donné",
93
+ label: "Résoudre une équation du type $\\sin\\left(x\\right)=k$ sur un intervalle donné",
94
94
  isSingleStep: true,
95
95
  generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getEquationSinOnRandomIntervalQuestion, nb),
96
96
  qcmTimer: 60,
@@ -12,4 +12,5 @@ export * from "./basicTrigoSystemEquation";
12
12
  export * from "./mainAngleMeasure";
13
13
  export * from "./degreeToRadians";
14
14
  export * from "./arcLength";
15
+ export * from "./equationCosOnRandomInterval";
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/trigonometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/trigonometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC"}
@@ -28,4 +28,4 @@ __exportStar(require("./basicTrigoSystemEquation"), exports);
28
28
  __exportStar(require("./mainAngleMeasure"), exports);
29
29
  __exportStar(require("./degreeToRadians"), exports);
30
30
  __exportStar(require("./arcLength"), exports);
31
- // export * from "./equationCosOnRandomInterval";
31
+ __exportStar(require("./equationCosOnRandomInterval"), exports);
@@ -56,7 +56,7 @@ const getPropositions = (n, { answer }) => {
56
56
  const propositions = [];
57
57
  (0, exercise_1.addValidProp)(propositions, answer);
58
58
  while (propositions.length < n) {
59
- (0, exercise_1.tryToAddWrongProp)(propositions, (0, randint_1.randint)(20, 80) + "°");
59
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, randint_1.randint)(20, 80) + "^{\\circ}");
60
60
  }
61
61
  return (0, shuffle_1.shuffle)(propositions);
62
62
  };
@@ -58,7 +58,7 @@ const generateExercise = () => {
58
58
  const epsilon = (0, randint_1.randint)(1, 3);
59
59
  const l = (0, randint_1.randint)(1, 3);
60
60
  const instruction = `Dans un laboratoire, vous avez effectué l'étalonnage d'une solution ${(0, requiresApostropheBefore_1.requiresApostropheBefore)(molecule.name) ? "d'" : "de "}${molecule.name}. \n
61
- Vous disposez du coefficient d'extinction molaire $ε$ de $${epsilon}$ $\\text{L}\\cdot\\text{mol}^{-1}\\cdot\\text{cm}^{-1}$ et de la longueur de la cuve $l$ de $${l}$ $\\text{cm}$. \n
61
+ Vous disposez du coefficient d'extinction molaire $\\varepsilon$ de $${epsilon}$ $\\text{L}\\cdot\\text{mol}^{-1}\\cdot\\text{cm}^{-1}$ et de la longueur de la cuve $l$ de $${l}$ $\\text{cm}$. \n
62
62
  Tracer la courbe d'étalonnage de cette solution.`;
63
63
  return {
64
64
  instruction,
@@ -70,13 +70,13 @@ const generateExercise = () => {
70
70
  };
71
71
  const getCorrection = () => {
72
72
  return `1 - Choisir deux coordonnées $x_1$ et $x_2$. \n \\
73
- 2 - Calculer $A_1 = x_1\\cdot l \\cdotε$ et $A_2 = x_2\\cdot l \\cdotε$. \n \\
73
+ 2 - Calculer $A_1 = x_1\\cdot l \\cdot \\varepsilon$ et $A_2 = x_2\\cdot l \\cdot \\varepsilon$. \n \\
74
74
  3 - Tracer la droite qui passe par les deux points $(x_1,A_1)$ et $(x_2,A_2)$.`;
75
75
  };
76
76
  const getHint = () => {
77
- return `Utiliser la formule $A=C\\cdot \\ell\\cdot ε$, où :\n
77
+ return `Utiliser la formule $A=C\\cdot \\ell\\cdot \\varepsilon$, où :\n
78
78
  - $A$ est l'absorbance (une grandeur sans unité)\n
79
- - $ε$ est le coefficient d'extinction molaire (ou coefficient d'absorption molaire) en $\\text{L}\\cdot\\text{mol}^{-1}\\cdot\\text{cm}^{-1}$\n
79
+ - $\\varepsilon$ est le coefficient d'extinction molaire (ou coefficient d'absorption molaire) en $\\text{L}\\cdot\\text{mol}^{-1}\\cdot\\text{cm}^{-1}$\n
80
80
  - $C$ est la concentration de la solution en $\\text{mol}\\cdot\\text{L}^{-1}$\n
81
81
  - $\\ell$ est la longueur du chemin optique en centimètres $(\\text{cm})$`;
82
82
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chemicalEquations.d.ts","sourceRoot":"","sources":["../../../src/exercises/pc/chemicalEquations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,eAAe,EAChB,MAAM,gDAAgD,CAAC;AAGxD,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC,CAAC;AAkCF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAanD,CAAC"}
1
+ {"version":3,"file":"chemicalEquations.d.ts","sourceRoot":"","sources":["../../../src/exercises/pc/chemicalEquations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,eAAe,EAChB,MAAM,gDAAgD,CAAC;AAGxD,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC,CAAC;AAkCF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAcnD,CAAC"}
@@ -43,4 +43,5 @@ exports.chemicalEquations = {
43
43
  freeTimer: 60,
44
44
  getPropositions,
45
45
  isAnswerValid,
46
+ pdfOptions: { shouldSpreadPropositions: true },
46
47
  };
@@ -16,61 +16,61 @@ const titrationReactions = [
16
16
  {
17
17
  titré: { name: "de l'acide chlorhydrique", symbol: "HCl" },
18
18
  titrant: { name: "de l'hydroxyde de sodium", symbol: "NaOH" },
19
- produit: "NaCl + H₂O",
19
+ produit: "NaCl + H_2O",
20
20
  coeff: [1, 1],
21
21
  },
22
22
  {
23
- titré: { name: "de l'acide acétique", symbol: "CH₃COOH" },
23
+ titré: { name: "de l'acide acétique", symbol: "CH_3COOH" },
24
24
  titrant: { name: "de l'hydroxyde de sodium", symbol: "NaOH" },
25
- produit: "CH₃COONa + H₂O",
25
+ produit: "CH_3COONa + H_2O",
26
26
  coeff: [1, 1],
27
27
  },
28
28
  {
29
- titré: { name: "de l'acide sulfurique", symbol: "H₂SO₄" },
29
+ titré: { name: "de l'acide sulfurique", symbol: "H_2SO_4" },
30
30
  titrant: { name: "de l'hydroxyde de sodium", symbol: "NaOH" },
31
- produit: "Na₂SO₄ + H₂O",
31
+ produit: "Na_2SO_4 + H_2O",
32
32
  coeff: [1, 2],
33
33
  },
34
34
  {
35
- titré: { name: "de l'acide nitrique", symbol: "HNO₃" },
35
+ titré: { name: "de l'acide nitrique", symbol: "HNO_3" },
36
36
  titrant: { name: "de l'hydroxyde de sodium", symbol: "NaOH" },
37
- produit: "NaNO₃ + H₂O",
37
+ produit: "NaNO_3 + H_2O",
38
38
  coeff: [1, 1],
39
39
  },
40
40
  {
41
- titré: { name: "de l'acide oxalique", symbol: "H₂C₂O₄" },
42
- titrant: { name: "du permanganate de potassium", symbol: "KMnO₄" },
43
- produit: "MnSO₄ + CO₂ + H₂O",
41
+ titré: { name: "de l'acide oxalique", symbol: "H_2C_2O_4" },
42
+ titrant: { name: "du permanganate de potassium", symbol: "KMnO_4" },
43
+ produit: "MnSO_4 + CO_2 + H_2O",
44
44
  coeff: [5, 2],
45
45
  },
46
46
  {
47
47
  titré: { name: "du chlorure de sodium", symbol: "NaCl" },
48
- titrant: { name: "du nitrate d'argent", symbol: "AgNO₃" },
49
- produit: "AgCl + NaNO₃",
48
+ titrant: { name: "du nitrate d'argent", symbol: "AgNO_3" },
49
+ produit: "AgCl + NaNO_3",
50
50
  coeff: [1, 1],
51
51
  },
52
52
  {
53
- titré: { name: "de l'acide ascorbique", symbol: "C₆H₈O₆" },
54
- titrant: { name: "de l'iode", symbol: "I₂" },
55
- produit: "C₆H₆O₆ + HI",
53
+ titré: { name: "de l'acide ascorbique", symbol: "C_6H_8O_6" },
54
+ titrant: { name: "de l'iode", symbol: "I_2" },
55
+ produit: "C_6H_6O_6 + HI",
56
56
  coeff: [1, 1],
57
57
  },
58
58
  {
59
- titré: { name: "de l'hydroxyde de calcium", symbol: "Ca(OH)" },
59
+ titré: { name: "de l'hydroxyde de calcium", symbol: "Ca(OH)_2" },
60
60
  titrant: { name: "de l'acide chlorhydrique", symbol: "HCl" },
61
- produit: "CaCl₂ + H₂O",
61
+ produit: "CaCl_2 + H_2O",
62
62
  coeff: [1, 2],
63
63
  },
64
64
  {
65
- titré: { name: "de l'acide phosphorique", symbol: "H₃PO₄" },
65
+ titré: { name: "de l'acide phosphorique", symbol: "H_3PO_4" },
66
66
  titrant: { name: "de l'hydroxyde de sodium", symbol: "NaOH" },
67
- produit: "Na₃PO₄ + H₂O",
67
+ produit: "Na_3PO_4 + H_2O",
68
68
  coeff: [1, 3],
69
69
  },
70
70
  {
71
- titré: { name: "de l'acide borique", symbol: "H₃BO₃" },
71
+ titré: { name: "de l'acide borique", symbol: "H_3BO_3" },
72
72
  titrant: { name: "de l'hydroxyde de sodium", symbol: "NaOH" },
73
- produit: "NaB(OH)",
73
+ produit: "NaB(OH)_4",
74
74
  coeff: [1, 1],
75
75
  },
76
76
  ];
@@ -120,7 +120,7 @@ const generateExo = () => {
120
120
  const cB = new measure_1.Measure((0, random_1.random)([0.05, 0.1, 0.2, 0.25, 0.5, 0.75, 1.0]), 0, new divideUnit_1.DivideUnit(AmountOfSubstance_1.AmountOfSubstance.mol, volumeUnit_1.VolumeUnit.mL));
121
121
  const vB = new measure_1.Measure(5 * (0, randint_1.randint)(1, 11), 0, volumeUnit_1.VolumeUnit.mL);
122
122
  const reactionString = `${reaction.coeff[0] !== 1 ? reaction.coeff[0] : ""}${reaction.titré.symbol} + ${reaction.coeff[1] !== 1 ? reaction.coeff[1] : ""}${reaction.titrant.symbol} \\Rightarrow ${reaction.produit}`;
123
- const hint = `Rappel : Au point d'équivalence, les quantités de matière ${reaction.titré.name} et ${reaction.titrant.name} sont égales , c'est-à-dire :
123
+ const hint = `Rappel : Au point d'équivalence, les quantités de matière $${reaction.titré.name}$ et $${reaction.titrant.name}$ sont égales , c'est-à-dire :
124
124
 
125
125
  - $${reaction.coeff[0]} \\times n(${reaction.titré.symbol}) = ${reaction.coeff[1]} \\times n(${reaction.titrant.symbol})$`;
126
126
  const instruction = `On réalise un titrage entre une solution ${reaction.titré.name}$(${reaction.titré.symbol})$ et une solution ${reaction.titrant.name}$(${reaction.titrant.symbol})$.
@@ -54,7 +54,7 @@ const generateExercise = () => {
54
54
  Les données du problème sont les suivantes :
55
55
 
56
56
  - La masse du bloc : $m = ${mass}\\ kg$
57
- - L'angle du plan incliné par rapport à l'horizontale : $\\alpha = 45°$
57
+ - L'angle du plan incliné par rapport à l'horizontale : $\\alpha = 45^{\\circ}$
58
58
 
59
59
  Calculer la force de ${isAsking} en $N$, arrondie au centième.`;
60
60
  const answer = getAnswer(isAsking, mass).frenchify();
@@ -80,7 +80,7 @@ const getCorrection = (isAsking, answer) => {
80
80
  ? `1 - Calculer la composante perpendicualire du poids : $P_{\\perp} = \\cos(45°) \\times m \\cdot g$
81
81
 
82
82
  2 - $R = P_{\\perp}\\ \\Rightarrow\\ R = ${answer}\\ N$`
83
- : `1 - Calculer la composante parallèle du poids : $P_{\\parallel} = \\sin(45°) \\times m \\cdot g$
83
+ : `1 - Calculer la composante parallèle du poids : $P_{\\parallel} = \\sin(45^{\\circ}) \\times m \\cdot g$
84
84
 
85
85
  2 - $f = -P_{\\parallel}\\ \\Rightarrow\\ f = ${answer}\\ N$`;
86
86
  };
@@ -17,7 +17,7 @@ const getForceWorkQuestion = () => {
17
17
  const rounded = (0, round_1.roundSignificant)(answer, 1);
18
18
  const question = {
19
19
  answer: rounded + "J",
20
- instruction: `Soit une force $\\overrightarrow F$ constante dont le point d'application se déplace d'une position $A$ à une position $B$ telle que $F = ${(0, round_1.roundSignificant)(forceValue, 1)}\\ \\text{N}$, $AB = ${(0, round_1.roundSignificant)(length, 1)}\\ \\text{m}$ et $\\widehat{\\left(\\overrightarrow F ; \\overrightarrow{AB}\\right)} = ${angle.degree}^°$. Calculer le travail de la force $\\overrightarrow F$ lors du déplacement de $A$ vers $B$.`,
20
+ instruction: `Soit une force $\\overrightarrow F$ constante dont le point d'application se déplace d'une position $A$ à une position $B$ telle que $F = ${(0, round_1.roundSignificant)(forceValue, 1)}\\ \\text{N}$, $AB = ${(0, round_1.roundSignificant)(length, 1)}\\ \\text{m}$ et $\\widehat{\\left(\\overrightarrow F ; \\overrightarrow{AB}\\right)} = ${angle.degree}^{\\circ}$. Calculer le travail de la force $\\overrightarrow F$ lors du déplacement de $A$ vers $B$.`,
21
21
  keys: ["J", "timesTenPower"],
22
22
  answerFormat: "tex",
23
23
  identifiers: { length, forceValue, angleDegree: angle.degree },
@@ -1 +1 @@
1
- {"version":3,"file":"gravitationalForcePlanets.d.ts","sourceRoot":"","sources":["../../../../src/exercises/pc/forces/gravitationalForcePlanets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAiJF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAgB3D,CAAC"}
1
+ {"version":3,"file":"gravitationalForcePlanets.d.ts","sourceRoot":"","sources":["../../../../src/exercises/pc/forces/gravitationalForcePlanets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAmJF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAgB3D,CAAC"}
@@ -35,10 +35,12 @@ Données:
35
35
  })}$`;
36
36
  const hint = `Utilisez la formule de la force gravitationnelle.`;
37
37
  const correction = `La force gravitationnelle est donnée par la formule vectorielle :
38
+
38
39
  $$\\vec{F}_{\\text{Soleil/${selectedPlanet.name}}} = -G \\cdot \\frac{m_{\\text{soleil}} \\cdot m_{${selectedPlanet.name.charAt(0)}}}{d^2} \\cdot \\vec{u}_{\\text{Soleil→${selectedPlanet.name}}}$$. \n
39
40
  La formule de la force gravitationnelle en valeur est :
40
41
  $$F_{\\text{Soleil/${selectedPlanet.name}}} = G \\cdot \\frac{m_{\\text{soleil}} \\cdot m_{${selectedPlanet.name.charAt(0)}}}{d^2}$$. \n
41
42
  En utilisant les valeurs fournies :
43
+
42
44
  $$F_{\\text{Soleil/${selectedPlanet.name}}} = ${G.toTex({
43
45
  scientific: 2,
44
46
  })} \\cdot \\frac{${selectedPlanet.mass.toTex({
@@ -23,7 +23,7 @@ const getPropositions = (n, { answer, quantity }) => {
23
23
  const propositions = [];
24
24
  (0, exercise_1.addValidProp)(propositions, answer);
25
25
  const w1 = atoms_1.avogadroConstant.value.divide(quantity).toSignificant(2);
26
- const w2 = `$${answer} mol$`;
26
+ const w2 = `${answer}\\ mol`;
27
27
  (0, exercise_1.tryToAddWrongProp)(propositions, w1.toTex());
28
28
  (0, exercise_1.tryToAddWrongProp)(propositions, w2);
29
29
  while (propositions.length < n) {
@@ -1 +1 @@
1
- {"version":3,"file":"potentialEnergy.d.ts","sourceRoot":"","sources":["../../../src/exercises/pc/potentialEnergy.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAalC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAuDF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,CAajD,CAAC"}
1
+ {"version":3,"file":"potentialEnergy.d.ts","sourceRoot":"","sources":["../../../src/exercises/pc/potentialEnergy.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAalC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAwDF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,WAAW,CAajD,CAAC"}
@@ -41,7 +41,8 @@ const getPropositions = (n, { answer, height, mass }) => {
41
41
  (0, exercise_1.addValidProp)(propositions, answer);
42
42
  const potentialEnergy = mass * 9.81 * height;
43
43
  while (propositions.length < n) {
44
- (0, exercise_1.tryToAddWrongProp)(propositions, (0, frenchify_1.frenchify)((0, round_1.round)(potentialEnergy * (0.3 + Math.random() * 1.5), 2)) + "J");
44
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, frenchify_1.frenchify)((0, round_1.round)(potentialEnergy * (0.3 + Math.random() * 1.5), 2)) +
45
+ "\\text{J}");
45
46
  }
46
47
  return (0, shuffle_1.shuffle)(propositions);
47
48
  };
@@ -65,15 +65,15 @@ const getSnellDescartes = () => {
65
65
  const n1 = refractionIndex[randomMaterial1].n;
66
66
  const n2 = refractionIndex[randomMaterial2].n;
67
67
  const ramdonAngleIncidenceDeg = (0, randint_1.randint)(10, 90);
68
- const instruction = `Un rayon de lumière se propage dans ${refractionIndex[randomMaterial1].Material} (n1 ${n1}) et atteint une surface ${refractionIndex[randomMaterial2].Material2}
69
- (n2 ${n2}) sous un angle d'incidence de ${ramdonAngleIncidenceDeg} degrés. $\\\\$ Calculer l'angle de
68
+ const instruction = `Un rayon de lumière se propage dans ${refractionIndex[randomMaterial1].Material} ($n1 \\approx ${n1}$) et atteint une surface ${refractionIndex[randomMaterial2].Material2}
69
+ ($n2 \\approx ${n2}$) sous un angle d'incidence de $${ramdonAngleIncidenceDeg}$ degrés. $\\\\$ Calculer l'angle de
70
70
  réfraction de la lumière à l'intérieur ${refractionIndex[randomMaterial2].Material3} en utilisant la loi de Snell-Descartes.`;
71
71
  const angleIncidenceRad = (ramdonAngleIncidenceDeg * Math.PI) / 180;
72
72
  // Calculer l'angle de réfraction en radians
73
73
  const angleRefractionRad = Math.asin((n1 / n2) * Math.sin(angleIncidenceRad));
74
74
  // Convertir l'angle de réfraction de radians à degrés
75
75
  const angleRefractionDeg = (angleRefractionRad * 180) / Math.PI;
76
- const answer = `${(0, frenchify_1.frenchify)((0, round_1.round)(angleRefractionDeg, 1))}°`;
76
+ const answer = `${(0, frenchify_1.frenchify)((0, round_1.round)(angleRefractionDeg, 1))}^{\\circ}`;
77
77
  const question = {
78
78
  instruction,
79
79
  answer,
@@ -87,7 +87,7 @@ const getPropositions = (n, { answer }) => {
87
87
  const propositions = [];
88
88
  (0, exercise_1.addValidProp)(propositions, answer);
89
89
  while (propositions.length < n) {
90
- (0, exercise_1.tryToAddWrongProp)(propositions, (0, frenchify_1.frenchify)((0, round_1.round)((0, randint_1.randint)(100, 900) / 10, 1)) + "°");
90
+ (0, exercise_1.tryToAddWrongProp)(propositions, (0, frenchify_1.frenchify)((0, round_1.round)((0, randint_1.randint)(100, 900) / 10, 1)) + "^{\\circ}");
91
91
  }
92
92
  return (0, shuffle_1.shuffle)(propositions);
93
93
  };
@@ -1 +1 @@
1
- {"version":3,"file":"frequencyComparison.d.ts","sourceRoot":"","sources":["../../../../src/exercises/pc/sound/frequencyComparison.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAKlC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAqDF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAcrD,CAAC"}
1
+ {"version":3,"file":"frequencyComparison.d.ts","sourceRoot":"","sources":["../../../../src/exercises/pc/sound/frequencyComparison.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAKlC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAqDF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAerD,CAAC"}
@@ -48,4 +48,5 @@ exports.frequencyComparison = {
48
48
  isAnswerValid,
49
49
  subject: "Physique",
50
50
  answerType: "QCU",
51
+ pdfOptions: { shouldSpreadPropositions: true },
51
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lightDistanceConversion.d.ts","sourceRoot":"","sources":["../../../../src/exercises/pc/waves/lightDistanceConversion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAqKF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
1
+ {"version":3,"file":"lightDistanceConversion.d.ts","sourceRoot":"","sources":["../../../../src/exercises/pc/waves/lightDistanceConversion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AA8KF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
@@ -36,6 +36,7 @@ const getLightDistanceConversionQuestion = () => {
36
36
  - Il y a $365.25 \\text{ jours} \\times 24 \\text{ heures/jour} \\times 3600 \\text{ secondes/heure}$ secondes dans une année (Le 0.25 compte pour la moyenne sur quatres années dont une bissextile).
37
37
 
38
38
  La distance parcourue par la lumière en une année est :
39
+
39
40
  $$
40
41
  c \\times \\text{secondes par année}
41
42
  $$
@@ -43,46 +44,54 @@ const getLightDistanceConversionQuestion = () => {
43
44
  Pour convertir des mètres en années-lumière, divisez la distance en mètres par la distance parcourue par la lumière en une année.`;
44
45
  const correction = isLightYearToMeters
45
46
  ? `La distance parcourue par la lumière en une année est donnée par :
47
+
46
48
  $$
47
49
  c \\times \\text{secondes par année} = 3 \\times 10^8 \\text{ m/s} \\times 365.25 \\times 24 \\times 3600 \\text{ s}
48
50
  $$
49
51
 
50
52
  En simplifiant, nous obtenons :
53
+
51
54
  $$
52
55
  3 \\times 10^8 \\text{ m/s} \\times 31,557,600 \\text{ s} = 9.46728 \\times 10^{15} \\text{ m}
53
56
  $$
54
57
 
55
58
  Pour convertir des années-lumière en mètres, nous utilisons la relation suivante :
59
+
56
60
  $$
57
- \\text{distance en mètres} = \\text{distance en années-lumière} \\times 9.46728 \\times 10^{15} \\text{ m}
61
+ \\text{distance en années-lumière} \\times 9.46728 \\times 10^{15} \\text{ m}
58
62
  $$
59
63
 
60
64
  En appliquant cette relation avec la valeur donnée de ${lightYear} années-lumière, nous obtenons :
65
+
61
66
  $$
62
67
  \\text{distance en mètres} = ${lightYear} \\times 9.46728 \\times 10^{15} = ${distanceFromEarthMeters
63
68
  .toSignificant(2)
64
69
  .toTex()} \\text{ m}
65
70
  $$`
66
71
  : `La distance parcourue par la lumière en une année est donnée par :
67
- $$
72
+
73
+ $$
68
74
  c \\times \\text{secondes par année} = 3 \\times 10^8 \\text{ m/s} \\times 365.25 \\times 24 \\times 3600 \\text{ s}
69
75
  $$
70
76
 
71
77
  En simplifiant, nous obtenons :
78
+
72
79
  $$
73
80
  3 \\times 10^8 \\text{ m/s} \\times 31,557,600 \\text{ s} = 9.46728 \\times 10^{15} \\text{ m}
74
81
  $$
75
82
 
76
83
  Pour convertir des mètres en années-lumière, nous utilisons la relation suivante :
84
+
77
85
  $$
78
- \\text{distance en années-lumière} = \\frac{\\text{distance en mètres}}{9.46728 \\times 10^{15} \\text{ m}}
86
+ \\frac{\\text{distance en mètres}}{9.46728 \\times 10^{15} \\text{ m}}
79
87
  $$
80
88
 
81
89
  En appliquant cette relation avec la valeur donnée de $${distanceFromEarthMeters
82
90
  .toSignificant(2)
83
91
  .toTex()} \\text{m}$, nous obtenons :
92
+
84
93
  $$
85
- \\text{distance en années-lumière} = \\frac{${distanceFromEarthMeters
94
+ \\frac{${distanceFromEarthMeters
86
95
  .toSignificant(2)
87
96
  .toTex()}}{9.46728 \\times 10^{15}} = ${lightYear.toScientific(2).toTex()}
88
97
  $$`;