math-exercises 2.2.81 → 2.2.83

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 (101) hide show
  1. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType2.d.ts +4 -1
  2. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType2.d.ts.map +1 -1
  3. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType2.js +79 -30
  4. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.d.ts +4 -1
  5. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.d.ts.map +1 -1
  6. package/lib/exercises/math/calculLitteral/inequations/firstDegreeInequationsType3.js +89 -39
  7. package/lib/exercises/math/calculLitteral/inequations/squareFunctionInequation.d.ts.map +1 -1
  8. package/lib/exercises/math/calculLitteral/inequations/squareFunctionInequation.js +37 -17
  9. package/lib/exercises/math/calculLitteral/simplifying/evaluateExpression.d.ts.map +1 -1
  10. package/lib/exercises/math/calculLitteral/simplifying/evaluateExpression.js +55 -15
  11. package/lib/exercises/math/derivation/derivative/convexityQuadrinomials.d.ts.map +1 -1
  12. package/lib/exercises/math/derivation/derivative/convexityQuadrinomials.js +9 -18
  13. package/lib/exercises/math/derivation/derivative/thirdDegreeFunctionVariation.d.ts.map +1 -1
  14. package/lib/exercises/math/derivation/derivative/thirdDegreeFunctionVariation.js +11 -11
  15. package/lib/exercises/math/functions/absolute/absolueValueInequationsSup.d.ts.map +1 -1
  16. package/lib/exercises/math/functions/absolute/absolueValueInequationsSup.js +10 -2
  17. package/lib/exercises/math/functions/absolute/absoluteValueInequations.d.ts.map +1 -1
  18. package/lib/exercises/math/functions/absolute/absoluteValueInequations.js +11 -4
  19. package/lib/exercises/math/functions/basics/graphicEquation.d.ts.map +1 -1
  20. package/lib/exercises/math/functions/basics/graphicEquation.js +46 -28
  21. package/lib/exercises/math/functions/basics/graphicInequation.d.ts.map +1 -1
  22. package/lib/exercises/math/functions/basics/graphicInequation.js +0 -1
  23. package/lib/exercises/math/functions/basics/graphicInequationAffine.d.ts.map +1 -1
  24. package/lib/exercises/math/functions/basics/graphicInequationAffine.js +10 -3
  25. package/lib/exercises/math/functions/basics/twoFunctionsInequation.d.ts.map +1 -1
  26. package/lib/exercises/math/functions/basics/twoFunctionsInequation.js +74 -58
  27. package/lib/exercises/math/functions/logarithm/log10Simplifying.d.ts.map +1 -1
  28. package/lib/exercises/math/functions/logarithm/log10Simplifying.js +1 -0
  29. package/lib/exercises/math/functions/square/squareImageInterval.d.ts.map +1 -1
  30. package/lib/exercises/math/functions/square/squareImageInterval.js +13 -4
  31. package/lib/exercises/math/functions/trinoms/secondDegreeInequation.d.ts.map +1 -1
  32. package/lib/exercises/math/functions/trinoms/secondDegreeInequation.js +10 -6
  33. package/lib/exercises/math/functions/trinoms/trinomSignFromRoots.d.ts.map +1 -1
  34. package/lib/exercises/math/functions/trinoms/trinomSignFromRoots.js +12 -6
  35. package/lib/exercises/math/geometry/convexity/convexityQuadrinomialsGeo.d.ts.map +1 -1
  36. package/lib/exercises/math/geometry/convexity/convexityQuadrinomialsGeo.js +9 -14
  37. package/lib/exercises/math/matrices/matrixInversibilityDomain.d.ts.map +1 -1
  38. package/lib/exercises/math/matrices/matrixInversibilityDomain.js +15 -2
  39. package/lib/exercises/math/probaStat/binomial/binomialInequation.d.ts.map +1 -1
  40. package/lib/exercises/math/python/pyForLoop1Exercise.d.ts.map +1 -1
  41. package/lib/exercises/math/sequences/genericSequenceVariations.d.ts.map +1 -1
  42. package/lib/exercises/math/sets/intervals/inequalityToInterval.d.ts +2 -4
  43. package/lib/exercises/math/sets/intervals/inequalityToInterval.d.ts.map +1 -1
  44. package/lib/exercises/math/sets/intervals/inequalityToInterval.js +30 -25
  45. package/lib/exercises/math/sets/intervals/intervalToInequality.d.ts +2 -4
  46. package/lib/exercises/math/sets/intervals/intervalToInequality.d.ts.map +1 -1
  47. package/lib/exercises/math/sets/intervals/intervalToInequality.js +42 -78
  48. package/lib/exercises/math/sets/intervals/intervalsIntersection.d.ts +3 -7
  49. package/lib/exercises/math/sets/intervals/intervalsIntersection.d.ts.map +1 -1
  50. package/lib/exercises/math/sets/intervals/intervalsIntersection.js +101 -31
  51. package/lib/exercises/math/sets/intervals/intervalsUnion.d.ts +3 -7
  52. package/lib/exercises/math/sets/intervals/intervalsUnion.d.ts.map +1 -1
  53. package/lib/exercises/math/sets/intervals/intervalsUnion.js +68 -19
  54. package/lib/exercises/pc/index.d.ts +4 -0
  55. package/lib/exercises/pc/index.d.ts.map +1 -1
  56. package/lib/exercises/pc/index.js +4 -6
  57. package/lib/exercises/vea/equationVEA.js +2 -2
  58. package/lib/geogebra/lagrange.d.ts.map +1 -1
  59. package/lib/geogebra/spline.d.ts.map +1 -1
  60. package/lib/index.d.ts +38 -20
  61. package/lib/index.d.ts.map +1 -1
  62. package/lib/math/geometry/point.d.ts.map +1 -1
  63. package/lib/math/inequations/inequation.d.ts +1 -1
  64. package/lib/math/inequations/inequation.d.ts.map +1 -1
  65. package/lib/math/numbers/integer/integer.d.ts.map +1 -1
  66. package/lib/math/numbers/rationals/rational.d.ts +2 -3
  67. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  68. package/lib/math/polynomials/trinom.d.ts +2 -4
  69. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  70. package/lib/playground.d.ts.map +1 -1
  71. package/lib/playground.js +4 -4
  72. package/lib/tree/nodes/equations/equationSolutionNode.d.ts +0 -1
  73. package/lib/tree/nodes/equations/equationSolutionNode.d.ts.map +1 -1
  74. package/lib/tree/nodes/equations/equationSolutionNode.js +0 -3
  75. package/lib/tree/nodes/inequations/inequationNode.d.ts +2 -1
  76. package/lib/tree/nodes/inequations/inequationNode.d.ts.map +1 -1
  77. package/lib/tree/nodes/inequations/inequationNode.js +4 -3
  78. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts +0 -1
  79. package/lib/tree/nodes/inequations/inequationSolutionNode.d.ts.map +1 -1
  80. package/lib/tree/nodes/inequations/inequationSolutionNode.js +0 -3
  81. package/lib/tree/nodes/numbers/numberNode.d.ts +1 -1
  82. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  83. package/lib/tree/nodes/operators/multiplyNode.js +6 -1
  84. package/lib/tree/nodes/sets/closure.d.ts +5 -0
  85. package/lib/tree/nodes/sets/closure.d.ts.map +1 -1
  86. package/lib/tree/nodes/sets/closure.js +32 -0
  87. package/lib/tree/nodes/sets/discreteSetNode.d.ts +4 -4
  88. package/lib/tree/nodes/sets/discreteSetNode.d.ts.map +1 -1
  89. package/lib/tree/nodes/sets/discreteSetNode.js +3 -4
  90. package/lib/tree/nodes/sets/intervalNode.d.ts +13 -1
  91. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  92. package/lib/tree/nodes/sets/intervalNode.js +154 -3
  93. package/lib/tree/parsers/discreteSetParser.d.ts +2 -2
  94. package/lib/tree/parsers/discreteSetParser.d.ts.map +1 -1
  95. package/lib/tree/parsers/discreteSetParser.js +2 -1
  96. package/lib/tree/parsers/equationSolutionParser.js +1 -1
  97. package/lib/tree/parsers/powerParser.d.ts +1 -1
  98. package/lib/tree/parsers/rationalParser.d.ts +1 -1
  99. package/lib/tree/parsers/unionIntervalParser.d.ts.map +1 -1
  100. package/lib/tree/parsers/unionIntervalParser.js +3 -1
  101. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"matrixInversibilityDomain.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/matrices/matrixInversibilityDomain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAyBlC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AA0FF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAc3D,CAAC"}
