math-exercises 3.0.97 → 3.0.98

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 (81) hide show
  1. package/lib/exercises/math/calculLitteral/inequations/index.d.ts +2 -0
  2. package/lib/exercises/math/calculLitteral/inequations/index.d.ts.map +1 -1
  3. package/lib/exercises/math/calculLitteral/inequations/index.js +2 -0
  4. package/lib/exercises/math/calculLitteral/inequations/inverseInequality.d.ts.map +1 -1
  5. package/lib/exercises/math/calculLitteral/inequations/inverseInequality.js +83 -5
  6. package/lib/exercises/math/calculLitteral/inequations/inverseInequalityWithGraph.d.ts +10 -0
  7. package/lib/exercises/math/calculLitteral/inequations/inverseInequalityWithGraph.d.ts.map +1 -0
  8. package/lib/exercises/math/calculLitteral/inequations/inverseInequalityWithGraph.js +220 -0
  9. package/lib/exercises/math/conversion/hoursToDecimal.js +1 -1
  10. package/lib/exercises/math/functions/affines/leadingCoefficient.js +1 -1
  11. package/lib/exercises/math/functions/basics/findZeroesProductQuotient.js +1 -1
  12. package/lib/exercises/math/functions/basics/graphicInequation.d.ts.map +1 -1
  13. package/lib/exercises/math/functions/basics/graphicInequation.js +37 -5
  14. package/lib/exercises/math/functions/basics/inverseImageFunctionTable.js +1 -1
  15. package/lib/exercises/math/functions/basics/isPointOnFunction.d.ts.map +1 -1
  16. package/lib/exercises/math/functions/basics/isPointOnFunction.js +1 -1
  17. package/lib/exercises/math/functions/basics/twoFunctionsInequation.d.ts.map +1 -1
  18. package/lib/exercises/math/functions/basics/twoFunctionsInequation.js +34 -0
  19. package/lib/exercises/math/functions/basics/valueTableFromGraph.d.ts.map +1 -1
  20. package/lib/exercises/math/functions/basics/valueTableFromGraph.js +1 -1
  21. package/lib/exercises/math/functions/inverse/index.d.ts +1 -0
  22. package/lib/exercises/math/functions/inverse/index.d.ts.map +1 -1
  23. package/lib/exercises/math/functions/inverse/index.js +1 -0
  24. package/lib/exercises/math/functions/inverse/solveInverseEquation.d.ts +8 -0
  25. package/lib/exercises/math/functions/inverse/solveInverseEquation.d.ts.map +1 -0
  26. package/lib/exercises/math/functions/inverse/solveInverseEquation.js +147 -0
  27. package/lib/exercises/math/functions/sign/affineProductSignTable.js +1 -1
  28. package/lib/exercises/math/functions/sign/affineProductSignTableThirdLine.d.ts +9 -0
  29. package/lib/exercises/math/functions/sign/affineProductSignTableThirdLine.d.ts.map +1 -0
  30. package/lib/exercises/math/functions/sign/affineProductSignTableThirdLine.js +201 -0
  31. package/lib/exercises/math/functions/sign/affineSignTable.js +1 -1
  32. package/lib/exercises/math/functions/sign/index.d.ts +1 -0
  33. package/lib/exercises/math/functions/sign/index.d.ts.map +1 -1
  34. package/lib/exercises/math/functions/sign/index.js +1 -0
  35. package/lib/exercises/math/functions/square/index.d.ts +2 -0
  36. package/lib/exercises/math/functions/square/index.d.ts.map +1 -1
  37. package/lib/exercises/math/functions/square/index.js +2 -1
  38. package/lib/exercises/math/functions/square/squareFunctionInequationWithGraph.d.ts +9 -0
  39. package/lib/exercises/math/functions/square/squareFunctionInequationWithGraph.d.ts.map +1 -0
  40. package/lib/exercises/math/functions/square/squareFunctionInequationWithGraph.js +151 -0
  41. package/lib/exercises/math/functions/square/squareImageIntervalWithGraph.d.ts.map +1 -1
  42. package/lib/exercises/math/functions/square/squareImageIntervalWithGraph.js +19 -3
  43. package/lib/exercises/math/functions/variations/index.d.ts +4 -0
  44. package/lib/exercises/math/functions/variations/index.d.ts.map +1 -1
  45. package/lib/exercises/math/functions/variations/index.js +4 -0
  46. package/lib/exercises/math/functions/variations/readExtremaOnGraph.d.ts +14 -0
  47. package/lib/exercises/math/functions/variations/readExtremaOnGraph.d.ts.map +1 -0
  48. package/lib/exercises/math/functions/variations/readExtremaOnGraph.js +215 -0
  49. package/lib/exercises/math/functions/variations/readVarOnGraph.d.ts +9 -0
  50. package/lib/exercises/math/functions/variations/readVarOnGraph.d.ts.map +1 -0
  51. package/lib/exercises/math/functions/variations/readVarOnGraph.js +128 -0
  52. package/lib/exercises/math/functions/variations/readVarOnGraph2.d.ts +9 -0
  53. package/lib/exercises/math/functions/variations/readVarOnGraph2.d.ts.map +1 -0
  54. package/lib/exercises/math/functions/variations/readVarOnGraph2.js +172 -0
  55. package/lib/exercises/math/functions/variations/varTableExtremaReading.d.ts +4 -1
  56. package/lib/exercises/math/functions/variations/varTableExtremaReading.d.ts.map +1 -1
  57. package/lib/exercises/math/functions/variations/varTableExtremaReading.js +108 -42
  58. package/lib/exercises/math/functions/variations/varTableFromSentences.d.ts +7 -0
  59. package/lib/exercises/math/functions/variations/varTableFromSentences.d.ts.map +1 -1
  60. package/lib/exercises/math/functions/variations/varTableFromSentences.js +167 -137
  61. package/lib/exercises/math/geometry/areas/triangleArea.js +1 -1
  62. package/lib/exercises/math/probaStat/basicStats/calculateFrequency.js +1 -1
  63. package/lib/exercises/math/probaStat/binomial/binomialInequation.js +2 -2
  64. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.js +1 -1
  65. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.js +1 -1
  66. package/lib/geogebra/colors.d.ts +0 -1
  67. package/lib/geogebra/colors.d.ts.map +1 -1
  68. package/lib/geogebra/colors.js +2 -2
  69. package/lib/index.d.ts +42 -1
  70. package/lib/index.d.ts.map +1 -1
  71. package/lib/math/inequations/inequation.d.ts +1 -0
  72. package/lib/math/inequations/inequation.d.ts.map +1 -1
  73. package/lib/math/inequations/inequation.js +12 -0
  74. package/lib/tree/nodes/operators/addNode.js +0 -1
  75. package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
  76. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  77. package/lib/tree/nodes/sets/intervalNode.js +3 -0
  78. package/lib/tree/parsers/intervalParser.d.ts +2 -0
  79. package/lib/tree/parsers/intervalParser.d.ts.map +1 -1
  80. package/lib/tree/parsers/intervalParser.js +2 -1
  81. package/package.json +1 -1
