math-exercises 1.3.30 → 1.3.32

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 (65) hide show
  1. package/lib/exercises/calcul/fractions/fractionToPercentToDecimal.js +2 -2
  2. package/lib/exercises/calculLitteral/equation/fractionEquation.d.ts +4 -0
  3. package/lib/exercises/calculLitteral/equation/fractionEquation.d.ts.map +1 -0
  4. package/lib/exercises/calculLitteral/equation/fractionEquation.js +39 -0
  5. package/lib/exercises/calculLitteral/equation/multiplicationEquation.d.ts +4 -0
  6. package/lib/exercises/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -0
  7. package/lib/exercises/calculLitteral/equation/multiplicationEquation.js +39 -0
  8. package/lib/exercises/conversion/aeraConversion.d.ts.map +1 -1
  9. package/lib/exercises/conversion/aeraConversion.js +4 -2
  10. package/lib/exercises/conversion/capacityConversion.js +1 -1
  11. package/lib/exercises/conversion/lengthConversion.js +1 -1
  12. package/lib/exercises/conversion/massConversion.js +1 -1
  13. package/lib/exercises/conversion/volumeCapacityConversion.d.ts.map +1 -1
  14. package/lib/exercises/conversion/volumeCapacityConversion.js +5 -3
  15. package/lib/exercises/conversion/volumeConversion.d.ts.map +1 -1
  16. package/lib/exercises/conversion/volumeConversion.js +4 -2
  17. package/lib/exercises/exercise.d.ts +1 -0
  18. package/lib/exercises/exercise.d.ts.map +1 -1
  19. package/lib/exercises/exercises.d.ts.map +1 -1
  20. package/lib/exercises/exercises.js +26 -0
  21. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV1.d.ts +4 -0
  22. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV1.d.ts.map +1 -0
  23. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV1.js +30 -0
  24. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV2.d.ts +4 -0
  25. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV2.d.ts.map +1 -0
  26. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV2.js +29 -0
  27. package/lib/exercises/geometry/cartesian/midpoint.js +1 -1
  28. package/lib/exercises/geometry/euclidean/TriangleArea.d.ts +4 -0
  29. package/lib/exercises/geometry/euclidean/TriangleArea.d.ts.map +1 -0
  30. package/lib/exercises/geometry/euclidean/TriangleArea.js +53 -0
  31. package/lib/exercises/geometry/euclidean/pythagore.d.ts +4 -0
  32. package/lib/exercises/geometry/euclidean/pythagore.d.ts.map +1 -0
  33. package/lib/exercises/geometry/euclidean/pythagore.js +31 -0
  34. package/lib/exercises/geometry/euclidean/pythagoreCalcul.d.ts +4 -0
  35. package/lib/exercises/geometry/euclidean/pythagoreCalcul.d.ts.map +1 -0
  36. package/lib/exercises/geometry/euclidean/pythagoreCalcul.js +60 -0
  37. package/lib/exercises/geometry/euclidean/rightTriangleArea.d.ts +4 -0
  38. package/lib/exercises/geometry/euclidean/rightTriangleArea.d.ts.map +1 -0
  39. package/lib/exercises/geometry/euclidean/rightTriangleArea.js +39 -0
  40. package/lib/exercises/geometry/euclidean/thales.d.ts +4 -0
  41. package/lib/exercises/geometry/euclidean/thales.d.ts.map +1 -0
  42. package/lib/exercises/geometry/euclidean/thales.js +67 -0
  43. package/lib/exercises/geometry/euclidean/thalesCalcul.d.ts +4 -0
  44. package/lib/exercises/geometry/euclidean/thalesCalcul.d.ts.map +1 -0
  45. package/lib/exercises/geometry/euclidean/thalesCalcul.js +104 -0
  46. package/lib/exercises/geometry/euclidean/trigonometry.d.ts +4 -0
  47. package/lib/exercises/geometry/euclidean/trigonometry.d.ts.map +1 -0
  48. package/lib/exercises/geometry/euclidean/trigonometry.js +55 -0
  49. package/lib/exercises/geometry/euclidean/trigonometryAngleCalcul.d.ts +4 -0
  50. package/lib/exercises/geometry/euclidean/trigonometryAngleCalcul.d.ts.map +1 -0
  51. package/lib/exercises/geometry/euclidean/trigonometryAngleCalcul.js +42 -0
  52. package/lib/exercises/geometry/euclidean/trigonometrySideCalcul.d.ts +4 -0
  53. package/lib/exercises/geometry/euclidean/trigonometrySideCalcul.d.ts.map +1 -0
  54. package/lib/exercises/geometry/euclidean/trigonometrySideCalcul.js +52 -0
  55. package/lib/exercises/proba/probabilityTree.d.ts.map +1 -1
  56. package/lib/exercises/proba/probabilityTree.js +11 -6
  57. package/lib/math/geometry/droite.d.ts.map +1 -1
  58. package/lib/math/geometry/droite.js +3 -2
  59. package/lib/math/geometry/point.d.ts +4 -0
  60. package/lib/math/geometry/point.d.ts.map +1 -1
  61. package/lib/math/geometry/point.js +15 -0
  62. package/lib/math/geometry/triangles.d.ts +54 -0
  63. package/lib/math/geometry/triangles.d.ts.map +1 -0
  64. package/lib/math/geometry/triangles.js +183 -0
  65. package/package.json +1 -1
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Triangle = exports.TriangleConstructor = void 0;
4
+ const point_1 = require("./point");
5
+ const substractNode_1 = require("../../tree/nodes/operators/substractNode");
6
+ const powerNode_1 = require("../../tree/nodes/operators/powerNode");
7
+ const addNode_1 = require("../../tree/nodes/operators/addNode");
8
+ const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
9
+ const sqrtNode_1 = require("../../tree/nodes/functions/sqrtNode");
10
+ const randint_1 = require("../utils/random/randint");
11
+ class TriangleConstructor {
12
+ static createRandomRightTriangle({ minRapport = 0, maxRapport = 5, names = ['A', 'B', 'C'] }) {
13
+ let pointA, pointB, pointC, d1, d2;
14
+ do {
15
+ const xA = (0, randint_1.randint)(-10, 11);
16
+ const yA = (0, randint_1.randint)(-10, 11);
17
+ const xB = (0, randint_1.randint)(-10, 11);
18
+ const yB = (0, randint_1.randint)(-10, 11);
19
+ pointA = new point_1.Point(names[0], new numberNode_1.NumberNode(xA), new numberNode_1.NumberNode(yA));
20
+ pointB = new point_1.Point(names[1], new numberNode_1.NumberNode(xB), new numberNode_1.NumberNode(yB));
21
+ d1 = pointA.distanceTo(pointB);
22
+ const xC = (0, randint_1.randint)(-11, 10);
23
+ const yC = yA - ((xB - xA) * (xC - xA)) / (yB - yA);
24
+ pointC = new point_1.Point(names[2], new numberNode_1.NumberNode(xC), new numberNode_1.NumberNode(yC));
25
+ d2 = pointA.distanceTo(pointC);
26
+ } while (!d1 || !d2 || d1 / d2 < minRapport || d1 / d2 > maxRapport);
27
+ return new Triangle(pointA, pointB, pointC);
28
+ }
29
+ static createRandomTriangle({ minAngle = 0.69, maxAngle = 1.5, names = ['A', 'B', 'C'] }) {
30
+ let pointA, pointB, pointC, triangle;
31
+ do {
32
+ pointA = new point_1.Point(names[0], new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)), new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)));
33
+ pointB = new point_1.Point(names[1], new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)), new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)));
34
+ pointC = new point_1.Point(names[2], new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)), new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)));
35
+ triangle = new Triangle(pointA, pointB, pointC);
36
+ } while (triangle.isRight() ||
37
+ pointA.distanceTo(pointB) === 0 ||
38
+ pointB.distanceTo(pointC) === 0 ||
39
+ pointC.distanceTo(pointA) === 0 ||
40
+ triangle.getAngleA() < minAngle ||
41
+ triangle.getAngleA() > maxAngle ||
42
+ triangle.getAngleB() < minAngle ||
43
+ triangle.getAngleB() > maxAngle);
44
+ return new Triangle(pointA, pointB, pointC);
45
+ }
46
+ }
47
+ exports.TriangleConstructor = TriangleConstructor;
48
+ class Triangle {
49
+ constructor(vertexA, vertexB, vertexC) {
50
+ this.vertexA = vertexA;
51
+ this.vertexB = vertexB;
52
+ this.vertexC = vertexC;
53
+ }
54
+ getSideAnumber() {
55
+ return Math.hypot(this.vertexC.getXnumber() - this.vertexB.getXnumber(), this.vertexC.getYnumber() - this.vertexB.getYnumber());
56
+ }
57
+ getSideBnumber() {
58
+ return Math.hypot(this.vertexA.getXnumber() - this.vertexC.getXnumber(), this.vertexA.getYnumber() - this.vertexC.getYnumber());
59
+ }
60
+ getSideCnumber() {
61
+ return this.vertexA.distanceTo(this.vertexB);
62
+ }
63
+ getTriangleName() {
64
+ return this.vertexA.name + this.vertexB.name + this.vertexC.name;
65
+ }
66
+ getSideAnode() {
67
+ return new sqrtNode_1.SqrtNode(new addNode_1.AddNode(new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.x, this.vertexB.x), new numberNode_1.NumberNode(2)), new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.y, this.vertexB.y), new numberNode_1.NumberNode(2))));
68
+ }
69
+ getSideBnode() {
70
+ return new sqrtNode_1.SqrtNode(new addNode_1.AddNode(new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.x, this.vertexA.x), new numberNode_1.NumberNode(2)), new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.y, this.vertexA.y), new numberNode_1.NumberNode(2))));
71
+ }
72
+ getSideCnode() {
73
+ return new sqrtNode_1.SqrtNode(new addNode_1.AddNode(new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexA.x, this.vertexB.x), new numberNode_1.NumberNode(2)), new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.y, this.vertexB.y), new numberNode_1.NumberNode(2))));
74
+ }
75
+ getAngleA() {
76
+ return Math.acos((this.getSideBnumber() ** 2 + this.getSideCnumber() ** 2 - this.getSideAnumber() ** 2) /
77
+ (2 * this.getSideBnumber() * this.getSideCnumber()));
78
+ }
79
+ getAngleB() {
80
+ return Math.acos((this.getSideAnumber() ** 2 + this.getSideCnumber() ** 2 - this.getSideBnumber() ** 2) /
81
+ (2 * this.getSideAnumber() * this.getSideCnumber()));
82
+ }
83
+ getAngleC() {
84
+ return Math.acos((this.getSideAnumber() ** 2 + this.getSideBnumber() ** 2 - this.getSideCnumber() ** 2) /
85
+ (2 * this.getSideAnumber() * this.getSideBnumber()));
86
+ }
87
+ getPerimeter() {
88
+ return this.getSideAnumber() + this.getSideBnumber() + this.getSideCnumber();
89
+ }
90
+ getArea() {
91
+ const s = this.getPerimeter() / 2;
92
+ return Math.sqrt(s * (s - this.getSideAnumber()) * (s - this.getSideBnumber()) * (s - this.getSideCnumber()));
93
+ }
94
+ isRight() {
95
+ if (Math.abs(Math.cos(this.getAngleA())) < 0.001)
96
+ return true;
97
+ if (Math.abs(Math.cos(this.getAngleB())) < 0.001)
98
+ return true;
99
+ if (Math.abs(Math.cos(this.getAngleC())) < 0.001)
100
+ return true;
101
+ return false;
102
+ }
103
+ isEquilateral() {
104
+ return this.getSideAnumber() === this.getSideBnumber() && this.getSideAnumber() === this.getSideCnumber();
105
+ }
106
+ isIsosceles() {
107
+ return (this.getSideAnumber() === this.getSideBnumber() ||
108
+ this.getSideAnumber() === this.getSideCnumber() ||
109
+ this.getSideBnumber() === this.getSideCnumber());
110
+ }
111
+ isScalene() {
112
+ return (this.getSideAnumber() !== this.getSideBnumber() &&
113
+ this.getSideBnumber() !== this.getSideCnumber() &&
114
+ this.getSideCnumber() !== this.getSideAnumber());
115
+ }
116
+ getRightAngle() {
117
+ if (Math.abs(Math.cos(this.getAngleA())) < 0.001)
118
+ return this.vertexA.name;
119
+ if (Math.abs(Math.cos(this.getAngleB())) < 0.001)
120
+ return this.vertexB.name;
121
+ if (Math.abs(Math.cos(this.getAngleC())) < 0.001)
122
+ return this.vertexC.name;
123
+ return '';
124
+ }
125
+ generateCommands({ highlightedAngle: highlightedAngle, colorHighlightedAngle: colorHighlightedAngle, showLabels: showLabels, setCaptions: setCaptions, highlightedSide: highlightedSide, colorHighlightedSide: colorHighlightedSide, showAxes, showGrid, }) {
126
+ let commands = [
127
+ `${this.vertexA.name} = Point({${this.vertexA.getXnumber()}, ${this.vertexA.getYnumber()}})`,
128
+ `${this.vertexB.name} = Point({${this.vertexB.getXnumber()}, ${this.vertexB.getYnumber()}})`,
129
+ `${this.vertexC.name} = Point({${this.vertexC.getXnumber()}, ${this.vertexC.getYnumber()}})`,
130
+ `ShowLabel(${this.vertexA.name}, true)`,
131
+ `ShowLabel(${this.vertexB.name}, true)`,
132
+ `ShowLabel(${this.vertexC.name}, true)`,
133
+ `${this.getSideCName()} = Segment(${this.vertexA.name}, ${this.vertexB.name})`,
134
+ `${this.getSideBName()} = Segment(${this.vertexA.name}, ${this.vertexC.name})`,
135
+ `${this.getSideAName()} = Segment(${this.vertexC.name}, ${this.vertexB.name})`,
136
+ `ShowLabel(${this.getSideCName()}, false)`,
137
+ `ShowLabel(${this.getSideBName()}, false)`,
138
+ `ShowLabel(${this.getSideBName()}, false)`,
139
+ `ShowAxes(${showAxes !== null && showAxes !== void 0 ? showAxes : false})`,
140
+ `ShowGrid(${showGrid !== null && showGrid !== void 0 ? showGrid : false})`,
141
+ ];
142
+ if (this.isRight())
143
+ commands.push(`alpha = Angle(${this.vertexB.name},${this.vertexA.name},${this.vertexC.name}, Line(${this.vertexB.name},${this.vertexA.name}))`, `ShowLabel(alpha, false)`);
144
+ const defautColor = 'Red';
145
+ if (highlightedAngle) {
146
+ let temp = [''];
147
+ if (highlightedAngle === this.vertexB.name)
148
+ temp = [this.vertexA.name, this.vertexB.name, this.vertexC.name];
149
+ if (highlightedAngle === this.vertexC.name)
150
+ temp = [this.vertexB.name, this.vertexC.name, this.vertexA.name];
151
+ if (highlightedAngle === this.vertexA.name)
152
+ temp = [this.vertexC.name, this.vertexA.name, this.vertexB.name];
153
+ commands.push(`be = Angle(${temp[0]}, ${temp[1]}, ${temp[2]}, Line(${temp[0]}, ${temp[1]}))`, `ShowLabel(be, false)`, `SetColor(be, "${colorHighlightedAngle !== null && colorHighlightedAngle !== void 0 ? colorHighlightedAngle : defautColor}")`);
154
+ }
155
+ if (showLabels)
156
+ for (let i = 0; i < showLabels.length; i++) {
157
+ commands.push(`ShowLabel(${showLabels[i]}, true)`);
158
+ if (setCaptions)
159
+ commands.push(`SetCaption(${showLabels[i]}, "${setCaptions[i]}")`);
160
+ }
161
+ if (highlightedSide)
162
+ commands.push(`SetColor(${highlightedSide}, "${colorHighlightedSide !== null && colorHighlightedSide !== void 0 ? colorHighlightedSide : defautColor}")`);
163
+ return commands;
164
+ }
165
+ generateCoords() {
166
+ return [
167
+ Math.min(this.vertexA.getXnumber(), this.vertexB.getXnumber(), this.vertexC.getXnumber()) - 1,
168
+ Math.max(this.vertexA.getXnumber(), this.vertexB.getXnumber(), this.vertexC.getXnumber()) + 1,
169
+ Math.min(this.vertexA.getYnumber(), this.vertexB.getYnumber(), this.vertexC.getYnumber()) - 1,
170
+ Math.max(this.vertexA.getYnumber(), this.vertexB.getYnumber(), this.vertexC.getYnumber()) + 1,
171
+ ];
172
+ }
173
+ getSideAName() {
174
+ return this.vertexB.name + this.vertexC.name;
175
+ }
176
+ getSideBName() {
177
+ return this.vertexC.name + this.vertexA.name;
178
+ }
179
+ getSideCName() {
180
+ return this.vertexA.name + this.vertexB.name;
181
+ }
182
+ }
183
+ exports.Triangle = Triangle;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "math-exercises",
3
- "version": "1.3.30",
3
+ "version": "1.3.32",
4
4
  "description": "Math exercises generator for middle school and high school",
5
5
  "main": "lib/index.js",
6
6
  "files": [