math-exercises 1.3.63 → 1.3.65

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 (78) hide show
  1. package/lib/exercises/calcul/arithmetics/primeNumbers.js +1 -1
  2. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.d.ts.map +1 -1
  3. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.js +8 -2
  4. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.d.ts.map +1 -1
  5. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.js +8 -2
  6. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.d.ts.map +1 -1
  7. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.js +13 -1
  8. package/lib/exercises/calcul/fractions/fractionsDivision.d.ts.map +1 -1
  9. package/lib/exercises/calcul/fractions/fractionsDivision.js +7 -1
  10. package/lib/exercises/calcul/fractions/fractionsProduct.d.ts.map +1 -1
  11. package/lib/exercises/calcul/fractions/fractionsSum.d.ts.map +1 -1
  12. package/lib/exercises/calcul/fractions/fractionsSum.js +7 -1
  13. package/lib/exercises/calculLitteral/equation/equationSimpleSquare.js +2 -2
  14. package/lib/exercises/calculLitteral/equation/expEquation.js +2 -2
  15. package/lib/exercises/calculLitteral/equation/fractionEquation.js +4 -4
  16. package/lib/exercises/calculLitteral/equation/logEquation.js +2 -2
  17. package/lib/exercises/calculLitteral/equation/multiplicationEquation.js +3 -3
  18. package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType0.js +3 -3
  19. package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType1.js +3 -3
  20. package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType2.js +3 -3
  21. package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType3.js +3 -3
  22. package/lib/exercises/calculLitteral/simplifying/expSimplifiying.js +2 -2
  23. package/lib/exercises/derivation/derivative/expDerivativeOne.js +2 -2
  24. package/lib/exercises/derivation/derivative/expDerivativeThree.js +2 -2
  25. package/lib/exercises/derivation/derivative/expDerivativeTwo.js +2 -2
  26. package/lib/exercises/derivation/derivative/thirdDegreeFunctionVariation.js +1 -1
  27. package/lib/exercises/equaDiff/equaDiffGeneralForme.js +2 -2
  28. package/lib/exercises/equaDiff/equaDiffGeneralFormeWithIC.js +2 -2
  29. package/lib/exercises/exercise.d.ts +1 -0
  30. package/lib/exercises/exercise.d.ts.map +1 -1
  31. package/lib/exercises/exercises.d.ts.map +1 -1
  32. package/lib/exercises/exercises.js +4 -0
  33. package/lib/exercises/functions/basics/inverseImageFunctionGeogebra.d.ts.map +1 -1
  34. package/lib/exercises/functions/basics/inverseImageFunctionGeogebra.js +8 -2
  35. package/lib/exercises/functions/cube/cubicEquation.js +3 -3
  36. package/lib/exercises/functions/trinoms/rootsFromFactorizedForm.js +5 -5
  37. package/lib/exercises/geometry/euclidean/pythagore.js +1 -1
  38. package/lib/exercises/geometry/euclidean/thales.js +2 -2
  39. package/lib/exercises/percent/globalPercent.js +1 -1
  40. package/lib/exercises/percent/reciprocalPercentage.js +1 -1
  41. package/lib/exercises/primitve/constantPrimitive.js +1 -1
  42. package/lib/exercises/primitve/exponentialPrimitive.js +3 -3
  43. package/lib/exercises/primitve/logarithmePrimitive.js +1 -1
  44. package/lib/exercises/primitve/sinCosPrimitive.js +1 -1
  45. package/lib/exercises/sets/intervals/inequalityToInterval.js +14 -14
  46. package/lib/exercises/sets/intervals/intervalBelonging.d.ts.map +1 -1
  47. package/lib/exercises/sets/intervals/intervalBelonging.js +17 -3
  48. package/lib/exercises/sets/intervals/intervalsIntersection.d.ts +4 -0
  49. package/lib/exercises/sets/intervals/intervalsIntersection.d.ts.map +1 -0
  50. package/lib/exercises/sets/intervals/intervalsIntersection.js +67 -0
  51. package/lib/exercises/sets/intervals/intervalsUnion.d.ts.map +1 -1
  52. package/lib/exercises/sets/intervals/intervalsUnion.js +17 -6
  53. package/lib/exercises/squareRoots/squareRootEquation.js +4 -4
  54. package/lib/index.d.ts.map +1 -1
  55. package/lib/math/geometry/droite.js +1 -1
  56. package/lib/math/geometry/point.js +1 -1
  57. package/lib/math/polynomials/affine.d.ts.map +1 -1
  58. package/lib/math/polynomials/affine.js +2 -0
  59. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  60. package/lib/math/polynomials/trinom.js +9 -3
  61. package/lib/math/sets/intervals/intervals.d.ts +6 -3
  62. package/lib/math/sets/intervals/intervals.d.ts.map +1 -1
  63. package/lib/math/sets/intervals/intervals.js +85 -29
  64. package/lib/math/sets/mathSet.d.ts +5 -4
  65. package/lib/math/sets/mathSet.d.ts.map +1 -1
  66. package/lib/math/sets/mathSet.js +1 -0
  67. package/lib/math/sets/mathSetInterface.d.ts +2 -1
  68. package/lib/math/sets/mathSetInterface.d.ts.map +1 -1
  69. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  70. package/lib/tree/nodes/functions/expNode.js +5 -1
  71. package/lib/tree/nodes/operators/addNode.js +1 -1
  72. package/lib/tree/nodes/operators/divideNode.js +2 -1
  73. package/lib/tree/nodes/operators/equalNode.js +1 -1
  74. package/lib/tree/nodes/operators/multiplyNode.js +2 -1
  75. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  76. package/lib/tree/nodes/operators/powerNode.js +5 -1
  77. package/lib/tree/nodes/operators/substractNode.js +1 -1
  78. package/package.json +1 -1