@@ -2,8 +2,10 @@ export * from "./firstDegreeInequationsType0.js";
2
2
  export * from "./firstDegreeInequationsType1.js";
3
3
  export * from "./firstDegreeInequationsType2.js";
4
4
  export * from "./firstDegreeInequationsType3.js";
5
+ export * from "./inverseInequality.js";
5
6
  export * from "./squareFunctionInequation.js";
6
7
  export * from "./inequationsSign.js";
7
8
  export * from "./minNumberInequality.js";
8
9
  export * from "./isInequalityTrue.js";
10
+ export * from "./inverseInequalityWithGraph.js";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/inequations/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/inequations/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC"}
@@ -2,7 +2,9 @@ export * from "./firstDegreeInequationsType0.js";
2
2
  export * from "./firstDegreeInequationsType1.js";
3
3
  export * from "./firstDegreeInequationsType2.js";
4
4
  export * from "./firstDegreeInequationsType3.js";
5
+ export * from "./inverseInequality.js";
5
6
  export * from "./squareFunctionInequation.js";
6
7
  export * from "./inequationsSign.js";
7
8
  export * from "./minNumberInequality.js";
8
9
  export * from "./isInequalityTrue.js";
10
+ export * from "./inverseInequalityWithGraph.js";
@@ -1 +1 @@
1
- {"version":3,"file":"inverseInequality.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/inequations/inverseInequality.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,gBAAgB,EAGjB,MAAM,sCAAsC,CAAC;AAiB9C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAgJF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAcnD,CAAC"}
1
+ {"version":3,"file":"inverseInequality.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/inequations/inverseInequality.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,gBAAgB,EAGjB,MAAM,sCAAsC,CAAC;AAkB9C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAkOF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAenD,CAAC"}
@@ -6,11 +6,13 @@ import { InequationSolutionNode } from "../../../../tree/nodes/inequations/inequ
6
6
  import { MinusInfinityNode, PlusInfinityNode, } from "../../../../tree/nodes/numbers/infiniteNode.js";
7
7
  import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
8
8
  import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
9
+ import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
9
10
  import { ClosureType } from "../../../../tree/nodes/sets/closure.js";
10
11
  import { IntervalNode } from "../../../../tree/nodes/sets/intervalNode.js";
11
12
  import { UnionIntervalNode } from "../../../../tree/nodes/sets/unionIntervalNode.js";
12
13
  import { unionIntervalParser } from "../../../../tree/parsers/unionIntervalParser.js";
13
14
  import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
15
+ import { alignTex } from "../../../../utils/latex/alignTex.js";
14
16
  const getPropositions = (n, { answer, k, inequationSymbol }) => {
15
17
  const propositions = [];
16
18
  addValidProp(propositions, answer);
@@ -33,9 +35,9 @@ const getAnswer = (identifiers) => {
33
35
  if (symbol.isSup) {
34
36
  // Pour l'inegalite 1/x > k on a en solution [0, 1/k]
35
37
  const interval = new IntervalNode(new NumberNode(0), frac(1, k).simplify(),
36
- // Toujours ferme sur 0
38
+ // Toujours ouvert sur 0
37
39
  // Pour 1/k, ouvert si <, sinon ferme pour <=
38
- isStrict ? ClosureType.FO : ClosureType.FF);
40
+ isStrict ? ClosureType.OO : ClosureType.OF);
39
41
  return new InequationSolutionNode(interval).toTex();
40
42
  }
41
43
  else {
@@ -70,7 +72,11 @@ const getAnswer = (identifiers) => {
70
72
  };
71
73
  const getInstruction = (identifiers) => {
72
74
  const { k, inequationSymbol } = identifiers;
73
- return `Résoudre $${frac(1, "x").toTex()} ${inequationSymbol} ${k}$.`;
75
+ return `Résoudre, pour $x \\neq 0$ :
76
+
77
+ $$
78
+ ${frac(1, "x").toTex()} ${inequationSymbol} ${k}
79
+ $$`;
74
80
  };
75
81
  const getKeys = (identifiers) => {
76
82
  return ["S", "equal", "lbracket", "rbracket", "semicolon", "infty", "cup"];
@@ -80,7 +86,7 @@ const isAnswerValid = (ans, { answer }) => {
80
86
  const parsed = unionIntervalParser(ans.replaceAll("S", "").replaceAll("=", ""));
81
87
  if (!parsed)
82
88
  return false;
83
- return "S=\\ " + parsed.simplify().toTex() === answer;
89
+ return ("S=\\ " + parsed.simplify({ decimalToFractions: true }).toTex() === answer);
84
90
  }
85
91
  catch (err) {
86
92
  return handleVEAError(err);
@@ -95,18 +101,89 @@ const getInverseInequalityQuestion = (ops) => {
95
101
  };
96
102
  return getQuestionFromIdentifiers(identifiers);
97
103
  };
104
+ const getHint = (identifiers) => {
105
+ return `Résous l'inéquation en considérant que $x$ est négatif, puis en considérant qu'il est positif.`;
106
+ };
107
+ const getCorrection = (identifiers) => {
108
+ const { k, inequationSymbol } = identifiers;
109
+ const ineqSign = new InequationSymbol(inequationSymbol);
110
+ const interval = new IntervalNode(MinusInfinityNode, new NumberNode(0), ClosureType.OO);
111
+ const isSup = ineqSign.isSup;
112
+ const kPos = k > 0;
113
+ let xNegCorr = ``;
114
+ let xPosCorr = ``;
115
+ const statement = `${frac(1, "x").toTex()} ${inequationSymbol} ${k}`;
116
+ if (isSup) {
117
+ if (kPos) {
118
+ xNegCorr = `Si $x$ est négatif, alors $\\frac{1}{x}$ est négatif, donc il n'y a pas de solution.`;
119
+ xPosCorr = `Si $x$ est positif, alors :
120
+
121
+ ${alignTex([
122
+ [statement, "\\iff", `1 ${inequationSymbol} ${multiply(k, "x").toTex()}`],
123
+ ["", "\\iff", `x ${ineqSign.reversed()} ${frac(1, k).simplify().toTex()}`],
124
+ ])}`;
125
+ //x pos : x>1/k
126
+ }
127
+ else {
128
+ //x nég: x<-1/k
129
+ xPosCorr = `Si $x$ est positif, alors $\\frac{1}{x}$ est positif, donc tous les nombres positifs sont solutions de cette inéquation.`;
130
+ xNegCorr = `Si $x$ est négatif, alors :
131
+
132
+ ${alignTex([
133
+ [statement, "\\iff", `1 ${ineqSign.reversed()} ${multiply(k, "x").toTex()}`],
134
+ ["", "\\iff", `x ${ineqSign.reversed()} ${frac(1, k).simplify().toTex()}`],
135
+ ])}`;
136
+ }
137
+ }
138
+ else {
139
+ if (kPos) {
140
+ xNegCorr = `Si $x$ est négatif, alors $\\frac{1}{x}$ est négatif, donc tous les nombres négatifs sont solutions de cette inéquation.`;
141
+ xPosCorr = `Si $x$ est positif, alors :
142
+
143
+ ${alignTex([
144
+ [statement, "\\iff", `1 ${inequationSymbol} ${multiply(k, "x").toTex()}`],
145
+ ["", "\\iff", `x ${ineqSign.reversed()} ${frac(1, k).simplify().toTex()}`],
146
+ ])}`;
147
+ //x pos : x>1/k
148
+ }
149
+ else {
150
+ //x nég: x<-1/k
151
+ xPosCorr = `Si $x$ est positif, alors $\\frac{1}{x}$ est positif, donc il n'y a pas de solution.`;
152
+ xNegCorr = `Si $x$ est négatif, alors :
153
+
154
+ ${alignTex([
155
+ [statement, "\\iff", `1 ${ineqSign.reversed()} ${multiply(k, "x").toTex()}`],
156
+ ["", "\\iff", `x ${ineqSign.reversed()} ${frac(1, k).simplify().toTex()}`],
157
+ ])}`;
158
+ }
159
+ }
160
+ return `On multiplie les deux membres de l'inéquation par $x$.
161
+
162
+ ${xPosCorr}
163
+
164
+ ${xNegCorr}
165
+
166
+ Ainsi, la solution de l'inéquation :
167
+
168
+ $$
169
+ ${getAnswer(identifiers)}
170
+ $$
171
+ `;
172
+ };
98
173
  const getQuestionFromIdentifiers = (identifiers) => {
99
174
  return {
100
175
  answer: getAnswer(identifiers),
101
176
  instruction: getInstruction(identifiers),
102
177
  keys: getKeys(identifiers),
178
+ hint: getHint(identifiers),
179
+ correction: getCorrection(identifiers),
103
180
  answerFormat: "tex",
104
181
  identifiers,
105
182
  };
106
183
  };
107
184
  export const inverseInequality = {
108
185
  id: "inverseInequality",
109
- label: "Résoudre $\\frac{1}{x} < k$",
186
+ label: "Résoudre une inéquation du type $\\frac{1}{x} < k$",
110
187
  isSingleStep: true,
111
188
  generator: (nb, opts) => getDistinctQuestions(() => getInverseInequalityQuestion(opts), nb),
112
189
  qcmTimer: 60,
@@ -117,4 +194,5 @@ export const inverseInequality = {
117
194
  getInstruction,
118
195
  getAnswer,
119
196
  getQuestionFromIdentifiers,
197
+ hasHintAndCorrection: true,
120
198
  };
@@ -0,0 +1,10 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { InegalitySymbols } from "../../../../math/inequations/inequation.js";
3
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
4
+ type Identifiers = {
5
+ k: NodeIdentifiers;
6
+ inequationSymbol: InegalitySymbols;
7
+ };
8
+ export declare const inverseInequalityWithGraph: Exercise<Identifiers>;
9
+ export {};
10
+ //# sourceMappingURL=inverseInequalityWithGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inverseInequalityWithGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calculLitteral/inequations/inverseInequalityWithGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EACL,gBAAgB,EAGjB,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAiB7C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,eAAe,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAgQF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,WAAW,CAgB5D,CAAC"}
@@ -0,0 +1,220 @@
1
+ import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
2
+ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
3
+ import { randomColor } from "../../../../geogebra/colors.js";
4
+ import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
5
+ import { InequationSymbol, InequationSymbolConstructor, } from "../../../../math/inequations/inequation.js";
6
+ import { RationalConstructor } from "../../../../math/numbers/rationals/rational.js";
7
+ import { randint } from "../../../../math/utils/random/randint.js";
8
+ import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
9
+ import { InequationSolutionNode } from "../../../../tree/nodes/inequations/inequationSolutionNode.js";
10
+ import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
11
+ import { MinusInfinityNode, PlusInfinityNode, } from "../../../../tree/nodes/numbers/infiniteNode.js";
12
+ import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
13
+ import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
14
+ import { ClosureType } from "../../../../tree/nodes/sets/closure.js";
15
+ import { IntervalNode } from "../../../../tree/nodes/sets/intervalNode.js";
16
+ import { UnionIntervalNode } from "../../../../tree/nodes/sets/unionIntervalNode.js";
17
+ import { unionIntervalParser } from "../../../../tree/parsers/unionIntervalParser.js";
18
+ import { coinFlip } from "../../../../utils/alea/coinFlip.js";
19
+ import { random } from "../../../../utils/alea/random.js";
20
+ import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
21
+ const getPropositions = (n, { answer, k, inequationSymbol }) => {
22
+ const propositions = [];
23
+ addValidProp(propositions, answer);
24
+ const kNode = reifyAlgebraic(k);
25
+ tryToAddWrongProp(propositions, getAnswer({ k: opposite(kNode).toIdentifiers(), inequationSymbol }));
26
+ tryToAddWrongProp(propositions, getAnswer({
27
+ k,
28
+ inequationSymbol: new InequationSymbol(inequationSymbol).reversed(),
29
+ }));
30
+ tryToAddWrongProp(propositions, getAnswer({
31
+ k,
32
+ inequationSymbol: new InequationSymbol(inequationSymbol).strictnessToggled(),
33
+ }));
34
+ return shuffleProps(propositions, n);
35
+ };
36
+ const getAnswer = (identifiers) => {
37
+ const { k, inequationSymbol } = identifiers;
38
+ const symbol = new InequationSymbol(inequationSymbol);
39
+ const isStrict = symbol.isStrict;
40
+ const kNode = reifyAlgebraic(k);
41
+ const kEv = kNode.evaluate();
42
+ if (kEv > 0) {
43
+ if (symbol.isSup) {
44
+ // Pour l'inegalite 1/x > k on a en solution [0, 1/k]
45
+ const interval = new IntervalNode(new NumberNode(0), frac(1, kNode).simplify(),
46
+ // Toujours ouvert sur 0
47
+ // Pour 1/k, ouvert si <, sinon ferme pour <=
48
+ isStrict ? ClosureType.OO : ClosureType.OF);
49
+ return new InequationSolutionNode(interval).toTex();
50
+ }
51
+ else {
52
+ // Pour l'inegalite 1/x < k on a en solution ]-inf, 0[ u [1/k, +inf]
53
+ const intervalNeg = new IntervalNode(MinusInfinityNode, new NumberNode(0), ClosureType.OO);
54
+ const intervalSup = new IntervalNode(frac(1, kNode).simplify(), PlusInfinityNode,
55
+ // Pour 1/k, ouvert si <, sinon ferme pour <=
56
+ // Toujours ouvert sur +inf
57
+ isStrict ? ClosureType.OO : ClosureType.FO);
58
+ return new InequationSolutionNode(new UnionIntervalNode([intervalNeg, intervalSup])).toTex();
59
+ }
60
+ }
61
+ else {
62
+ if (symbol.isSup) {
63
+ // Pour 1/x > k on a en solution ]-inf, 1/k) u ]0, +inf[
64
+ const intervalNeg = new IntervalNode(MinusInfinityNode,
65
+ // Pour 1/k, ouvert si <, sinon ferme pour <=
66
+ // Toujours ouvert sur +inf
67
+ frac(1, kNode).simplify(), isStrict ? ClosureType.OO : ClosureType.OF);
68
+ const intervalSup = new IntervalNode(new NumberNode(0), PlusInfinityNode, ClosureType.OO);
69
+ return new InequationSolutionNode(new UnionIntervalNode([intervalNeg, intervalSup])).toTex();
70
+ }
71
+ else {
72
+ // Pour 1/x < k on a en solution (1/k, 0[
73
+ const interval = new IntervalNode(frac(1, kNode).simplify(), new NumberNode(0),
74
+ // Pour 1/k, ouvert si <, sinon ferme pour <=
75
+ // Toujours ouvert sur 0
76
+ isStrict ? ClosureType.OO : ClosureType.FO);
77
+ return new InequationSolutionNode(interval).toTex();
78
+ }
79
+ }
80
+ };
81
+ const getInstruction = (identifiers) => {
82
+ const { k, inequationSymbol } = identifiers;
83
+ return `On donne ci-dessous la courbe représentative de la fonction inverse $f(x)= \\frac{1}{x}$.
84
+
85
+ Résoudre, pour $x \\neq 0$ :
86
+
87
+ $$
88
+ ${frac(1, "x").toTex()} ${inequationSymbol} ${reifyAlgebraic(k).toTex()}
89
+ $$`;
90
+ };
91
+ const getKeys = (identifiers) => {
92
+ return ["S", "equal", "lbracket", "rbracket", "semicolon", "infty", "cup"];
93
+ };
94
+ const isAnswerValid = (ans, { answer }) => {
95
+ try {
96
+ const parsed = unionIntervalParser(ans.replaceAll("S", "").replaceAll("=", ""));
97
+ if (!parsed)
98
+ return false;
99
+ return ("S=\\ " + parsed.simplify({ decimalToFractions: true }).toTex() === answer);
100
+ }
101
+ catch (err) {
102
+ return handleVEAError(err);
103
+ }
104
+ };
105
+ const getGGBOptions = (identifiers) => {
106
+ const { inequationSymbol, k } = identifiers;
107
+ const ggb = new GeogebraConstructor({
108
+ commands: [
109
+ `f(x) = 1/x`,
110
+ `SetColor(f, "${randomColor()}")`,
111
+ `SetFixed(f, true)`,
112
+ ],
113
+ lockedAxesRatio: false,
114
+ });
115
+ const kNode = reifyAlgebraic(k);
116
+ const kEv = kNode.evaluate();
117
+ return ggb.getOptions({
118
+ coords: [
119
+ Math.min(-5, Math.abs(1 / kEv) - 2),
120
+ Math.max(5, Math.abs(1 / kEv) + 2),
121
+ -Math.abs(kEv) - 2,
122
+ Math.abs(kEv) + 2,
123
+ ],
124
+ });
125
+ };
126
+ const getInverseInequalityQuestion = (ops) => {
127
+ const k = coinFlip()
128
+ ? RationalConstructor.randomIrreductibleWithSign().toTree()
129
+ : (random([-1, 1]) * 2 ** randint(0, 3) * 5 ** randint(0, 3)).toTree();
130
+ const inequationSymbol = InequationSymbolConstructor.random();
131
+ const identifiers = {
132
+ k: k.toIdentifiers(),
133
+ inequationSymbol: inequationSymbol.symbol,
134
+ };
135
+ return getQuestionFromIdentifiers(identifiers);
136
+ };
137
+ const getHint = (identifiers) => {
138
+ const { inequationSymbol, k } = identifiers;
139
+ const kNode = reifyAlgebraic(k);
140
+ return `Détermine l'antécédent de $${kNode.toTex()}$ par la fonction inverse.
141
+
142
+ Puis, utilise le graphique pour déterminer la solution de l'inéquation.`;
143
+ };
144
+ const getCorrection = (identifiers) => {
145
+ const { k, inequationSymbol } = identifiers;
146
+ const ineqSign = new InequationSymbol(inequationSymbol);
147
+ const interval = new IntervalNode(MinusInfinityNode, new NumberNode(0), ClosureType.OO);
148
+ const isSup = ineqSign.isSup;
149
+ const kNode = reifyAlgebraic(k);
150
+ const kEv = kNode.evaluate();
151
+ const kPos = kEv > 0;
152
+ let corr = "";
153
+ if (isSup) {
154
+ if (kPos) {
155
+ corr = `tout nombre $x$ positif tel que $x ${ineqSign.reversed()} ${frac(1, kNode)
156
+ .simplify()
157
+ .toTex()}$ est une solution de l'inéquation.`;
158
+ }
159
+ else {
160
+ corr = `tout nombre $x$ positif est solution de l'inéquation, et tout nombre $x$ négatif tel que $x ${ineqSign.reversed()} ${frac(1, kNode)
161
+ .simplify()
162
+ .toTex()}$ est également une solution.`;
163
+ }
164
+ }
165
+ else {
166
+ if (kPos) {
167
+ corr = `tout nombre $x$ négatif est solution de l'inéquation, et tout nombre $x$ positif tel que $x ${ineqSign.reversed()} ${frac(1, kNode)
168
+ .simplify()
169
+ .toTex()}$ est également une solution.`;
170
+ }
171
+ else {
172
+ //x nég: x<-1/k
173
+ corr = `tout nombre $x$ négatif tel que $x ${ineqSign.reversed()} ${frac(1, kNode)
174
+ .simplify()
175
+ .toTex()}$ est une solution de l'inéquation.`;
176
+ }
177
+ }
178
+ const statement = `${frac(1, "x").toTex()} ${inequationSymbol} ${k}`;
179
+ return `On détermine l'antécédent de $${kNode.toTex()}$ par la fonction inverse :
180
+
181
+ $$
182
+ \\frac{1}{x} = ${kNode.toTex()} \\iff x = ${frac(1, kNode).simplify().toTex()}
183
+ $$
184
+
185
+ Puis, d'après le graphique, on voit que ${corr}
186
+
187
+ Ainsi, la solution de l'inéquation est :
188
+
189
+ $$
190
+ ${getAnswer(identifiers)}
191
+ $$`;
192
+ };
193
+ const getQuestionFromIdentifiers = (identifiers) => {
194
+ return {
195
+ answer: getAnswer(identifiers),
196
+ instruction: getInstruction(identifiers),
197
+ keys: getKeys(identifiers),
198
+ hint: getHint(identifiers),
199
+ correction: getCorrection(identifiers),
200
+ answerFormat: "tex",
201
+ identifiers,
202
+ ggbOptions: getGGBOptions(identifiers),
203
+ };
204
+ };
205
+ export const inverseInequalityWithGraph = {
206
+ id: "inverseInequalityWithGraph",
207
+ label: "Résoudre une inéquation du type $\\frac{1}{x} < k$ (avec graphique)",
208
+ isSingleStep: true,
209
+ generator: (nb, opts) => getDistinctQuestions(() => getInverseInequalityQuestion(opts), nb),
210
+ qcmTimer: 60,
211
+ freeTimer: 60,
212
+ getPropositions,
213
+ isAnswerValid,
214
+ subject: "Mathématiques",
215
+ getInstruction,
216
+ getAnswer,
217
+ getQuestionFromIdentifiers,
218
+ hasHintAndCorrection: true,
219
+ hasGeogebra: true,
220
+ };
@@ -21,7 +21,7 @@ $$
21
21
  ${durationTex}
22
22
  $$
23
23
 
24
- Arrondir ${isDecimalToHours ? "à la minute près" : "au centième près"}.`;
24
+ Arrondir ${isDecimalToHours ? "à la minute" : "au centième"}.`;
25
25
  };
26
26
  const getAnswer = (identifiers) => {
27
27
  const { dec, isDecimalToHours } = identifiers;
@@ -127,7 +127,7 @@ const options = [
127
127
  export const leadingCoefficient = {
128
128
  id: "leadingCoefficient",
129
129
  connector: "=",
130
- label: "Lire le coefficient directeur d'une droite",
130
+ label: "Lire graphiquement le coefficient directeur d'une droite",
131
131
  isSingleStep: false,
132
132
  generator: (nb, opts) => getDistinctQuestions(() => getLeadingCoefficientQuestion(opts), nb),
133
133
  qcmTimer: 60,
@@ -196,7 +196,7 @@ const getQuestionFromIdentifiers = (identifiers) => {
196
196
  };
197
197
  export const findZeroesProductQuotient = {
198
198
  id: "findZeroesProductQuotient",
199
- label: "Déterminer la ou les valeur d'annulation d'une fonction par le calcul",
199
+ label: "Déterminer la ou les valeurs d'annulation d'une fonction par le calcul",
200
200
  isSingleStep: true,
201
201
  generator: (nb, opts) => getDistinctQuestions(() => getFindZeroesProductQuotientQuestion(opts), nb),
202
202
  qcmTimer: 60,
@@ -1 +1 @@
1
- {"version":3,"file":"graphicInequation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/graphicInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAQ/D,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;CAC7D,CAAC;AA+NF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAgBnD,CAAC"}
1
+ {"version":3,"file":"graphicInequation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/graphicInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAQ/D,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;CAC7D,CAAC;AAiQF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAgBnD,CAAC"}
@@ -113,10 +113,42 @@ const getGraphicInequationQuestion = () => {
113
113
  return getQuestionFromIdentifiers(identifiers);
114
114
  };
115
115
  const getHint = (identifiers) => {
116
- return ``;
116
+ const { intervals, isAskingSup, isStrict, splinePoints, yValue } = identifiers;
117
+ const word = isAskingSup
118
+ ? isStrict
119
+ ? "strictement supérieure"
120
+ : "supérieure"
121
+ : isStrict
122
+ ? "strictement inférieure"
123
+ : "inférieure";
124
+ return `Lit toutes les valeurs de $x$ pour lesquelles $f(x)$ est ${word} à $${yValue.frenchify()}$.`;
117
125
  };
118
126
  const getCorrection = (identifiers) => {
119
- return ``;
127
+ //trace droit y = y, lit x sous
128
+ const { intervals, isAskingSup, isStrict, splinePoints, yValue } = identifiers;
129
+ const word = isAskingSup
130
+ ? isStrict
131
+ ? "strictement supérieure"
132
+ : "supérieure"
133
+ : isStrict
134
+ ? "strictement inférieure"
135
+ : "inférieure";
136
+ const word2 = isAskingSup
137
+ ? isStrict
138
+ ? "strictement au-dessous"
139
+ : "au-dessous"
140
+ : isStrict
141
+ ? "strictement en-dessous"
142
+ : "en-dessous";
143
+ return `On cherche toutes les valeurs de $x$ pour lesquelles $f(x)$ est ${word} à $${yValue.frenchify()}$.
144
+
145
+ Pour cela, on peut tracer la droite d'équation $y = ${yValue.frenchify()}$. On repère les points d'intersection de la courbe et de cette droite, puis on lit les abscisses des points de la courbe qui sont ${word2} de cette droite.
146
+
147
+ On trouve alors comme solution :
148
+
149
+ $$
150
+ ${getAnswer(identifiers)}
151
+ $$`;
120
152
  };
121
153
  const getQuestionFromIdentifiers = (identifiers) => {
122
154
  const question = {
@@ -136,8 +168,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
136
168
  answerFormat: "tex",
137
169
  ggbOptions: getGGBOptions(identifiers),
138
170
  identifiers,
139
- // hint: getHint(identifiers),
140
- // correction: getCorrection(identifiers),
171
+ hint: getHint(identifiers),
172
+ correction: getCorrection(identifiers),
141
173
  };
142
174
  return question;
143
175
  };
@@ -190,5 +222,5 @@ export const graphicInequation = {
190
222
  subject: "Mathématiques",
191
223
  pdfOptions: { shouldSpreadPropositions: true },
192
224
  getQuestionFromIdentifiers,
193
- // hasHintAndCorrection: true,
225
+ hasHintAndCorrection: true,
194
226
  };
@@ -100,7 +100,7 @@ const isAnswerValid = (ans, { answer, xValues, imageValues, isAskingImage, value
100
100
  };
101
101
  export const inverseImageFunctionTable = {
102
102
  id: "inverseImageFunctionTable",
103
- label: "Déterminer une image ou un antécédent à partir d'un tableau de valeurs",
103
+ label: "Déterminer une image ou un antécédent à partir d'un tableau de valeurs d'une fonction",
104
104
  isSingleStep: true,
105
105
  generator: (nb) => getDistinctQuestions(getInverseImageFunctionTableQuestion, nb),
106
106
  qcmTimer: 60,
@@ -1 +1 @@
1
- {"version":3,"file":"isPointOnFunction.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/isPointOnFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAGL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAI7C,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AA2HF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAkBnD,CAAC"}
1
+ {"version":3,"file":"isPointOnFunction.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/isPointOnFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAGL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAI7C,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AA2HF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAmBnD,CAAC"}
@@ -115,7 +115,7 @@ const getQuestionFromIdentifiers = (identifiers) => {
115
115
  };
116
116
  export const isPointOnFunction = {
117
117
  id: "isPointOnFunction",
118
- label: "Déterminer si un point appartient à la courbe dune fonction",
118
+ label: "Déterminer si un point appartient à la courbe représentative d'une fonction",
119
119
  answerType: "QCU",
120
120
  isSingleStep: true,
121
121
  generator: (nb, opts) => getDistinctQuestions(() => getIsPointOnFunctionQuestion(opts), nb),
@@ -1 +1 @@
1
- {"version":3,"file":"twoFunctionsInequation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/twoFunctionsInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACL,gBAAgB,EAGjB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAU/D,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;CAC7D,CAAC;AA+PF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAaxD,CAAC"}
1
+ {"version":3,"file":"twoFunctionsInequation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/twoFunctionsInequation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACL,gBAAgB,EAGjB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAU/D,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;CAC7D,CAAC;AAuSF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAcxD,CAAC"}
@@ -142,6 +142,37 @@ const getTwoFunctionsInequationQuestion = () => {
142
142
  };
143
143
  return getQuestionFromIdentifiers(identifiers);
144
144
  };
145
+ const getHint = (identifiers) => {
146
+ const { ineqSymbol } = identifiers;
147
+ const word = ineqSymbol === "<"
148
+ ? "strictement en-dessous"
149
+ : ineqSymbol === ">"
150
+ ? "strictement au-dessus"
151
+ : ineqSymbol === "\\ge"
152
+ ? "au-dessus"
153
+ : "en-dessous";
154
+ return `Repère les intervalles sur lesquels la courbe de la fonction $f$ est ${word} de la courbe de la fonction $g$.`;
155
+ };
156
+ const getCorrection = (identifiers) => {
157
+ const { fSplinePoints, gSplinePoints, ineqSymbol, intervals, yValue } = identifiers;
158
+ const word = ineqSymbol === "<"
159
+ ? "strictement en-dessous"
160
+ : ineqSymbol === ">"
161
+ ? "strictement au-dessus"
162
+ : ineqSymbol === "\\ge"
163
+ ? "au-dessus"
164
+ : "en-dessous";
165
+ const intervalsNodes = intervals.map((e) => new IntervalNode(e.a.toTree(), e.b.toTree(), e.closure));
166
+ return `On lit graphiquement que la courbe de la fonction $f$ est ${word} de la courbe de la fonction $g$ sur ${intervals.length === 1
167
+ ? `l'intervalle $${intervalsNodes[0].toTex()}$`
168
+ : `les intervalles $${intervalsNodes[0].toTex()}$ et $${intervalsNodes[1].toTex()}$`}.
169
+
170
+ La solution de l'inéquation est donc :
171
+
172
+ $$
173
+ ${getAnswer(identifiers)}
174
+ $$`;
175
+ };
145
176
  const getQuestionFromIdentifiers = (identifiers) => {
146
177
  const question = {
147
178
  answer: getAnswer(identifiers),
@@ -150,6 +181,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
150
181
  answerFormat: "tex",
151
182
  identifiers,
152
183
  ggbOptions: getGGBOptions(identifiers),
184
+ hint: getHint(identifiers),
185
+ correction: getCorrection(identifiers),
153
186
  };
154
187
  return question;
155
188
  };
@@ -204,4 +237,5 @@ export const twoFunctionsInequation = {
204
237
  hasGeogebra: true,
205
238
  subject: "Mathématiques",
206
239
  getQuestionFromIdentifiers,
240
+ hasHintAndCorrection: true,
207
241
  };
@@ -1 +1 @@
1
- {"version":3,"file":"valueTableFromGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/valueTableFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;CACvB,CAAC;AAkIF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAmBrD,CAAC"}
1
+ {"version":3,"file":"valueTableFromGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/valueTableFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;CACvB,CAAC;AAkIF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAkBrD,CAAC"}
@@ -122,7 +122,7 @@ const getQuestionFromIdentifiers = (identifiers) => {
122
122
  export const valueTableFromGraph = {
123
123
  id: "valueTableFromGraph",
124
124
  connector: "=",
125
- label: "Compléter un tableau de valeurs d'une fonction à partir d'un graphique",
125
+ label: "Compléter un tableau de valeurs à partir de la courbe d'une fonction",
126
126
  isSingleStep: true,
127
127
  generator: (nb, opts) => getDistinctQuestions(() => getValueTableFromGraphQuestion(opts), nb),
128
128
  valueTableTimer: 120,
@@ -1,3 +1,4 @@
1
1
  export * from "./isPointOnReciprocalFunction.js";
2
2
  export * from "./compareInverseValues.js";
3
+ export * from "./solveInverseEquation.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/inverse/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/inverse/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from "./isPointOnReciprocalFunction.js";
2
2
  export * from "./compareInverseValues.js";
3
+ export * from "./solveInverseEquation.js";
@@ -0,0 +1,8 @@
1
+ import { Exercise } from "../../../../exercises/exercise.js";
2
+ import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
3
+ type Identifiers = {
4
+ k: NodeIdentifiers;
5
+ };
6
+ export declare const solveInverseEquation: Exercise<Identifiers>;
7
+ export {};
8
+ //# sourceMappingURL=solveInverseEquation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solveInverseEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/inverse/solveInverseEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAO7C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,eAAe,CAAC;CACpB,CAAC;AAkJF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAiBtD,CAAC"}