math-exercises 2.0.28 → 2.0.30
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.
- package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +6 -6
- package/lib/exercises/calculLitteral/distributivity/firstIdentity.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +10 -6
- package/lib/exercises/calculLitteral/distributivity/secondIdentity.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +14 -7
- package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +11 -11
- package/lib/exercises/calculLitteral/distributivity/thirdIdentity.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +4 -6
- package/lib/exercises/calculLitteral/equation/equationType2Exercise.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +3 -5
- package/lib/exercises/calculLitteral/equation/equationType3Exercise.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +0 -5
- package/lib/exercises/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +10 -16
- package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.js +3 -5
- package/lib/exercises/calculLitteral/factorisation/factoIdRmq2.js +4 -6
- package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.js +4 -6
- package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType0.d.ts.map +1 -1
- package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType0.js +0 -2
- package/lib/exercises/complex/argumentFromAlgebraicComplex.d.ts.map +1 -1
- package/lib/exercises/derivation/derivative/thirdDegreeFunctionVariation.d.ts.map +1 -1
- package/lib/exercises/derivation/derivative/thirdDegreeFunctionVariation.js +20 -8
- package/lib/exercises/exercise.d.ts +1 -1
- package/lib/exercises/exercise.d.ts.map +1 -1
- package/lib/exercises/functions/absolute/absoluteValueInequations.d.ts.map +1 -1
- package/lib/exercises/functions/absolute/absoluteValueInequations.js +8 -5
- package/lib/exercises/functions/affines/interceptReading.d.ts.map +1 -1
- package/lib/exercises/functions/exponential/expSimplifiying.d.ts.map +1 -1
- package/lib/exercises/functions/trinoms/canonicalFromDevForm.d.ts.map +1 -1
- package/lib/exercises/functions/trinoms/canonicalFromDevForm.js +1 -3
- package/lib/exercises/functions/trinoms/secondDegreeInequation.d.ts.map +1 -1
- package/lib/exercises/functions/trinoms/secondDegreeInequation.js +0 -3
- package/lib/exercises/index.d.ts +1 -0
- package/lib/exercises/index.d.ts.map +1 -1
- package/lib/exercises/index.js +1 -0
- package/lib/exercises/limits/rationalFracForbiddenValueLimit.d.ts.map +1 -1
- package/lib/exercises/limits/rationalFracForbiddenValueLimit.js +1 -6
- package/lib/exercises/matrices/index.d.ts +2 -0
- package/lib/exercises/matrices/index.d.ts.map +1 -0
- package/lib/exercises/matrices/index.js +17 -0
- package/lib/exercises/matrices/matrixInversibilityDomain.d.ts +10 -0
- package/lib/exercises/matrices/matrixInversibilityDomain.d.ts.map +1 -0
- package/lib/exercises/matrices/matrixInversibilityDomain.js +93 -0
- package/lib/exercises/sets/intervals/inequalityToInterval.d.ts +4 -1
- package/lib/exercises/sets/intervals/inequalityToInterval.d.ts.map +1 -1
- package/lib/exercises/sets/intervals/inequalityToInterval.js +10 -7
- package/lib/exercises/sets/intervals/intervalsIntersection.d.ts +7 -2
- package/lib/exercises/sets/intervals/intervalsIntersection.d.ts.map +1 -1
- package/lib/exercises/sets/intervals/intervalsIntersection.js +11 -4
- package/lib/exercises/sets/intervals/intervalsUnion.d.ts +7 -2
- package/lib/exercises/sets/intervals/intervalsUnion.d.ts.map +1 -1
- package/lib/exercises/sets/intervals/intervalsUnion.js +11 -4
- package/lib/exercises/utils/keys/intervalKeys.d.ts +3 -0
- package/lib/exercises/utils/keys/intervalKeys.d.ts.map +1 -0
- package/lib/exercises/utils/keys/intervalKeys.js +10 -0
- package/lib/index.d.ts +124 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -0
- package/lib/math/geometry/point.d.ts.map +1 -1
- package/lib/math/matrices/matrix.d.ts +10 -0
- package/lib/math/matrices/matrix.d.ts.map +1 -0
- package/lib/math/matrices/matrix.js +24 -0
- package/lib/math/numbers/decimals/decimal.d.ts +1 -0
- package/lib/math/numbers/decimals/decimal.d.ts.map +1 -1
- package/lib/math/numbers/decimals/decimal.js +3 -0
- package/lib/math/numbers/integer/integer.d.ts +1 -0
- package/lib/math/numbers/integer/integer.d.ts.map +1 -1
- package/lib/math/numbers/integer/integer.js +3 -0
- package/lib/math/numbers/integer/power.d.ts +1 -0
- package/lib/math/numbers/integer/power.d.ts.map +1 -1
- package/lib/math/numbers/integer/power.js +3 -0
- package/lib/math/numbers/logarithms/ln.d.ts +1 -0
- package/lib/math/numbers/logarithms/ln.d.ts.map +1 -1
- package/lib/math/numbers/logarithms/ln.js +3 -0
- package/lib/math/numbers/nombre.d.ts +5 -2
- package/lib/math/numbers/nombre.d.ts.map +1 -1
- package/lib/math/numbers/nombre.js +22 -7
- package/lib/math/numbers/rationals/rational.d.ts +1 -0
- package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
- package/lib/math/numbers/rationals/rational.js +4 -3
- package/lib/math/numbers/reals/real.d.ts +1 -0
- package/lib/math/numbers/reals/real.d.ts.map +1 -1
- package/lib/math/numbers/reals/real.js +3 -0
- package/lib/math/polynomials/affine.d.ts +20 -5
- package/lib/math/polynomials/affine.d.ts.map +1 -1
- package/lib/math/polynomials/affine.js +8 -12
- package/lib/math/polynomials/trinom.d.ts +40 -4
- package/lib/math/polynomials/trinom.d.ts.map +1 -1
- package/lib/math/polynomials/trinom.js +23 -28
- package/lib/math/sets/intervals/intervals.d.ts +9 -12
- package/lib/math/sets/intervals/intervals.d.ts.map +1 -1
- package/lib/math/sets/intervals/intervals.js +61 -135
- package/lib/math/utils/random/randint.d.ts.map +1 -1
- package/lib/math/utils/random/randint.js +2 -2
- package/lib/server.d.ts +6 -0
- package/lib/server.d.ts.map +1 -1
- package/lib/server.js +10 -0
- package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/fractionNode.js +40 -0
- package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
- package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/intervalNode.js +14 -2
- package/lib/tree/nodes/sets/majorSets.d.ts +1 -0
- package/lib/tree/nodes/sets/majorSets.d.ts.map +1 -0
- package/lib/tree/nodes/sets/majorSets.js +1 -0
- package/lib/tree/nodes/sets/unionIntervalNode.d.ts +4 -0
- package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
- package/lib/tree/nodes/sets/unionIntervalNode.js +13 -2
- package/lib/types/numberType.d.ts +1 -0
- package/lib/types/numberType.d.ts.map +1 -0
- package/lib/types/numberType.js +1 -0
- package/package.json +1 -1
|
@@ -1,53 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Interval = exports.IntervalConstructor = void 0;
|
|
4
|
-
const epsilon_1 = require("../../../math/numbers/epsilon");
|
|
5
|
-
const integer_1 = require("../../../math/numbers/integer/integer");
|
|
6
|
-
const nombre_1 = require("../../../math/numbers/nombre");
|
|
7
|
-
const real_1 = require("../../../math/numbers/reals/real");
|
|
8
4
|
const randint_1 = require("../../../math/utils/random/randint");
|
|
9
|
-
const round_1 = require("../../../math/utils/round");
|
|
10
5
|
const infiniteNode_1 = require("../../../tree/nodes/numbers/infiniteNode");
|
|
11
|
-
const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
|
|
12
6
|
const intervalNode_1 = require("../../../tree/nodes/sets/intervalNode");
|
|
13
7
|
const coinFlip_1 = require("../../../utils/coinFlip");
|
|
14
8
|
const mathSet_1 = require("../mathSet");
|
|
15
9
|
class IntervalConstructor {
|
|
16
10
|
static random() {
|
|
17
|
-
let tex = "";
|
|
18
11
|
const randType = (0, randint_1.randint)(0, 6);
|
|
19
12
|
let a, b;
|
|
13
|
+
let min, max, closure;
|
|
20
14
|
switch (randType) {
|
|
21
15
|
case 0:
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
min = infiniteNode_1.MinusInfinityNode;
|
|
17
|
+
max = (0, randint_1.randint)(-10, 10).toTree();
|
|
18
|
+
closure = (0, coinFlip_1.coinFlip)() ? intervalNode_1.ClosureType.OF : intervalNode_1.ClosureType.OO;
|
|
24
19
|
break;
|
|
25
20
|
case 1:
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
min = (0, randint_1.randint)(-10, 10).toTree();
|
|
22
|
+
max = infiniteNode_1.PlusInfinityNode;
|
|
23
|
+
closure = (0, coinFlip_1.coinFlip)() ? intervalNode_1.ClosureType.OO : intervalNode_1.ClosureType.FO;
|
|
28
24
|
break;
|
|
29
25
|
case 2:
|
|
30
26
|
a = (0, randint_1.randint)(-10, 10);
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
min = a.toTree();
|
|
28
|
+
max = (0, randint_1.randint)(a + 1, a + 10).toTree();
|
|
29
|
+
closure = intervalNode_1.ClosureType.FF;
|
|
33
30
|
break;
|
|
34
31
|
case 3:
|
|
35
32
|
a = (0, randint_1.randint)(-10, 10);
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
min = a.toTree();
|
|
34
|
+
max = (0, randint_1.randint)(a + 1, a + 10).toTree();
|
|
35
|
+
closure = intervalNode_1.ClosureType.OF;
|
|
38
36
|
break;
|
|
39
37
|
case 4:
|
|
40
38
|
a = (0, randint_1.randint)(-10, 10);
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
min = a.toTree();
|
|
40
|
+
max = (0, randint_1.randint)(a + 1, a + 10).toTree();
|
|
41
|
+
closure = intervalNode_1.ClosureType.FO;
|
|
43
42
|
break;
|
|
44
43
|
case 5:
|
|
44
|
+
default:
|
|
45
45
|
a = (0, randint_1.randint)(-10, 10);
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
min = a.toTree();
|
|
47
|
+
max = (0, randint_1.randint)(a + 1, a + 10).toTree();
|
|
48
|
+
closure = intervalNode_1.ClosureType.OO;
|
|
48
49
|
break;
|
|
49
50
|
}
|
|
50
|
-
return new Interval(
|
|
51
|
+
return new Interval(min, max, closure);
|
|
51
52
|
}
|
|
52
53
|
static differentRandoms(nb) {
|
|
53
54
|
const res = [];
|
|
@@ -55,7 +56,7 @@ class IntervalConstructor {
|
|
|
55
56
|
let interval;
|
|
56
57
|
do {
|
|
57
58
|
interval = this.random();
|
|
58
|
-
} while (res.some((int) => int.
|
|
59
|
+
} while (res.some((int) => int.equals(interval)));
|
|
59
60
|
res.push(this.random());
|
|
60
61
|
}
|
|
61
62
|
return res;
|
|
@@ -63,63 +64,26 @@ class IntervalConstructor {
|
|
|
63
64
|
}
|
|
64
65
|
exports.IntervalConstructor = IntervalConstructor;
|
|
65
66
|
class Interval {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
|
|
74
|
-
this.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.rightInequalitySymbol = "\\le";
|
|
87
|
-
this.rightBracket = "]";
|
|
88
|
-
this.closure = intervalNode_1.ClosureType.FF;
|
|
89
|
-
break;
|
|
90
|
-
case "]a;b[":
|
|
91
|
-
this.leftBracket = "]";
|
|
92
|
-
this.rightBracket = "[";
|
|
93
|
-
this.leftInequalitySymbol = "<";
|
|
94
|
-
this.rightInequalitySymbol = "<";
|
|
95
|
-
this.closure = intervalNode_1.ClosureType.OO;
|
|
96
|
-
break;
|
|
97
|
-
case "[a;b[":
|
|
98
|
-
this.leftBracket = "[";
|
|
99
|
-
this.rightBracket = "[";
|
|
100
|
-
this.leftInequalitySymbol = "\\le";
|
|
101
|
-
this.rightInequalitySymbol = "<";
|
|
102
|
-
this.closure = intervalNode_1.ClosureType.FO;
|
|
103
|
-
break;
|
|
104
|
-
case "]a;b]":
|
|
105
|
-
this.leftBracket = "]";
|
|
106
|
-
this.rightBracket = "]";
|
|
107
|
-
this.leftInequalitySymbol = "<";
|
|
108
|
-
this.rightInequalitySymbol = "\\le";
|
|
109
|
-
this.closure = intervalNode_1.ClosureType.OF;
|
|
110
|
-
break;
|
|
111
|
-
default:
|
|
112
|
-
throw console.error("wrong interval format");
|
|
113
|
-
}
|
|
114
|
-
function getBound(bound) {
|
|
115
|
-
return bound === "-\\infty"
|
|
116
|
-
? Number.NEGATIVE_INFINITY
|
|
117
|
-
: bound === "+\\infty"
|
|
118
|
-
? Number.POSITIVE_INFINITY
|
|
119
|
-
: Number(bound);
|
|
120
|
-
}
|
|
121
|
-
this.min = getBound(a);
|
|
122
|
-
this.max = getBound(b);
|
|
67
|
+
constructor(min, max, closure) {
|
|
68
|
+
this.closure = closure;
|
|
69
|
+
this.minNode = min;
|
|
70
|
+
this.maxNode = max;
|
|
71
|
+
this.min = min.evaluate({});
|
|
72
|
+
this.max = max.evaluate({});
|
|
73
|
+
this.minTex = min.toTex();
|
|
74
|
+
this.maxTex = max.toTex();
|
|
75
|
+
this.leftBracket =
|
|
76
|
+
closure === intervalNode_1.ClosureType.FF || closure === intervalNode_1.ClosureType.FO ? "[" : "]";
|
|
77
|
+
this.rightBracket =
|
|
78
|
+
closure === intervalNode_1.ClosureType.FF || closure === intervalNode_1.ClosureType.OF ? "]" : "[";
|
|
79
|
+
this.leftInequalitySymbol = this.leftBracket === "[" ? "\\le" : "<";
|
|
80
|
+
this.rightInequalitySymbol = this.rightBracket === "]" ? "\\le" : "<";
|
|
81
|
+
this.tex = this.toTex();
|
|
82
|
+
}
|
|
83
|
+
equals(interval) {
|
|
84
|
+
return (this.min === interval.min &&
|
|
85
|
+
this.max === interval.max &&
|
|
86
|
+
this.closure === interval.closure);
|
|
123
87
|
}
|
|
124
88
|
union(interval) {
|
|
125
89
|
let unionRightBracket = this.max > interval.max
|
|
@@ -136,10 +100,8 @@ class Interval {
|
|
|
136
100
|
? "["
|
|
137
101
|
: "]"
|
|
138
102
|
: interval.leftBracket;
|
|
139
|
-
let min =
|
|
140
|
-
let
|
|
141
|
-
let max = Math.max(this.max, interval.max);
|
|
142
|
-
let maxTex = this.max > interval.max ? this.maxTex : interval.maxTex;
|
|
103
|
+
let min = this.min < interval.min ? this.minNode : interval.minNode;
|
|
104
|
+
let max = this.max > interval.max ? this.maxNode : interval.maxNode;
|
|
143
105
|
if (this.max < interval.min ||
|
|
144
106
|
this.min > interval.max ||
|
|
145
107
|
(this.max === interval.min &&
|
|
@@ -150,12 +112,13 @@ class Interval {
|
|
|
150
112
|
interval.rightBracket === "[")) {
|
|
151
113
|
const firstInterval = this.min < interval.min ? this : interval;
|
|
152
114
|
const secondInterval = this.min < interval.min ? interval : this;
|
|
153
|
-
return new mathSet_1.MathSet(`${unionLeftBracket}${firstInterval.minTex};${firstInterval.maxTex}${firstInterval.rightBracket}\\cup${secondInterval.leftBracket}${secondInterval.minTex};${secondInterval.maxTex}${unionRightBracket}`, () => (0, coinFlip_1.coinFlip)()
|
|
115
|
+
return new mathSet_1.MathSet(`${unionLeftBracket}\\ ${firstInterval.minTex};${firstInterval.maxTex}\\ ${firstInterval.rightBracket}\\ \\cup${secondInterval.leftBracket}\\ ${secondInterval.minTex};${secondInterval.maxTex}\\ ${unionRightBracket}\\ `, () => (0, coinFlip_1.coinFlip)()
|
|
154
116
|
? firstInterval.getRandomElement()
|
|
155
117
|
: secondInterval.getRandomElement());
|
|
156
118
|
}
|
|
157
119
|
else {
|
|
158
|
-
|
|
120
|
+
const closure = (0, intervalNode_1.closureFromBrackets)(unionLeftBracket, unionRightBracket);
|
|
121
|
+
return new Interval(min, max, closure);
|
|
159
122
|
}
|
|
160
123
|
}
|
|
161
124
|
intersection(interval) {
|
|
@@ -174,88 +137,51 @@ class Interval {
|
|
|
174
137
|
}
|
|
175
138
|
const winningLeftBracket = (brack1, brack2) => brack1 === "]" || brack2 === "]" ? "]" : "[";
|
|
176
139
|
const winningRightBracket = (brack1, brack2) => brack1 === "[" || brack2 === "[" ? "[" : "]";
|
|
177
|
-
let min =
|
|
178
|
-
let minTex = a >= c ? this.minTex : interval.minTex;
|
|
140
|
+
let min = a >= c ? this.minNode : interval.minNode;
|
|
179
141
|
let leftBracket = a === c
|
|
180
142
|
? winningLeftBracket(this.leftBracket, interval.leftBracket)
|
|
181
143
|
: a > c
|
|
182
144
|
? this.leftBracket
|
|
183
145
|
: interval.leftBracket;
|
|
184
|
-
const max =
|
|
185
|
-
let maxTex = b <= d ? this.maxTex : interval.maxTex;
|
|
146
|
+
const max = b <= d ? this.maxNode : interval.maxNode;
|
|
186
147
|
let rightBracket = b === d
|
|
187
148
|
? winningRightBracket(this.rightBracket, interval.rightBracket)
|
|
188
149
|
: b < d
|
|
189
150
|
? this.rightBracket
|
|
190
151
|
: interval.rightBracket;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
exclude(nb) {
|
|
194
|
-
const rand = () => {
|
|
195
|
-
let x;
|
|
196
|
-
do {
|
|
197
|
-
x = this.getRandomElement();
|
|
198
|
-
} while (x.value === nb);
|
|
199
|
-
return x;
|
|
200
|
-
};
|
|
201
|
-
return new mathSet_1.MathSet(this.toTex() + `\\left\\{${nb}\\right\\}`, rand);
|
|
202
|
-
}
|
|
203
|
-
difference(set) {
|
|
204
|
-
const rand = () => {
|
|
205
|
-
let x;
|
|
206
|
-
do {
|
|
207
|
-
x = this.getRandomElement();
|
|
208
|
-
} while (set.includes(x));
|
|
209
|
-
return x;
|
|
210
|
-
};
|
|
211
|
-
return new mathSet_1.MathSet(this.toTex() + `\\ ${set.toTex()}`, rand);
|
|
152
|
+
const closure = (0, intervalNode_1.closureFromBrackets)(leftBracket, rightBracket);
|
|
153
|
+
return new Interval(min, max, closure);
|
|
212
154
|
}
|
|
213
155
|
insideToTex() {
|
|
214
|
-
return this.
|
|
156
|
+
return `${this.minTex};${this.maxTex}`;
|
|
215
157
|
}
|
|
216
158
|
toTex() {
|
|
217
|
-
return `${this.leftBracket}${this.insideToTex()}${this.rightBracket}`;
|
|
159
|
+
return `${this.leftBracket}\\ ${this.insideToTex()}\\ ${this.rightBracket}\\ `;
|
|
218
160
|
}
|
|
219
161
|
toInequality() {
|
|
220
162
|
const isLeftClosed = this.closure === intervalNode_1.ClosureType.FO || this.closure === intervalNode_1.ClosureType.FF;
|
|
221
163
|
const isRightClosed = this.closure === intervalNode_1.ClosureType.FF || this.closure === intervalNode_1.ClosureType.OF;
|
|
222
164
|
if (this.max === Infinity) {
|
|
223
165
|
if (isLeftClosed) {
|
|
224
|
-
return `x\\ge${this.
|
|
166
|
+
return `x\\ge${this.minTex}`;
|
|
225
167
|
}
|
|
226
168
|
else
|
|
227
|
-
return `x>${this.
|
|
169
|
+
return `x>${this.minTex}`;
|
|
228
170
|
}
|
|
229
171
|
else if (this.min === -Infinity) {
|
|
230
172
|
if (this.closure === intervalNode_1.ClosureType.OF) {
|
|
231
|
-
return `x\\le${this.
|
|
173
|
+
return `x\\le${this.maxTex}`;
|
|
232
174
|
}
|
|
233
175
|
else
|
|
234
|
-
return `x<${this.
|
|
176
|
+
return `x<${this.maxTex}`;
|
|
235
177
|
}
|
|
236
|
-
return `${this.
|
|
178
|
+
return `${this.minTex}${isLeftClosed ? "\\le x" : "<x"}${isRightClosed ? "\\le" : "<"}${this.maxTex}`;
|
|
237
179
|
}
|
|
238
|
-
getRandomElement(
|
|
239
|
-
|
|
240
|
-
throw Error("Can't chose amongst infinity");
|
|
241
|
-
let min = this.closure === intervalNode_1.ClosureType.OO || this.closure === intervalNode_1.ClosureType.OF
|
|
242
|
-
? this.min + epsilon_1.EPSILON
|
|
243
|
-
: this.min;
|
|
244
|
-
let max = this.closure === intervalNode_1.ClosureType.OO || this.closure === intervalNode_1.ClosureType.FO
|
|
245
|
-
? this.max - epsilon_1.EPSILON
|
|
246
|
-
: this.max;
|
|
247
|
-
const value = (0, round_1.round)(min + Math.random() * (max - this.min), precision);
|
|
248
|
-
switch (this.type) {
|
|
249
|
-
case nombre_1.NumberType.Integer:
|
|
250
|
-
return new integer_1.Integer(value);
|
|
251
|
-
default:
|
|
252
|
-
return new real_1.Real(value, value.toString());
|
|
253
|
-
}
|
|
180
|
+
getRandomElement() {
|
|
181
|
+
throw Error("not implemented");
|
|
254
182
|
}
|
|
255
183
|
toTree() {
|
|
256
|
-
|
|
257
|
-
const b = this.max === Infinity ? infiniteNode_1.PlusInfinityNode : new numberNode_1.NumberNode(this.max);
|
|
258
|
-
return new intervalNode_1.IntervalNode(a, b, this.closure);
|
|
184
|
+
return new intervalNode_1.IntervalNode(this.minNode, this.maxNode, this.closure);
|
|
259
185
|
}
|
|
260
186
|
}
|
|
261
187
|
exports.Interval = Interval;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"randint.d.ts","sourceRoot":"","sources":["../../../../src/math/utils/random/randint.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"randint.d.ts","sourceRoot":"","sources":["../../../../src/math/utils/random/randint.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,MAAO,MAAM,MAAM,MAAM,aAAa,MAAM,EAAE,KAAG,MAQpE,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.randint = void 0;
|
|
4
2
|
/**
|
|
5
3
|
* @returns random [[a, b[[
|
|
6
4
|
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.randint = void 0;
|
|
7
7
|
const randint = (a, b, excludes) => {
|
|
8
8
|
if (b === undefined)
|
|
9
9
|
return Math.floor(Math.random() * a);
|
package/lib/server.d.ts
CHANGED
package/lib/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,CAAC;AAarB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAe3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,MAAM,aAAa,CAAC;KAC7B;CACF"}
|
package/lib/server.js
CHANGED
|
@@ -35,8 +35,18 @@ const express_1 = __importDefault(require("express"));
|
|
|
35
35
|
const body_parser_1 = __importDefault(require("body-parser"));
|
|
36
36
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
37
37
|
const cors_1 = __importDefault(require("cors"));
|
|
38
|
+
const numberNode_1 = require("./tree/nodes/numbers/numberNode");
|
|
39
|
+
const infiniteNode_1 = require("./tree/nodes/numbers/infiniteNode");
|
|
38
40
|
const jsonParser = body_parser_1.default.json();
|
|
39
41
|
const allExercises = [...exercises];
|
|
42
|
+
Number.prototype.toTree = function () {
|
|
43
|
+
const value = this.valueOf();
|
|
44
|
+
if (value === Infinity)
|
|
45
|
+
return infiniteNode_1.PlusInfinityNode;
|
|
46
|
+
if (value === -Infinity)
|
|
47
|
+
return infiniteNode_1.MinusInfinityNode;
|
|
48
|
+
return new numberNode_1.NumberNode(value);
|
|
49
|
+
};
|
|
40
50
|
const runServer = () => {
|
|
41
51
|
dotenv_1.default.config();
|
|
42
52
|
const app = (0, express_1.default)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,YAAY,IAAI,MAAM;IAItB,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA2BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,KAAK,IAAI,MAAM;IAaf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMrC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"fractionNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/operators/fractionNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEjB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,aAAa,EACzB,IAAI,CAAC,EAAE,WAAW;IAUpB,YAAY,IAAI,MAAM;IAItB,UAAU;IAGV,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IA2BpC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAI5C,KAAK,IAAI,MAAM;IAaf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMrC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa;IAgJ/C,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;CAOrC"}
|
|
@@ -78,6 +78,9 @@ class FractionNode {
|
|
|
78
78
|
const simplifiedNum = this.leftChild.simplify(opts);
|
|
79
79
|
const simplifiedDenum = this.rightChild.simplify(opts);
|
|
80
80
|
const copy = new FractionNode(simplifiedNum, simplifiedDenum, this.opts);
|
|
81
|
+
if ((0, numberNode_1.isNumberNode)(simplifiedNum) && simplifiedNum.value === 0) {
|
|
82
|
+
return new numberNode_1.NumberNode(0);
|
|
83
|
+
}
|
|
81
84
|
if ((0, numberNode_1.isNumberNode)(simplifiedDenum) && simplifiedDenum.value === 1) {
|
|
82
85
|
return simplifiedNum;
|
|
83
86
|
}
|
|
@@ -86,11 +89,16 @@ class FractionNode {
|
|
|
86
89
|
}
|
|
87
90
|
const externalsNums = [];
|
|
88
91
|
const externalsDenums = [];
|
|
92
|
+
let oppositesCount = 0;
|
|
89
93
|
const recursiveNums = (node) => {
|
|
90
94
|
if ((0, multiplyNode_1.isMultiplyNode)(node)) {
|
|
91
95
|
recursiveNums(node.leftChild);
|
|
92
96
|
recursiveNums(node.rightChild);
|
|
93
97
|
}
|
|
98
|
+
else if ((0, oppositeNode_1.isOppositeNode)(node)) {
|
|
99
|
+
oppositesCount++;
|
|
100
|
+
recursiveNums(node.child);
|
|
101
|
+
}
|
|
94
102
|
else {
|
|
95
103
|
externalsNums.push(node);
|
|
96
104
|
}
|
|
@@ -100,19 +108,51 @@ class FractionNode {
|
|
|
100
108
|
recursiveDenums(node.leftChild);
|
|
101
109
|
recursiveDenums(node.rightChild);
|
|
102
110
|
}
|
|
111
|
+
else if ((0, oppositeNode_1.isOppositeNode)(node)) {
|
|
112
|
+
oppositesCount++;
|
|
113
|
+
recursiveNums(node.child);
|
|
114
|
+
}
|
|
103
115
|
else {
|
|
104
116
|
externalsDenums.push(node);
|
|
105
117
|
}
|
|
106
118
|
};
|
|
107
119
|
recursiveNums(copy.leftChild);
|
|
108
120
|
recursiveDenums(copy.rightChild);
|
|
121
|
+
if (oppositesCount % 2 === 1) {
|
|
122
|
+
externalsNums.unshift(new numberNode_1.NumberNode(-1));
|
|
123
|
+
}
|
|
109
124
|
const simplifyExternalNodes = (num, denum) => {
|
|
110
125
|
if ((0, numberNode_1.isNumberNode)(num) && (0, numberNode_1.isNumberNode)(denum)) {
|
|
126
|
+
// console.log("num nb, denum nb", num.toTex(), denum.toTex());
|
|
127
|
+
if (denum.value < 0) {
|
|
128
|
+
if (num.value < 0) {
|
|
129
|
+
return new FractionNode(new numberNode_1.NumberNode(-num.value), new numberNode_1.NumberNode(-denum.value));
|
|
130
|
+
}
|
|
131
|
+
return new oppositeNode_1.OppositeNode(new FractionNode(num, new numberNode_1.NumberNode(-denum.value)));
|
|
132
|
+
}
|
|
111
133
|
const frac = new rational_1.Rational(num.value, denum.value);
|
|
112
134
|
if (frac.isIrreductible())
|
|
113
135
|
return null;
|
|
114
136
|
return frac.simplify().toTree();
|
|
115
137
|
}
|
|
138
|
+
if ((0, numberNode_1.isNumberNode)(num) &&
|
|
139
|
+
(isFractionNode(denum) ||
|
|
140
|
+
((0, oppositeNode_1.isOppositeNode)(denum) && isFractionNode(denum.child)))) {
|
|
141
|
+
const trueDenum = isFractionNode(denum)
|
|
142
|
+
? denum
|
|
143
|
+
: denum.child;
|
|
144
|
+
return new multiplyNode_1.MultiplyNode(num, new FractionNode(trueDenum.rightChild, trueDenum.leftChild)).simplify();
|
|
145
|
+
}
|
|
146
|
+
if ((0, numberNode_1.isNumberNode)(denum) &&
|
|
147
|
+
(isFractionNode(num) ||
|
|
148
|
+
((0, oppositeNode_1.isOppositeNode)(num) && isFractionNode(num.child)))) {
|
|
149
|
+
// console.log("num frac, denum nb, ", num.toTex(), denum.toTex());
|
|
150
|
+
const trueNum = isFractionNode(num) ? num : num.child;
|
|
151
|
+
return new FractionNode(trueNum.leftChild, new multiplyNode_1.MultiplyNode(trueNum.rightChild, denum)).simplify();
|
|
152
|
+
}
|
|
153
|
+
if (isFractionNode(denum) && isFractionNode(num)) {
|
|
154
|
+
return new multiplyNode_1.MultiplyNode(num, new FractionNode(denum.rightChild, denum.leftChild)).simplify();
|
|
155
|
+
}
|
|
116
156
|
//!ya mieux à faire pour gérer tous les cas d'un coup
|
|
117
157
|
//! s'insiprer de multiply
|
|
118
158
|
if (num.equals(denum))
|
|
@@ -7,6 +7,7 @@ export declare enum ClosureType {
|
|
|
7
7
|
OF = 2,
|
|
8
8
|
OO = 3
|
|
9
9
|
}
|
|
10
|
+
export declare const closureFromBrackets: (left: "[" | "]", right: "]" | "[") => ClosureType;
|
|
10
11
|
export declare function isIntervalNode(a: Node): a is IntervalNode;
|
|
11
12
|
export declare class IntervalNode implements SetNode {
|
|
12
13
|
type: NodeType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAEvD,oBAAY,WAAW;IACrB,EAAE,IAAA;IACF,EAAE,IAAA;IACF,EAAE,IAAA;IACF,EAAE,IAAA;CACH;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,EAAE,IAAI,CAAC;IACR,CAAC,EAAE,IAAI,CAAC;gBACI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW;IAStE,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;IA4B/B,YAAY;IAIZ,QAAQ;IAIR,KAAK;CAWN"}
|
|
1
|
+
{"version":3,"file":"intervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/intervalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAEvD,oBAAY,WAAW;IACrB,EAAE,IAAA;IACF,EAAE,IAAA;IACF,EAAE,IAAA;IACF,EAAE,IAAA;CACH;AACD,eAAO,MAAM,mBAAmB,SAAU,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,gBAMpE,CAAC;AACF,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AACD,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,EAAE,IAAI,CAAC;IACR,CAAC,EAAE,IAAI,CAAC;gBACI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW;IAStE,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAoBpC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;IA4B/B,YAAY;IAIZ,QAAQ;IAIR,KAAK;CAWN"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IntervalNode = exports.isIntervalNode = exports.ClosureType = void 0;
|
|
3
|
+
exports.IntervalNode = exports.isIntervalNode = exports.closureFromBrackets = exports.ClosureType = void 0;
|
|
4
4
|
const cartesianProducts_1 = require("../../../utils/cartesianProducts");
|
|
5
5
|
const inequationNode_1 = require("../inequations/inequationNode");
|
|
6
6
|
const node_1 = require("../node");
|
|
@@ -14,6 +14,18 @@ var ClosureType;
|
|
|
14
14
|
ClosureType[ClosureType["OF"] = 2] = "OF";
|
|
15
15
|
ClosureType[ClosureType["OO"] = 3] = "OO";
|
|
16
16
|
})(ClosureType || (exports.ClosureType = ClosureType = {}));
|
|
17
|
+
const closureFromBrackets = (left, right) => {
|
|
18
|
+
if (left === "[")
|
|
19
|
+
if (right === "]")
|
|
20
|
+
return ClosureType.FF;
|
|
21
|
+
else
|
|
22
|
+
return ClosureType.FO;
|
|
23
|
+
else if (right === "[")
|
|
24
|
+
return ClosureType.OO;
|
|
25
|
+
else
|
|
26
|
+
return ClosureType.OF;
|
|
27
|
+
};
|
|
28
|
+
exports.closureFromBrackets = closureFromBrackets;
|
|
17
29
|
function isIntervalNode(a) {
|
|
18
30
|
return (0, setNode_1.isSetNode)(a) && a.id === setNode_1.SetIds.interval;
|
|
19
31
|
}
|
|
@@ -71,7 +83,7 @@ class IntervalNode {
|
|
|
71
83
|
const right = this.closure === ClosureType.FF || this.closure === ClosureType.OF
|
|
72
84
|
? "]"
|
|
73
85
|
: "[";
|
|
74
|
-
return `${left}${this.a.toTex()};${this.b.toTex()}${right}`;
|
|
86
|
+
return `${left}\\ ${this.a.toTex()};${this.b.toTex()}\\ ${right}\\ `;
|
|
75
87
|
}
|
|
76
88
|
}
|
|
77
89
|
exports.IntervalNode = IntervalNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=majorSets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"majorSets.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/majorSets.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AlgebraicNode } from "../algebraicNode";
|
|
1
2
|
import { Node, NodeOptions, NodeType } from "../node";
|
|
2
3
|
import { SetIds, SetNode } from "./setNode";
|
|
3
4
|
export declare enum ClosureType {
|
|
@@ -7,6 +8,9 @@ export declare enum ClosureType {
|
|
|
7
8
|
OO = 3
|
|
8
9
|
}
|
|
9
10
|
export declare function isUnionIntervalNode(a: Node): a is UnionIntervalNode;
|
|
11
|
+
export declare abstract class UnionIntervalNodeBuilder {
|
|
12
|
+
static realMinus(a: AlgebraicNode): UnionIntervalNode;
|
|
13
|
+
}
|
|
10
14
|
export declare class UnionIntervalNode implements Node {
|
|
11
15
|
type: NodeType;
|
|
12
16
|
id: SetIds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unionIntervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/unionIntervalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"unionIntervalNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/sets/unionIntervalNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAEvD,oBAAY,WAAW;IACrB,EAAE,IAAA;IACF,EAAE,IAAA;IACF,EAAE,IAAA;IACF,EAAE,IAAA;CACH;AACD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,iBAAiB,CAEnE;AACD,8BAAsB,wBAAwB;IAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa;CAMlC;AACD,qBAAa,iBAAkB,YAAW,IAAI;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;gBACJ,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IAO/C,cAAc;IAId,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAcpC,YAAY;IAIZ,QAAQ;IAIR,KAAK;CAGN"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnionIntervalNode = exports.isUnionIntervalNode = exports.ClosureType = void 0;
|
|
3
|
+
exports.UnionIntervalNode = exports.UnionIntervalNodeBuilder = exports.isUnionIntervalNode = exports.ClosureType = void 0;
|
|
4
4
|
const cartesianProducts_1 = require("../../../utils/cartesianProducts");
|
|
5
5
|
const permutations_1 = require("../../../utils/permutations");
|
|
6
6
|
const node_1 = require("../node");
|
|
7
|
+
const infiniteNode_1 = require("../numbers/infiniteNode");
|
|
8
|
+
const intervalNode_1 = require("./intervalNode");
|
|
7
9
|
const setNode_1 = require("./setNode");
|
|
8
10
|
var ClosureType;
|
|
9
11
|
(function (ClosureType) {
|
|
@@ -16,6 +18,15 @@ function isUnionIntervalNode(a) {
|
|
|
16
18
|
return (0, setNode_1.isSetNode)(a) && a.id === setNode_1.SetIds.union;
|
|
17
19
|
}
|
|
18
20
|
exports.isUnionIntervalNode = isUnionIntervalNode;
|
|
21
|
+
class UnionIntervalNodeBuilder {
|
|
22
|
+
static realMinus(a) {
|
|
23
|
+
return new UnionIntervalNode([
|
|
24
|
+
new intervalNode_1.IntervalNode(infiniteNode_1.MinusInfinityNode, a, ClosureType.OO),
|
|
25
|
+
new intervalNode_1.IntervalNode(a, infiniteNode_1.MinusInfinityNode, ClosureType.OO),
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.UnionIntervalNodeBuilder = UnionIntervalNodeBuilder;
|
|
19
30
|
class UnionIntervalNode {
|
|
20
31
|
constructor(sets, opts) {
|
|
21
32
|
this.type = node_1.NodeType.set;
|
|
@@ -44,7 +55,7 @@ class UnionIntervalNode {
|
|
|
44
55
|
return this.toTex();
|
|
45
56
|
}
|
|
46
57
|
toTex() {
|
|
47
|
-
return this.sets.map((set) => set.toTex()).join("\\cup");
|
|
58
|
+
return this.sets.map((set) => set.toTex()).join("\\ \\cup\\ ");
|
|
48
59
|
}
|
|
49
60
|
}
|
|
50
61
|
exports.UnionIntervalNode = UnionIntervalNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=numberType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberType.d.ts","sourceRoot":"","sources":["../../src/types/numberType.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|