@@ -44,14 +44,19 @@ class IntervalConstructor {
44
44
  tex = `]${a};${b}[`;
45
45
  break;
46
46
  }
47
- //-inf; x[
48
- //[x; inf
49
- //[a,b]
50
- //[ [
51
- //] ]
52
- //] [
53
47
  return new Interval(tex);
54
48
  }
49
+ static differentRandoms(nb) {
50
+ const res = [];
51
+ for (let i = 0; i < nb; i++) {
52
+ let interval;
53
+ do {
54
+ interval = this.random();
55
+ } while (res.some((int) => int.tex === interval.tex));
56
+ res.push(this.random());
57
+ }
58
+ return res;
59
+ }
55
60
  }
56
61
  exports.IntervalConstructor = IntervalConstructor;
57
62
  var BoundType;
@@ -79,8 +84,8 @@ class Interval {
79
84
  switch (`${left}a;b${right}`) {
80
85
  case '[a;b]':
81
86
  this.leftBracket = '[';
82
- this.leftInequalitySymbol = '\\leq';
83
- this.rightInequalitySymbol = '\\leq';
87
+ this.leftInequalitySymbol = '\\le';
88
+ this.rightInequalitySymbol = '\\le';
84
89
  this.rightBracket = ']';
85
90
  this.boundType = BoundType.FF;
86
91
  break;
@@ -94,7 +99,7 @@ class Interval {
94
99
  case '[a;b[':
95
100
  this.leftBracket = '[';
96
101
  this.rightBracket = '[';
97
- this.leftInequalitySymbol = '\\leq';
102
+ this.leftInequalitySymbol = '\\le';
98
103
  this.rightInequalitySymbol = '<';
99
104
  this.boundType = BoundType.FO;
100
105
  break;
@@ -102,7 +107,7 @@ class Interval {
102
107
  this.leftBracket = ']';
103
108
  this.rightBracket = ']';
104
109
  this.leftInequalitySymbol = '<';
105
- this.rightInequalitySymbol = '\\leq';
110
+ this.rightInequalitySymbol = '\\le';
106
111
  this.boundType = BoundType.OF;
107
112
  break;
108
113
  default:
@@ -118,17 +123,68 @@ class Interval {
118
123
  this.min = getBound(a);
119
124
  this.max = getBound(b);
120
125
  }
121
- // union(interval: Interval): MathSet {
122
- //[a,b] [c,d]
123
- //si a=c return a, max(b,d)
124
- //si si b = d return min(a,c), b
125
- //si a=d return c,b sauf si OXXO
126
- //si b=c return a,d sauf si XOOX
127
- //si c > b ou d < a alors union disjointe avec plus petit en 1er
128
- //sinon return min(a,c), max(b,d)
129
- //res = a
130
- // return new MathSet();
131
- // }
126
+ union(interval) {
127
+ let unionRightBracket = this.max > interval.max
128
+ ? this.rightBracket
129
+ : this.max === interval.max
130
+ ? this.rightBracket === ']' || interval.rightBracket === ']'
131
+ ? ']'
132
+ : '['
133
+ : interval.rightBracket;
134
+ let unionLeftBracket = this.min < interval.min
135
+ ? this.leftBracket
136
+ : this.max === interval.max
137
+ ? this.leftBracket === '[' || interval.leftBracket === '['
138
+ ? '['
139
+ : ']'
140
+ : interval.leftBracket;
141
+ let min = Math.min(this.min, interval.min);
142
+ let minTex = this.min < interval.min ? this.minTex : interval.minTex;
143
+ let max = Math.max(this.max, interval.max);
144
+ let maxTex = this.max > interval.max ? this.maxTex : interval.maxTex;
145
+ if (this.max < interval.min ||
146
+ this.min > interval.max ||
147
+ (this.max === interval.min && this.rightBracket === '[' && interval.leftBracket === ']') ||
148
+ (this.min === interval.max && this.leftBracket === ']' && interval.rightBracket === '[')) {
149
+ const firstInterval = this.min < interval.min ? this : interval;
150
+ const secondInterval = this.min < interval.min ? interval : this;
151
+ return new mathSet_1.MathSet(`\\left${unionLeftBracket}${firstInterval.minTex};${firstInterval.maxTex}\\right${firstInterval.rightBracket}\\cup\\left${secondInterval.leftBracket}${secondInterval.minTex};${secondInterval.maxTex}\\right${unionRightBracket}`, () => ((0, coinFlip_1.coinFlip)() ? firstInterval.getRandomElement() : secondInterval.getRandomElement()));
152
+ }
153
+ else {
154
+ return new Interval(`${unionLeftBracket}${minTex};${maxTex}${unionRightBracket}`);
155
+ }
156
+ }
157
+ intersection(interval) {
158
+ const a = this.min;
159
+ const b = this.max;
160
+ const c = interval.min;
161
+ const d = interval.max;
162
+ //[a,b] n [c,d]
163
+ const isDisjoint = b < c ||
164
+ d < a ||
165
+ (b === c && (this.rightBracket === '[' || interval.leftBracket === ']')) ||
166
+ (a === d && (interval.rightBracket === '[' || this.leftBracket === ']'));
167
+ if (isDisjoint) {
168
+ return new mathSet_1.MathSet('\\emptyset', () => null);
169
+ }
170
+ const winningLeftBracket = (brack1, brack2) => (brack1 === ']' || brack2 === ']' ? ']' : '[');
171
+ const winningRightBracket = (brack1, brack2) => brack1 === '[' || brack2 === '[' ? '[' : ']';
172
+ let min = Math.max(a, c);
173
+ let minTex = a >= c ? this.minTex : interval.minTex;
174
+ let leftBracket = a === c
175
+ ? winningLeftBracket(this.leftBracket, interval.leftBracket)
176
+ : a > c
177
+ ? this.leftBracket
178
+ : interval.leftBracket;
179
+ const max = Math.min(b, d);
180
+ let maxTex = b <= d ? this.maxTex : interval.maxTex;
181
+ let rightBracket = b === d
182
+ ? winningRightBracket(this.rightBracket, interval.rightBracket)
183
+ : b < d
184
+ ? this.rightBracket
185
+ : interval.rightBracket;
186
+ return new Interval(`${leftBracket}${minTex};${maxTex}${rightBracket}`);
187
+ }
132
188
  exclude(nb) {
133
189
  const rand = () => {
134
190
  let x;
@@ -149,30 +205,30 @@ class Interval {
149
205
  };
150
206
  return new mathSet_1.MathSet(this.toTex() + `\\ ${set.toTex()}`, rand);
151
207
  }
152
- toTex() {
153
- return this.tex;
154
- }
155
208
  insideToTex() {
156
209
  return this.tex.replaceAll('[', '').replaceAll(']', '');
157
210
  }
211
+ toTex() {
212
+ return `\\left${this.leftBracket}${this.insideToTex()}\\right${this.rightBracket}`;
213
+ }
158
214
  toInequality() {
159
215
  const isLeftClosed = this.boundType === BoundType.FO || this.boundType === BoundType.FF;
160
216
  const isRightClosed = this.boundType === BoundType.FF || this.boundType === BoundType.OF;
161
217
  if (this.max === Infinity) {
162
218
  if (isLeftClosed) {
163
- return `x \\geq ${this.min}`;
219
+ return `x\\ge${this.min}`;
164
220
  }
165
221
  else
166
- return `x > ${this.min}`;
222
+ return `x>${this.min}`;
167
223
  }
168
224
  else if (this.min === -Infinity) {
169
225
  if (this.boundType === BoundType.OF) {
170
- return `x \\leq ${this.max}`;
226
+ return `x\\le${this.max}`;
171
227
  }
172
228
  else
173
- return `x < ${this.max}`;
229
+ return `x<${this.max}`;
174
230
  }
175
- return `${this.min} ${isLeftClosed ? '\\leq' : '<'} x ${isRightClosed ? '\\leq' : '<'} ${this.max}`;
231
+ return `${this.min}${isLeftClosed ? '\\le x' : '<x'}${isRightClosed ? '\\le' : '<'}${this.max}`;
176
232
  }
177
233
  getRandomElement(precision = this.type === nombre_1.NumberType.Integer ? 0 : 2) {
178
234
  if (this.min === -Infinity || this.max === Infinity)
@@ -1,8 +1,9 @@
1
- import { Nombre } from "../numbers/nombre";
2
- import { MathSetInterface } from "./mathSetInterface";
1
+ import { Nombre } from '../numbers/nombre';
2
+ import { MathSetInterface } from './mathSetInterface';
3
3
  export declare class MathSet implements MathSetInterface {
4
4
  tex: string;
5
- getRandomElement: () => Nombre;
6
- constructor(tex: string, getRandomElement: () => Nombre);
5
+ toTex: () => string;
6
+ getRandomElement: () => Nombre | null;
7
+ constructor(tex: string, getRandomElement: () => Nombre | null);
7
8
  }
8
9
  //# sourceMappingURL=mathSet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mathSet.d.ts","sourceRoot":"","sources":["../../../src/math/sets/mathSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,OAAQ,YAAW,gBAAgB;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,MAAM,CAAC;gBACnB,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,MAAM;CAIxD"}
1
+ {"version":3,"file":"mathSet.d.ts","sourceRoot":"","sources":["../../../src/math/sets/mathSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,OAAQ,YAAW,gBAAgB;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;gBAC1B,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI;CAK/D"}
@@ -5,6 +5,7 @@ class MathSet {
5
5
  constructor(tex, getRandomElement) {
6
6
  this.tex = tex;
7
7
  this.getRandomElement = getRandomElement;
8
+ this.toTex = () => tex;
8
9
  }
9
10
  }
10
11
  exports.MathSet = MathSet;
@@ -1,6 +1,7 @@
1
1
  import { Nombre } from '../numbers/nombre';
2
2
  export interface MathSetInterface {
3
3
  tex: string;
4
- getRandomElement: () => Nombre;
4
+ toTex: () => string;
5
+ getRandomElement: () => Nombre | null;
5
6
  }
6
7
  //# sourceMappingURL=mathSetInterface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mathSetInterface.d.ts","sourceRoot":"","sources":["../../../src/math/sets/mathSetInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,MAAM,CAAC;CAChC"}
1
+ {"version":3,"file":"mathSetInterface.d.ts","sourceRoot":"","sources":["../../../src/math/sets/mathSetInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"expNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/expNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAE5D,qBAAa,OAAQ,SAAQ,YAAa,YAAW,IAAI;IACvD,IAAI,EAAE,QAAQ,CAAqB;gBAEvB,KAAK,EAAE,IAAI;IAIvB,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAIR,QAAQ,IAAI,IAAI;CAGjB"}
1
+ {"version":3,"file":"expNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/expNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAE5D,qBAAa,OAAQ,SAAQ,YAAa,YAAW,IAAI;IACvD,IAAI,EAAE,QAAQ,CAAqB;gBAEvB,KAAK,EAAE,IAAI;IAIvB,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAMf,QAAQ;IAIR,QAAQ,IAAI,IAAI;CAGjB"}
@@ -13,7 +13,11 @@ class ExpNode extends functionNode_1.FunctionNode {
13
13
  return `e^(${this.child.toMathString()})`;
14
14
  }
15
15
  toTex() {
16
- return `e^{${this.child.toTex()}}`;
16
+ const tex = this.child.toTex();
17
+ const needBraces = tex.length > 1;
18
+ if (needBraces)
19
+ return `e^{${this.child.toTex()}}`;
20
+ return `e^${tex}`;
17
21
  }
18
22
  toMathjs() {
19
23
  return (0, mathjs_1.exp)(this.child.toMathjs());
@@ -14,7 +14,7 @@ class AddNode extends operatorNode_1.OperatorNode {
14
14
  }
15
15
  toTex() {
16
16
  const rightTex = this.rightChild.toTex();
17
- return `${this.leftChild.toTex()} ${rightTex[0] === '-' ? '' : '+ '}${rightTex}`;
17
+ return `${this.leftChild.toTex()}${rightTex[0] === '-' ? '' : '+'}${rightTex}`;
18
18
  }
19
19
  toMathjs() {
20
20
  return (0, mathjs_1.add)(this.leftChild.toMathjs(), this.rightChild.toMathjs());
@@ -29,7 +29,8 @@ class DivideNode extends operatorNode_1.OperatorNode {
29
29
  }
30
30
  if (needBrackets)
31
31
  rightTex = `(${rightTex})`;
32
- return `${leftTex} \\div ${rightTex}`;
32
+ const nextIsLetter = rightTex[0].toLowerCase() !== rightTex[0].toUpperCase();
33
+ return `${leftTex}\\div${nextIsLetter ? ' ' : ''}${rightTex}`;
33
34
  }
34
35
  toMathjs() {
35
36
  return (0, mathjs_1.divide)(this.leftChild.toMathjs(), this.rightChild.toMathjs());
@@ -11,7 +11,7 @@ class EqualNode extends operatorNode_1.OperatorNode {
11
11
  return `${this.leftChild.toMathString()} = ${this.rightChild.toMathString()}`;
12
12
  }
13
13
  toTex() {
14
- return `${this.leftChild.toTex()} = ${this.rightChild.toTex()}`;
14
+ return `${this.leftChild.toTex()}=${this.rightChild.toTex()}`;
15
15
  }
16
16
  toMathjs() {
17
17
  return (0, mathjs_1.equal)(this.leftChild.toMathjs(), this.rightChild.toMathjs());
@@ -43,7 +43,8 @@ class MultiplyNode extends operatorNode_1.OperatorNode {
43
43
  const operatorRightChild = this.rightChild;
44
44
  showTimesSign ||= [operatorNode_1.OperatorIds.fraction].includes(operatorRightChild.id);
45
45
  }
46
- return `${leftTex}${showTimesSign ? '\\times ' : ''}${rightTex}`;
46
+ const nextIsLetter = rightTex[0].toLowerCase() !== rightTex[0].toUpperCase();
47
+ return `${leftTex}${showTimesSign ? `\\times${nextIsLetter ? ' ' : ''}` : ''}${rightTex}`;
47
48
  }
48
49
  toMathjs() {
49
50
  return (0, mathjs_1.multiply)(this.leftChild.toMathjs(), this.rightChild.toMathjs());
@@ -1 +1 @@
1
- {"version":3,"file":"powerNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/powerNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAY,MAAM,SAAS,CAAC;AACzC,OAAO,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,SAAU,SAAQ,YAAa,YAAW,IAAI;gBAC7C,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;IAI7C,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAmBf,QAAQ;CAGT"}
1
+ {"version":3,"file":"powerNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/powerNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAY,MAAM,SAAS,CAAC;AACzC,OAAO,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3D,qBAAa,SAAU,SAAQ,YAAa,YAAW,IAAI;gBAC7C,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;IAI7C,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAqBf,QAAQ;CAGT"}
@@ -28,7 +28,11 @@ class PowerNode extends operatorNode_1.OperatorNode {
28
28
  }
29
29
  if (needBrackets)
30
30
  leftTex = `(${leftTex})`;
31
- return `${leftTex}^{${rightTex}}`;
31
+ const needBrace = rightTex.length > 1;
32
+ if (needBrace)
33
+ return `${leftTex}^{${rightTex}}`;
34
+ else
35
+ return `${leftTex}^${rightTex}`;
32
36
  }
33
37
  toMathjs() {
34
38
  return (0, mathjs_1.pow)(this.leftChild.toMathjs(), this.rightChild.toMathjs());
@@ -19,7 +19,7 @@ class SubstractNode extends operatorNode_1.OperatorNode {
19
19
  rightTex[0] === '-';
20
20
  if (needBrackets)
21
21
  rightTex = `(${rightTex})`;
22
- return `${leftTex} - ${rightTex}`;
22
+ return `${leftTex}-${rightTex}`;
23
23
  }
24
24
  toMathjs() {
25
25
  return (0, mathjs_1.subtract)(this.leftChild.toMathjs(), this.rightChild.toMathjs());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "1.3.63",
3
+ "version": "1.3.65",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [