math-exercises 1.3.2 → 1.3.3

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 (89) hide show
  1. package/README.md +71 -71
  2. package/lib/exercises/calcul/addAndSub.js +40 -39
  3. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.js +35 -34
  4. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.js +31 -31
  5. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.js +32 -31
  6. package/lib/exercises/calcul/fractions/fractionsDivision.js +29 -28
  7. package/lib/exercises/calcul/fractions/fractionsProduct.js +29 -28
  8. package/lib/exercises/calcul/fractions/fractionsSum.js +29 -28
  9. package/lib/exercises/calcul/fractions/simplifyFraction.js +25 -24
  10. package/lib/exercises/calcul/operationsPriorities.js +88 -88
  11. package/lib/exercises/calcul/rounding/rounding.js +86 -85
  12. package/lib/exercises/calculLitteral/distributivity/allIdentities.js +27 -27
  13. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +31 -30
  14. package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +32 -31
  15. package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +33 -32
  16. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +33 -32
  17. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +32 -31
  18. package/lib/exercises/calculLitteral/equation/equationType1Exercise.js +38 -37
  19. package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +41 -40
  20. package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +42 -41
  21. package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +44 -43
  22. package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.js +39 -38
  23. package/lib/exercises/exercise.js +7 -7
  24. package/lib/exercises/exercises.js +85 -95
  25. package/lib/exercises/powers/powersDivision.js +45 -44
  26. package/lib/exercises/powers/powersOfTenToDecimal.js +33 -32
  27. package/lib/exercises/powers/powersPower.js +44 -43
  28. package/lib/exercises/powers/powersProduct.js +45 -44
  29. package/lib/exercises/powers/scientificToDecimal.js +38 -37
  30. package/lib/exercises/squareRoots/simpifySquareRoot.js +28 -27
  31. package/lib/exercises/utils/getDistinctQuestions.js +15 -15
  32. package/lib/geometry/point.js +1 -27
  33. package/lib/index.js +5 -9
  34. package/lib/mathutils/arithmetic/coprimesOf.js +13 -13
  35. package/lib/mathutils/arithmetic/dividersOf.js +12 -12
  36. package/lib/mathutils/arithmetic/gcd.js +7 -7
  37. package/lib/mathutils/arithmetic/isSquare.js +7 -7
  38. package/lib/mathutils/arithmetic/lcd.js +12 -12
  39. package/lib/mathutils/arithmetic/nonCoprimesOf.js +13 -13
  40. package/lib/mathutils/arithmetic/nonDividersOf.js +14 -14
  41. package/lib/mathutils/arithmetic/primeFactors.js +22 -22
  42. package/lib/mathutils/decimals/decimalPartLengthOf.js +14 -14
  43. package/lib/mathutils/random/randint.js +18 -18
  44. package/lib/mathutils/round.js +8 -8
  45. package/lib/numbers/decimals/decimal.js +140 -140
  46. package/lib/numbers/epsilon.js +10 -10
  47. package/lib/numbers/integer/integer.js +68 -68
  48. package/lib/numbers/integer/power.js +52 -52
  49. package/lib/numbers/nombre.js +10 -10
  50. package/lib/numbers/rationals/rational.js +113 -113
  51. package/lib/numbers/reals/real.js +16 -16
  52. package/lib/numbers/reals/squareRoot.js +63 -63
  53. package/lib/polynomials/affine.js +42 -42
  54. package/lib/polynomials/polynomial.js +125 -125
  55. package/lib/sets/discreteSet.js +28 -28
  56. package/lib/sets/emptySet.js +6 -6
  57. package/lib/sets/intervals/intervals.js +108 -108
  58. package/lib/sets/intervals/union.js +1 -1
  59. package/lib/sets/mathSet.js +10 -10
  60. package/lib/sets/mathSetInterface.js +2 -2
  61. package/lib/tree/nodes/functions/functionNode.js +18 -18
  62. package/lib/tree/nodes/functions/oppositeNode.js +13 -26
  63. package/lib/tree/nodes/functions/sqrtNode.js +15 -18
  64. package/lib/tree/nodes/node.js +10 -10
  65. package/lib/tree/nodes/numbers/numberNode.js +15 -18
  66. package/lib/tree/nodes/operators/addNode.js +15 -19
  67. package/lib/tree/nodes/operators/divideNode.js +17 -34
  68. package/lib/tree/nodes/operators/equalNode.js +13 -16
  69. package/lib/tree/nodes/operators/fractionNode.js +17 -20
  70. package/lib/tree/nodes/operators/multiplyNode.js +13 -36
  71. package/lib/tree/nodes/operators/operatorNode.js +35 -35
  72. package/lib/tree/nodes/operators/powerNode.js +13 -33
  73. package/lib/tree/nodes/operators/substractNode.js +13 -24
  74. package/lib/tree/nodes/variables/variableNode.js +16 -19
  75. package/lib/tree/parsers/derivateParser.js +60 -62
  76. package/lib/tree/parsers/latexParser.js +117 -110
  77. package/lib/utils/coin.js +7 -7
  78. package/lib/utils/random.js +7 -7
  79. package/lib/utils/shuffle.js +15 -15
  80. package/package.json +41 -38
  81. package/lib/exercises/calcul/operations/operationsPriorities.js +0 -98
  82. package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.js +0 -111
  83. package/lib/exercises/geometry/cartesian/midpoint.js +0 -29
  84. package/lib/exercises/geometry/vectors/scalarProductViaCoords.js +0 -28
  85. package/lib/exercises/geometry/vectors/scalarProductViaNorms.js +0 -27
  86. package/lib/geometry/vector.js +0 -31
  87. package/lib/mathutils/random/randTupleInt.js +0 -30
  88. package/lib/tree/parsers/simplify.js +0 -51
  89. package/lib/utils/arrayEqual.js +0 -13
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getScalarProductViaCoordsQuestion = exports.scalarProductViaCoords = void 0;
4
- const vector_1 = require("../../../geometry/vector");
5
- const randTupleInt_1 = require("../../../mathutils/random/randTupleInt");
6
- const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
7
- const getDistinctQuestions_1 = require("../../utils/getDistinctQuestions");
8
- exports.scalarProductViaCoords = {
9
- id: 'scalarProductViaCoords',
10
- connector: '=',
11
- instruction: '',
12
- isSingleStep: false,
13
- label: "Calculer un produit scalaire à l'aide des coordonnées",
14
- levels: ['1, 0'],
15
- section: 'Vecteurs',
16
- generator: (nb) => (0, getDistinctQuestions_1.getDistinctQuestions)(getScalarProductViaCoordsQuestion, nb),
17
- };
18
- function getScalarProductViaCoordsQuestion() {
19
- const [coords1, coords2] = (0, randTupleInt_1.distinctRandTupleInt)(2, 2, { from: -9, to: 10 });
20
- const u = new vector_1.Vector('u', new numberNode_1.NumberNode(coords1[0]), new numberNode_1.NumberNode(coords1[1]));
21
- const v = new vector_1.Vector('v', new numberNode_1.NumberNode(coords2[0]), new numberNode_1.NumberNode(coords2[1]));
22
- return {
23
- instruction: `Soit $${u.toTexWithCoords()}$ et $${v.toTexWithCoords()}$. Calculer $${u.toTex()}\\cdot ${v.toTex()}$.`,
24
- startStatement: `${u.toTex()}\\cdot ${v.toTex()}`,
25
- answer: u.scalarProduct(v).toTex(),
26
- };
27
- }
28
- exports.getScalarProductViaCoordsQuestion = getScalarProductViaCoordsQuestion;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- // import { Vector } from "../../../geometry/vector";
3
- // import { distinctRandTupleInt } from "../../../mathutils/random/randTupleInt";
4
- // import { NumberNode } from "../../../tree/nodes/numbers/numberNode";
5
- // import { latexParser } from "../../../tree/parsers/latexParser";
6
- // import { Exercise, Question } from "../../exercise";
7
- // import { getDistinctQuestions } from "../../utils/getDistinctQuestions";
8
- // export const scalarProductViaNorms : Exercise = {
9
- // id: 'scalarProductViaNorms',
10
- // connector: "=",
11
- // instruction: "",
12
- // isSingleStep: false,
13
- // label: "Calculer un produit scalaire à l'aide des normes.",
14
- // levels: ["1, 0"],
15
- // section: "vectors",
16
- // generator: (nb: number) => getDistinctQuestions(getScalarProductViaNormsQuestion, nb)
17
- // }
18
- // export function getScalarProductViaNormsQuestion(): Question {
19
- // const [coords1, coords2] = distinctRandTupleInt(2, 2, {from: -9, to: 10})
20
- // const u = new Vector("u", new NumberNode(coords1[0]), new NumberNode(coords1[1]))
21
- // const v = new Vector("v", new NumberNode(coords2[0]), new NumberNode(coords2[1]))
22
- // return {
23
- // instruction: `Soit ${u.toTexWithCoords()} et ${v.toTexWithCoords()}. Calculer ${u.toTex()}\\cdot ${v.toTex()}.`,
24
- // startStatement: `${u.toTex()}\\cdot ${v.toTex()}`,
25
- // answer: latexParser(u.scalarProduct(v)),
26
- // }
27
- // }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Vector = exports.VectorConstructor = void 0;
4
- const addNode_1 = require("../tree/nodes/operators/addNode");
5
- const multiplyNode_1 = require("../tree/nodes/operators/multiplyNode");
6
- const substractNode_1 = require("../tree/nodes/operators/substractNode");
7
- const simplify_1 = require("../tree/parsers/simplify");
8
- class VectorConstructor {
9
- static fromPoints(origin, end) {
10
- return new Vector(`${origin.name}${end.name}`, new substractNode_1.SubstractNode(end.x, origin.x), new substractNode_1.SubstractNode(end.y, origin.y));
11
- }
12
- }
13
- exports.VectorConstructor = VectorConstructor;
14
- class Vector {
15
- constructor(name, x, y) {
16
- this.name = name;
17
- this.tex = `\\overrightarrow{${name}}`;
18
- this.x = x;
19
- this.y = y;
20
- }
21
- toTex() {
22
- return `\\overrightarrow{${this.name}}`;
23
- }
24
- toTexWithCoords() {
25
- return `\\overrightarrow{${this.name}}\\begin{pmatrix}${this.x.toTex()} \\\\ ${this.y.toTex()} \\end{pmatrix}`;
26
- }
27
- scalarProduct(v) {
28
- return (0, simplify_1.simplifyNode)(new addNode_1.AddNode(new multiplyNode_1.MultiplyNode(this.x, v.x), new multiplyNode_1.MultiplyNode(this.y, v.y)));
29
- }
30
- }
31
- exports.Vector = Vector;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.distinctRandTupleInt = exports.randTupleInt = void 0;
4
- const arrayEqual_1 = require("../../utils/arrayEqual");
5
- const randint_1 = require("./randint");
6
- /**
7
- * @param size tuple length
8
- * @param options
9
- * @returns array of size nb with contents = randint(from, to, exxcludes)
10
- */
11
- const randTupleInt = (size, options) => {
12
- const res = [];
13
- for (let i = 0; i < size; i++) {
14
- res.push((0, randint_1.randint)(options.from, options.to, options.excludes));
15
- }
16
- return res;
17
- };
18
- exports.randTupleInt = randTupleInt;
19
- const distinctRandTupleInt = (nb, size, options) => {
20
- const res = [];
21
- for (let i = 0; i < nb; i++) {
22
- let newTuple;
23
- do {
24
- newTuple = (0, exports.randTupleInt)(size, options);
25
- } while (res.some(tuple => (0, arrayEqual_1.arrayEqual)(tuple, newTuple)));
26
- res.push(newTuple);
27
- }
28
- return res;
29
- };
30
- exports.distinctRandTupleInt = distinctRandTupleInt;
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.simplifyNode = void 0;
4
- const mathjs_1 = require("mathjs");
5
- const oppositeNode_1 = require("../nodes/functions/oppositeNode");
6
- const sqrtNode_1 = require("../nodes/functions/sqrtNode");
7
- const numberNode_1 = require("../nodes/numbers/numberNode");
8
- const addNode_1 = require("../nodes/operators/addNode");
9
- const fractionNode_1 = require("../nodes/operators/fractionNode");
10
- const multiplyNode_1 = require("../nodes/operators/multiplyNode");
11
- const powerNode_1 = require("../nodes/operators/powerNode");
12
- const substractNode_1 = require("../nodes/operators/substractNode");
13
- const variableNode_1 = require("../nodes/variables/variableNode");
14
- const simplifyNode = (node) => {
15
- console.log(node.toMathString());
16
- return mathjsNodeToNode((0, mathjs_1.simplify)(node.toMathString()));
17
- };
18
- exports.simplifyNode = simplifyNode;
19
- const mathjsNodeToNode = (mathjsNode) => {
20
- console.log(mathjsNode);
21
- if (mathjsNode.isSymbolNode) {
22
- return new variableNode_1.VariableNode(mathjsNode.name);
23
- }
24
- else if (mathjsNode.isConstantNode) {
25
- return new numberNode_1.NumberNode(mathjsNode.value);
26
- }
27
- else if (mathjsNode.isOperatorNode) {
28
- switch (mathjsNode.fn) {
29
- case 'add':
30
- return new addNode_1.AddNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
31
- case 'substract':
32
- return new substractNode_1.SubstractNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
33
- case 'unaryMinus':
34
- return new oppositeNode_1.OppositeNode(mathjsNodeToNode(mathjsNode.args[0]));
35
- case 'divide':
36
- return new fractionNode_1.FractionNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
37
- case 'multiply':
38
- return new multiplyNode_1.MultiplyNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
39
- case 'pow':
40
- return new powerNode_1.PowerNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
41
- }
42
- }
43
- else if (mathjsNode.isFunctionNode) {
44
- const fn = mathjsNode.fn;
45
- switch (fn.name) {
46
- case 'sqrt':
47
- return new sqrtNode_1.SqrtNode(mathjsNodeToNode(mathjsNode.args[0]));
48
- }
49
- }
50
- throw Error('unrecognized mathjs node');
51
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arrayEqual = void 0;
4
- function arrayEqual(arr1, arr2) {
5
- if (arr1.length !== arr2.length)
6
- return false;
7
- for (let i = 0; i < arr1.length; i++) {
8
- if (arr1[i] !== arr2[i])
9
- return false;
10
- }
11
- return true;
12
- }
13
- exports.arrayEqual = arrayEqual;