1
+ {"version":3,"file":"matrixInversibilityDomain.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/matrices/matrixInversibilityDomain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AA0BlC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAoGF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAc3D,CAAC"}
@@ -17,6 +17,7 @@ const intervalNode_1 = require("../../../tree/nodes/sets/intervalNode");
17
17
  const unionIntervalNode_1 = require("../../../tree/nodes/sets/unionIntervalNode");
18
18
  const variableNode_1 = require("../../../tree/nodes/variables/variableNode");
19
19
  const latexParser_1 = require("../../../tree/parsers/latexParser");
20
+ const unionIntervalParser_1 = require("../../../tree/parsers/unionIntervalParser");
20
21
  const intervalKeys_1 = require("../../utils/keys/intervalKeys");
21
22
  const getMatrixInversibilityDomainQuestion = () => {
22
23
  const elements = [[], []];
@@ -50,7 +51,9 @@ const getMatrixInversibilityDomainQuestion = () => {
50
51
  ]).toTex();
51
52
  const question = {
52
53
  answer,
53
- instruction: `Soit $M = ${matrix.toTex()}$, où $x\\in \\mathbb{R}$. Sur quel ensemble la matrice $M$ est-elle inversible ?
54
+ instruction: `Soit $M = ${matrix.toTex()}$, où $x\\in \\mathbb{R}$.
55
+
56
+ Sur quel ensemble la matrice $M$ est-elle inversible ?
54
57
  `,
55
58
  keys: [...intervalKeys_1.intervalKeys, "reals", "varnothing"],
56
59
  answerFormat: "tex",
@@ -78,7 +81,17 @@ const getPropositions = (n, { answer, a, b, c, d }) => {
78
81
  return (0, exercise_1.shuffleProps)(propositions, n);
79
82
  };
80
83
  const isAnswerValid = (ans, { answer }) => {
81
- return ans === answer;
84
+ try {
85
+ if (answer === "\\mathbb{R}" || answer === "\\varnothing")
86
+ return ans === answer;
87
+ const parsed = (0, unionIntervalParser_1.unionIntervalParser)(ans);
88
+ if (!parsed)
89
+ return false;
90
+ return parsed.simplify().toTex() === answer;
91
+ }
92
+ catch (err) {
93
+ return false;
94
+ }
82
95
  };
83
96
  exports.matrixInversibilityDomain = {
84
97
  id: "matrixInversibilityDomain",
@@ -1 +1 @@
1
- {"version":3,"file":"binomialInequation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/binomial/binomialInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAiBT,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAEL,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EAEL,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAK5C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,eAAe,CAAC;IACnB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAgKF,KAAK,OAAO,GAAG;IACb,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAgBF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAuB7D,CAAC"}
1
+ {"version":3,"file":"binomialInequation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/probaStat/binomial/binomialInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAiBT,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAEL,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EAEL,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAK5C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,eAAe,CAAC;IACnB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAgKF,KAAK,OAAO,GAAG;IACb,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAgBF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAuB7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pyForLoop1Exercise.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/python/pyForLoop1Exercise.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AAUlC,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAOF,KAAK,cAAc,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AA6KF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAaxD,CAAC"}
1
+ {"version":3,"file":"pyForLoop1Exercise.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/python/pyForLoop1Exercise.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAST,MAAM,0BAA0B,CAAC;AASlC,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAOF,KAAK,cAAc,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AA6KF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAaxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"genericSequenceVariations.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/genericSequenceVariations.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AAOlC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAmDF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAe3D,CAAC"}
1
+ {"version":3,"file":"genericSequenceVariations.d.ts","sourceRoot":"","sources":["../../../../src/exercises/math/sequences/genericSequenceVariations.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AAMlC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAmDF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAe3D,CAAC"}
@@ -1,9 +1,7 @@
1
1
  import { Exercise } from "../../../../exercises/exercise";
2
- import { ClosureType } from "../../../../tree/nodes/sets/closure";
2
+ import { IntervalNodeIdentifiers } from "../../../../tree/nodes/sets/intervalNode";
3
3
  type Identifiers = {
4
- intervalMin: number | string;
5
- intervalMax: number | string;
6
- intervalClosure: ClosureType;
4
+ intervalIdentifiers: IntervalNodeIdentifiers;
7
5
  };
8
6
  export declare const inequalityToInterval: Exercise<Identifiers>;
9
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"inequalityToInterval.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/inequalityToInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAO5D,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,eAAe,EAAE,WAAW,CAAC;CAC9B,CAAC;AAkFF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CActD,CAAC"}
1
+ {"version":3,"file":"inequalityToInterval.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/inequalityToInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAGL,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAI5C,KAAK,WAAW,GAAG;IAIjB,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAqFF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAetD,CAAC"}
@@ -3,14 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.inequalityToInterval = void 0;
4
4
  const exercise_1 = require("../../../../exercises/exercise");
5
5
  const getDistinctQuestions_1 = require("../../../../exercises/utils/getDistinctQuestions");
6
- const intervals_1 = require("../../../../math/sets/intervals/intervals");
6
+ const infiniteNode_1 = require("../../../../tree/nodes/numbers/infiniteNode");
7
+ const intervalNode_1 = require("../../../../tree/nodes/sets/intervalNode");
7
8
  const intervalParser_1 = require("../../../../tree/parsers/intervalParser");
8
9
  const shuffle_1 = require("../../../../utils/alea/shuffle");
10
+ const rebuildIdentifiers = (oldIds) => {
11
+ if (!!oldIds.intervalIdentifiers)
12
+ return oldIds;
13
+ const a = oldIds.intervalMin === "-infty" || oldIds.intervalMin === -Infinity
14
+ ? infiniteNode_1.MinusInfinityNode
15
+ : oldIds.intervalMin.toTree();
16
+ const b = oldIds.intervalMax === "infty" || oldIds.intervalMax === Infinity
17
+ ? infiniteNode_1.PlusInfinityNode
18
+ : oldIds.intervalMax.toTree();
19
+ const closure = oldIds.intervalClosure;
20
+ const interval = new intervalNode_1.IntervalNode(a, b, closure);
21
+ return { intervalIdentifiers: interval.toIdentifiers() };
22
+ };
9
23
  const getInequalityToIntervalQuestion = () => {
10
- const interval = intervals_1.IntervalConstructor.random();
11
- const inequalityString = interval.toInequality();
24
+ const interval = intervalNode_1.IntervalNodeConstructor.random();
25
+ const inequality = interval.toInequality();
12
26
  const answer = `x\\in\\ ${interval.toTex()}`;
13
- const instruction = `Soit $${inequalityString}$. Traduire cette inégalité en appartenance à un intervalle.`;
27
+ const instruction = `Soit $${inequality.toTex()}$. Traduire cette inégalité en appartenance à un intervalle.`;
28
+ const identifiers = {
29
+ intervalIdentifiers: interval.toIdentifiers(),
30
+ };
14
31
  const question = {
15
32
  answer,
16
33
  instruction: instruction,
@@ -27,34 +44,21 @@ const getInequalityToIntervalQuestion = () => {
27
44
  "infty",
28
45
  ],
29
46
  answerFormat: "tex",
30
- identifiers: {
31
- intervalMin: interval.min === -Infinity ? "-infty" : interval.min,
32
- intervalMax: interval.max === Infinity ? "infty" : interval.max,
33
- intervalClosure: interval.closure,
34
- },
47
+ identifiers,
35
48
  };
36
49
  return question;
37
50
  };
38
- const getPropositions = (n, { answer, intervalClosure, intervalMax, intervalMin }) => {
39
- const reverseBracket = (bracket) => {
40
- return bracket === "[" ? "]" : "[";
41
- };
42
- const min = intervalMin === "-infty" ? -Infinity : intervalMin;
43
- const max = intervalMax === "infty" ? Infinity : intervalMax;
44
- const interval = new intervals_1.Interval(min.toTree(), max.toTree(), intervalClosure);
51
+ const getPropositions = (n, { answer, intervalIdentifiers }) => {
52
+ const interval = intervalNode_1.IntervalNodeConstructor.fromIdentifiers(intervalIdentifiers);
45
53
  const propositions = [];
46
54
  (0, exercise_1.addValidProp)(propositions, answer);
47
- const wrongStatements = [
48
- `x\\in\\ ${reverseBracket(interval.leftBracket)}\\ ${interval.insideToTex()}\\ ${interval.rightBracket}\\ `,
49
- `x\\in\\ ${interval.leftBracket}\\ ${interval.insideToTex()}\\ ${reverseBracket(interval.rightBracket)}\\ `,
50
- `x\\in\\ ${reverseBracket(interval.leftBracket)}\\ ${interval.insideToTex()}\\ ${reverseBracket(interval.rightBracket)}\\ `,
51
- ];
52
- wrongStatements.forEach((ineq) => {
53
- (0, exercise_1.addWrongProp)(propositions, ineq);
54
- });
55
+ (0, exercise_1.tryToAddWrongProp)(propositions, "x\\in\\ " + interval.toLeftReversedClosure().toTex());
56
+ (0, exercise_1.tryToAddWrongProp)(propositions, "x\\in\\ " + interval.toRightReversedClosure().toTex());
57
+ (0, exercise_1.tryToAddWrongProp)(propositions, "x\\in\\ " +
58
+ interval.toLeftReversedClosure().toRightReversedClosure().toTex());
55
59
  return (0, shuffle_1.shuffle)(propositions);
56
60
  };
57
- const isAnswerValid = (ans, { intervalClosure, intervalMax, intervalMin, answer }) => {
61
+ const isAnswerValid = (ans, { answer }) => {
58
62
  try {
59
63
  const parsed = (0, intervalParser_1.intervalParser)(ans.replaceAll("x\\in", ""));
60
64
  if (!parsed)
@@ -78,4 +82,5 @@ exports.inequalityToInterval = {
78
82
  getPropositions,
79
83
  isAnswerValid,
80
84
  subject: "Mathématiques",
85
+ rebuildIdentifiers,
81
86
  };
@@ -1,9 +1,7 @@
1
1
  import { Exercise } from "../../../../exercises/exercise";
2
- import { ClosureType } from "../../../../tree/nodes/sets/closure";
2
+ import { IntervalNodeIdentifiers } from "../../../../tree/nodes/sets/intervalNode";
3
3
  type Identifiers = {
4
- intervalMin: number | string;
5
- intervalMax: number | string;
6
- intervalClosure: ClosureType;
4
+ intervalIdentifiers: IntervalNodeIdentifiers;
7
5
  };
8
6
  export declare const intervalToInequality: Exercise<Identifiers>;
9
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"intervalToInequality.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/intervalToInequality.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAK5D,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,eAAe,EAAE,WAAW,CAAC;CAC9B,CAAC;AAkIF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CActD,CAAC"}
1
+ {"version":3,"file":"intervalToInequality.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/intervalToInequality.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAGL,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAK5C,KAAK,WAAW,GAAG;IAIjB,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAgFF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAetD,CAAC"}
@@ -3,97 +3,60 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.intervalToInequality = void 0;
4
4
  const exercise_1 = require("../../../../exercises/exercise");
5
5
  const getDistinctQuestions_1 = require("../../../../exercises/utils/getDistinctQuestions");
6
- const intervals_1 = require("../../../../math/sets/intervals/intervals");
7
- const inequationNode_1 = require("../../../../tree/nodes/inequations/inequationNode");
8
- const numberNode_1 = require("../../../../tree/nodes/numbers/numberNode");
9
- const variableNode_1 = require("../../../../tree/nodes/variables/variableNode");
6
+ const infiniteNode_1 = require("../../../../tree/nodes/numbers/infiniteNode");
7
+ const intervalNode_1 = require("../../../../tree/nodes/sets/intervalNode");
10
8
  const shuffle_1 = require("../../../../utils/alea/shuffle");
9
+ const rebuildIdentifiers = (oldIds) => {
10
+ if (!!oldIds.intervalIdentifiers)
11
+ return oldIds;
12
+ const a = oldIds.intervalMin === "-infty" || oldIds.intervalMin === -Infinity
13
+ ? infiniteNode_1.MinusInfinityNode
14
+ : oldIds.intervalMin.toTree();
15
+ const b = oldIds.intervalMax === "infty" || oldIds.intervalMax === Infinity
16
+ ? infiniteNode_1.PlusInfinityNode
17
+ : oldIds.intervalMax.toTree();
18
+ const closure = oldIds.intervalClosure;
19
+ const interval = new intervalNode_1.IntervalNode(a, b, closure);
20
+ return { intervalIdentifiers: interval.toIdentifiers() };
21
+ };
22
+ const getInstruction = (identifiers) => {
23
+ const interval = intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.intervalIdentifiers);
24
+ return `Soit $x \\in ${interval.toTex()}$. Traduire cette appartenance en une inégalité.`;
25
+ };
26
+ const getAnswer = (identifiers) => {
27
+ const interval = intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.intervalIdentifiers);
28
+ const inequality = interval.toInequality();
29
+ const answer = inequality.toTex();
30
+ return answer;
31
+ };
11
32
  const getIntervalToInequalityQuestion = () => {
12
- const interval = intervals_1.IntervalConstructor.random();
13
- const inequalityString = interval.toInequality();
14
- const answer = inequalityString;
15
- const instruction = `Soit $x \\in ${interval.toTex()}$. Traduire cette appartenance en une inégalité.`;
33
+ const interval = intervalNode_1.IntervalNodeConstructor.random();
34
+ const identifiers = {
35
+ intervalIdentifiers: interval.toIdentifiers(),
36
+ };
16
37
  const question = {
17
- answer,
18
- instruction: instruction,
38
+ answer: getAnswer(identifiers),
39
+ instruction: getInstruction(identifiers),
19
40
  keys: ["x", "inf", "sup", "geq", "leq", "infty"],
20
41
  answerFormat: "tex",
21
- identifiers: {
22
- intervalMin: interval.min === -Infinity ? "-infty" : interval.min,
23
- intervalMax: interval.max === Infinity ? "infty" : interval.max,
24
- intervalClosure: interval.closure,
25
- },
42
+ identifiers,
26
43
  };
27
44
  return question;
28
45
  };
29
- const getPropositions = (n, { answer, intervalClosure, intervalMax, intervalMin }) => {
30
- const switchInclusion = (symbol) => {
31
- if (symbol === "\\le")
32
- return "<";
33
- if (symbol === "<")
34
- return "\\le";
35
- if (symbol === ">")
36
- return "\\ge";
37
- return ">";
38
- };
39
- const reverseInequality = (symbol) => {
40
- if (symbol === "\\le")
41
- return "\\ge";
42
- if (symbol === "<")
43
- return ">";
44
- if (symbol === ">")
45
- return "<";
46
- return "\\le";
47
- };
48
- const min = intervalMin === "-infty" ? -Infinity : intervalMin;
49
- const max = intervalMax === "infty" ? Infinity : intervalMax;
50
- const interval = new intervals_1.Interval(min.toTree(), max.toTree(), intervalClosure);
46
+ const getPropositions = (n, { answer, intervalIdentifiers }) => {
47
+ const interval = intervalNode_1.IntervalNodeConstructor.fromIdentifiers(intervalIdentifiers);
51
48
  const propositions = [];
52
49
  (0, exercise_1.addValidProp)(propositions, answer);
53
- const xNode = new variableNode_1.VariableNode("x");
54
- let wrongIneqs = [];
55
- if (interval.min === -Infinity) {
56
- wrongIneqs = [
57
- new inequationNode_1.InequationNode([xNode, new numberNode_1.NumberNode(interval.max)], switchInclusion(interval.rightInequalitySymbol)),
58
- new inequationNode_1.InequationNode([xNode, new numberNode_1.NumberNode(interval.max)], reverseInequality(switchInclusion(interval.rightInequalitySymbol))),
59
- new inequationNode_1.InequationNode([xNode, new numberNode_1.NumberNode(interval.max)], reverseInequality(interval.rightInequalitySymbol)),
60
- ];
61
- }
62
- else if (interval.max === Infinity) {
63
- wrongIneqs = [
64
- new inequationNode_1.InequationNode([xNode, new numberNode_1.NumberNode(interval.min)], switchInclusion(interval.leftInequalitySymbol)),
65
- new inequationNode_1.InequationNode([xNode, new numberNode_1.NumberNode(interval.min)], reverseInequality(switchInclusion(interval.leftInequalitySymbol))),
66
- new inequationNode_1.InequationNode([xNode, new numberNode_1.NumberNode(interval.min)], interval.leftInequalitySymbol),
67
- ];
68
- }
69
- else {
70
- wrongIneqs = [
71
- new inequationNode_1.InequationNode([new numberNode_1.NumberNode(interval.min), xNode, new numberNode_1.NumberNode(interval.max)], [
72
- switchInclusion(interval.leftInequalitySymbol),
73
- interval.rightInequalitySymbol,
74
- ]),
75
- new inequationNode_1.InequationNode([new numberNode_1.NumberNode(interval.min), xNode, new numberNode_1.NumberNode(interval.max)], [
76
- interval.leftInequalitySymbol,
77
- switchInclusion(interval.rightInequalitySymbol),
78
- ]),
79
- new inequationNode_1.InequationNode([new numberNode_1.NumberNode(interval.min), xNode, new numberNode_1.NumberNode(interval.max)], [
80
- switchInclusion(interval.leftInequalitySymbol),
81
- switchInclusion(interval.rightInequalitySymbol),
82
- ]),
83
- ];
84
- }
85
- wrongIneqs.forEach((ineq) => {
86
- (0, exercise_1.addWrongProp)(propositions, ineq.toTex());
87
- });
50
+ const ineq = interval.toInequality();
51
+ (0, exercise_1.tryToAddWrongProp)(propositions, ineq.toSwicthedStrictness().toTex());
52
+ (0, exercise_1.tryToAddWrongProp)(propositions, ineq.toSwitched().toTex());
53
+ (0, exercise_1.tryToAddWrongProp)(propositions, ineq.toSwitched().toSwicthedStrictness().toTex());
88
54
  return (0, shuffle_1.shuffle)(propositions);
89
55
  };
90
- const isAnswerValid = (ans, { intervalClosure, intervalMax, intervalMin }) => {
91
- const min = intervalMin === "-infty" ? -Infinity : intervalMin;
92
- const max = intervalMax === "infty" ? Infinity : intervalMax;
93
- const interval = new intervals_1.Interval(min.toTree(), max.toTree(), intervalClosure).toTree();
56
+ const isAnswerValid = (ans, { answer, intervalIdentifiers }) => {
57
+ const interval = intervalNode_1.IntervalNodeConstructor.fromIdentifiers(intervalIdentifiers);
94
58
  const inequality = interval.toInequality();
95
- const answer = inequality;
96
- const texs = answer.toAllValidTexs();
59
+ const texs = inequality.toAllValidTexs();
97
60
  return texs.includes(ans);
98
61
  };
99
62
  exports.intervalToInequality = {
@@ -109,4 +72,5 @@ exports.intervalToInequality = {
109
72
  getPropositions,
110
73
  isAnswerValid,
111
74
  subject: "Mathématiques",
75
+ rebuildIdentifiers,
112
76
  };
@@ -1,12 +1,8 @@
1
1
  import { Exercise } from "../../../../exercises/exercise";
2
- import { ClosureType } from "../../../../tree/nodes/sets/closure";
2
+ import { IntervalNodeIdentifiers } from "../../../../tree/nodes/sets/intervalNode";
3
3
  type Identifiers = {
4
- int1Min: number;
5
- int1Max: number;
6
- int1Closure: ClosureType;
7
- int2Min: number;
8
- int2Max: number;
9
- int2Closure: ClosureType;
4
+ int1Identifiers: IntervalNodeIdentifiers;
5
+ int2Identifiers: IntervalNodeIdentifiers;
10
6
  };
11
7
  export declare const intervalsIntersection: Exercise<Identifiers>;
12
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"intervalsIntersection.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/intervalsIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAW,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAQrE,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AA6EF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAevD,CAAC"}
1
+ {"version":3,"file":"intervalsIntersection.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/intervalsIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAYT,MAAM,0BAA0B,CAAC;AAYlC,OAAO,EAGL,uBAAuB,EAExB,MAAM,oCAAoC,CAAC;AAK5C,KAAK,WAAW,GAAG;IAOjB,eAAe,EAAE,uBAAuB,CAAC;IACzC,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAqJF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAgBvD,CAAC"}
@@ -3,17 +3,84 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.intervalsIntersection = void 0;
4
4
  const exercise_1 = require("../../../../exercises/exercise");
5
5
  const getDistinctQuestions_1 = require("../../../../exercises/utils/getDistinctQuestions");
6
- const intervals_1 = require("../../../../math/sets/intervals/intervals");
6
+ const infiniteNode_1 = require("../../../../tree/nodes/numbers/infiniteNode");
7
7
  const discreteSetNode_1 = require("../../../../tree/nodes/sets/discreteSetNode");
8
8
  const intervalNode_1 = require("../../../../tree/nodes/sets/intervalNode");
9
+ const discreteSetParser_1 = require("../../../../tree/parsers/discreteSetParser");
10
+ const intervalParser_1 = require("../../../../tree/parsers/intervalParser");
9
11
  const shuffle_1 = require("../../../../utils/alea/shuffle");
12
+ const rebuildIdentifiers = (oldIds) => {
13
+ if (!!oldIds.int1Identifiers)
14
+ return oldIds;
15
+ const a1 = oldIds.int1Min === "-infty" || oldIds.int2Min === -Infinity
16
+ ? infiniteNode_1.MinusInfinityNode
17
+ : oldIds.int1Min.toTree();
18
+ const b1 = oldIds.int1Max === "infty" || oldIds.int1Max === Infinity
19
+ ? infiniteNode_1.PlusInfinityNode
20
+ : oldIds.int1Max.toTree();
21
+ const closure1 = oldIds.int1Closure;
22
+ const interval1 = new intervalNode_1.IntervalNode(a1, b1, closure1);
23
+ const a2 = oldIds.int2Min === "-infty" || oldIds.int2Min === -Infinity
24
+ ? infiniteNode_1.MinusInfinityNode
25
+ : oldIds.int2Min.toTree();
26
+ const b2 = oldIds.int2Max === "infty" || oldIds.int2Max === Infinity
27
+ ? infiniteNode_1.PlusInfinityNode
28
+ : oldIds.int2Max.toTree();
29
+ const closure2 = oldIds.int2Closure;
30
+ const interval2 = new intervalNode_1.IntervalNode(a2, b2, closure2);
31
+ return {
32
+ int1Identifiers: interval1.toIdentifiers(),
33
+ int2Identifiers: interval2.toIdentifiers(),
34
+ };
35
+ };
36
+ const getInstruction = (identifiers) => {
37
+ const [int1, int2] = [
38
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.int1Identifiers),
39
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.int2Identifiers),
40
+ ];
41
+ return `Soit $I = ${int1.toTex()}$ et $J = ${int2.toTex()}$.
42
+
43
+ Déterminer $I\\cap J$.`;
44
+ };
45
+ const getAnswer = (identifiers) => {
46
+ const [int1, int2] = [
47
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.int1Identifiers),
48
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.int2Identifiers),
49
+ ];
50
+ const inter = int1.intersection(int2);
51
+ return inter.toTex();
52
+ };
53
+ const getCorrection = (identifiers) => {
54
+ const [int1, int2] = [
55
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.int1Identifiers),
56
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(identifiers.int2Identifiers),
57
+ ];
58
+ const inter = int1.intersection(int2);
59
+ const answer = inter.toTex();
60
+ return `$I$ contient les nombres ${int1.toText(true, false)}.
61
+
62
+ $J$ contient les nombres ${int2.toText(false, false)}.
63
+
64
+ ${(0, discreteSetNode_1.isDiscreteSetNode)(inter) && inter.elements.length === 0
65
+ ? `Il n'y a donc aucun nombre commun aux intervalles $I$ et $J$.`
66
+ : (0, discreteSetNode_1.isDiscreteSetNode)(inter) && inter.elements.length === 1
67
+ ? `Il n'y a donc qu'un nombre commun aux intervalles $I$ et $J$ : $${inter.elements[0].toTex()}$.`
68
+ : (0, intervalNode_1.isIntervalNode)(inter) &&
69
+ `Les nombres communs à $I$ et $J$ sont donc les nombres ${inter.toText(true, false)}.`}
70
+
71
+ Ainsi, $I\\cap J = ${answer}$`;
72
+ };
10
73
  const getIntervalsIntersectionQuestion = () => {
11
- const [int1, int2] = intervals_1.IntervalConstructor.differentRandoms(2);
74
+ const [int1, int2] = intervalNode_1.IntervalNodeConstructor.differentRandoms(2);
12
75
  const inter = int1.intersection(int2);
13
76
  const answer = inter.toTex();
77
+ const identifiers = {
78
+ int1Identifiers: int1.toIdentifiers(),
79
+ int2Identifiers: int2.toIdentifiers(),
80
+ };
14
81
  const question = {
15
- answer,
16
- instruction: `Soit $I = ${int1.toTex()}$ et $J = ${int2.toTex()}$. Déterminer $I\\cap J$.`,
82
+ answer: getAnswer(identifiers),
83
+ instruction: getInstruction(identifiers),
17
84
  keys: [
18
85
  "infty",
19
86
  "varnothing",
@@ -26,44 +93,46 @@ const getIntervalsIntersectionQuestion = () => {
26
93
  "rbrace",
27
94
  ],
28
95
  answerFormat: "tex",
29
- identifiers: {
30
- int1Closure: int1.closure,
31
- int1Max: int1.max,
32
- int1Min: int1.min,
33
- int2Closure: int2.closure,
34
- int2Max: int2.max,
35
- int2Min: int2.min,
36
- },
96
+ identifiers,
37
97
  hint: `Détermine l'ensemble des nombres qui appartiennent à la fois à $I$ et à $J$.`,
38
- correction: `$I$ contient les nombres ${int1.toTree().toText(true, false)}.
39
-
40
- $J$ contient les nombres ${int2.toTree().toText(false, false)}.
41
-
42
- ${(0, discreteSetNode_1.isDiscreteSetNode)(inter) && inter.elements.length === 0
43
- ? `Il n'y a donc aucun nombre commun aux intervalles $I$ et $J$.`
44
- : (0, discreteSetNode_1.isDiscreteSetNode)(inter) && inter.elements.length === 1
45
- ? `Il n'y a donc qu'un nombre commun aux intervalles $I$ et $J$ : $${inter.elements[0].toTex()}$.`
46
- : (0, intervalNode_1.isIntervalNode)(inter) &&
47
- `Les nombres communs à $I$ et $J$ sont donc les nombres ${inter.toText(true, false)}.`}
48
-
49
- Ainsi, $I\\cap J = ${answer}$`,
98
+ correction: getCorrection(identifiers),
50
99
  };
51
100
  return question;
52
101
  };
53
- const getPropositions = (n, { answer, int1Closure, int1Max, int1Min, int2Closure, int2Max, int2Min }) => {
102
+ const getPropositions = (n, { answer, int1Identifiers, int2Identifiers }) => {
54
103
  const propositions = [];
104
+ const [int1, int2] = [
105
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(int1Identifiers),
106
+ intervalNode_1.IntervalNodeConstructor.fromIdentifiers(int2Identifiers),
107
+ ];
55
108
  (0, exercise_1.addValidProp)(propositions, answer);
56
- const int1 = new intervals_1.Interval(int1Min.toTree(), int1Max.toTree(), int1Closure);
57
- const int2 = new intervals_1.Interval(int2Min.toTree(), int2Max.toTree(), int2Closure);
58
- (0, exercise_1.tryToAddWrongProp)(propositions, int1.union(int2).tex);
109
+ (0, exercise_1.tryToAddWrongProp)(propositions, int1.union(int2).toTex());
59
110
  while (propositions.length < n) {
60
- const wrongAnswer = intervals_1.IntervalConstructor.random().tex;
111
+ const wrongAnswer = intervalNode_1.IntervalNodeConstructor.random().toTex();
61
112
  (0, exercise_1.tryToAddWrongProp)(propositions, wrongAnswer);
62
113
  }
63
114
  return (0, shuffle_1.shuffle)(propositions);
64
115
  };
65
- const isAnswerValid = (ans, { answer }) => {
66
- return ans === answer;
116
+ const isAnswerValid = (ans, { answer, int1Identifiers, int2Identifiers }) => {
117
+ try {
118
+ if (answer === "\\varnothing")
119
+ return ans === answer;
120
+ if (answer.includes("\\{")) {
121
+ const setParsed = (0, discreteSetParser_1.discreteSetParser)(ans);
122
+ if (!setParsed)
123
+ return false;
124
+ return setParsed.simplify().toTex() === answer;
125
+ }
126
+ else {
127
+ const parsed = (0, intervalParser_1.intervalParser)(ans);
128
+ if (!parsed)
129
+ return false;
130
+ return parsed.simplify().toTex() === answer;
131
+ }
132
+ }
133
+ catch (err) {
134
+ return false;
135
+ }
67
136
  };
68
137
  exports.intervalsIntersection = {
69
138
  id: "intervalsIntersection",
@@ -79,4 +148,5 @@ exports.intervalsIntersection = {
79
148
  isAnswerValid,
80
149
  subject: "Mathématiques",
81
150
  hasHintAndCorrection: true,
151
+ rebuildIdentifiers,
82
152
  };
@@ -1,12 +1,8 @@
1
1
  import { Exercise } from "../../../../exercises/exercise";
2
- import { ClosureType } from "../../../../tree/nodes/sets/closure";
2
+ import { IntervalNodeIdentifiers } from "../../../../tree/nodes/sets/intervalNode";
3
3
  type Identifiers = {
4
- int1Min: number;
5
- int1Max: number;
6
- int1Closure: ClosureType;
7
- int2Min: number;
8
- int2Max: number;
9
- int2Closure: ClosureType;
4
+ int1Identifiers: IntervalNodeIdentifiers;
5
+ int2Identifiers: IntervalNodeIdentifiers;
10
6
  };
11
7
  export declare const intervalsUnion: Exercise<Identifiers>;
12
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"intervalsUnion.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/intervalsUnion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQT,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AA6CF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAchD,CAAC"}
1
+ {"version":3,"file":"intervalsUnion.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/sets/intervals/intervalsUnion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAGL,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAI5C,KAAK,WAAW,GAAG;IAOjB,eAAe,EAAE,uBAAuB,CAAC;IACzC,eAAe,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAkGF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAehD,CAAC"}