math-exercises 3.0.88 → 3.0.89
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/exercise.d.ts +1 -1
- package/lib/exercises/exercise.d.ts.map +1 -1
- package/lib/exercises/math/calcul/arithmetics/findZeroesProductQuotient.d.ts +11 -0
- package/lib/exercises/math/calcul/arithmetics/findZeroesProductQuotient.d.ts.map +1 -0
- package/lib/exercises/math/calcul/arithmetics/findZeroesProductQuotient.js +213 -0
- package/lib/exercises/math/calcul/arithmetics/index.d.ts +1 -0
- package/lib/exercises/math/calcul/arithmetics/index.d.ts.map +1 -1
- package/lib/exercises/math/calcul/arithmetics/index.js +1 -0
- package/lib/exercises/math/functions/basics/index.d.ts +1 -0
- package/lib/exercises/math/functions/basics/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/basics/index.js +2 -0
- package/lib/exercises/math/functions/basics/signOfFunction.d.ts +8 -0
- package/lib/exercises/math/functions/basics/signOfFunction.d.ts.map +1 -0
- package/lib/exercises/math/functions/basics/signOfFunction.js +122 -0
- package/lib/exercises/math/functions/square/squareImageInterval.d.ts.map +1 -1
- package/lib/exercises/math/functions/square/squareImageInterval.js +7 -1
- package/lib/exercises/math/geometry/vectors/colinearity/alignementViaColinearity.d.ts +12 -0
- package/lib/exercises/math/geometry/vectors/colinearity/alignementViaColinearity.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/colinearity/alignementViaColinearity.js +127 -0
- package/lib/exercises/math/geometry/vectors/colinearity/colinearity.d.ts +11 -0
- package/lib/exercises/math/geometry/vectors/colinearity/colinearity.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/colinearity/colinearity.js +118 -0
- package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromBasis.d.ts +11 -0
- package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromBasis.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/colinearity/colinearityFromBasis.js +158 -0
- package/lib/exercises/math/geometry/vectors/colinearity/index.d.ts +4 -0
- package/lib/exercises/math/geometry/vectors/colinearity/index.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/colinearity/index.js +3 -0
- package/lib/exercises/math/geometry/vectors/distributeAndReduceVectors.d.ts +9 -0
- package/lib/exercises/math/geometry/vectors/distributeAndReduceVectors.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/distributeAndReduceVectors.js +155 -0
- package/lib/exercises/math/geometry/vectors/index.d.ts +1 -2
- package/lib/exercises/math/geometry/vectors/index.d.ts.map +1 -1
- package/lib/exercises/math/geometry/vectors/index.js +2 -2
- package/lib/exercises/math/index.d.ts +1 -0
- package/lib/exercises/math/index.d.ts.map +1 -1
- package/lib/exercises/math/index.js +1 -0
- package/lib/exercises/math/primitive/polynomialPrimitive.d.ts.map +1 -1
- package/lib/exercises/math/primitive/polynomialPrimitive.js +10 -1
- package/lib/exercises/math/probaStat/basicProbas/rouletteProbas.js +1 -1
- package/lib/exercises/math/python/variableAffectation.js +2 -2
- package/lib/exercises/math/tests/index.d.ts +4 -0
- package/lib/exercises/math/tests/index.d.ts.map +1 -0
- package/lib/exercises/math/tests/index.js +3 -0
- package/lib/exercises/math/tests/testMultiLineSignTable.d.ts +9 -0
- package/lib/exercises/math/tests/testMultiLineSignTable.d.ts.map +1 -0
- package/lib/exercises/math/tests/testMultiLineSignTable.js +156 -0
- package/lib/exercises/math/tests/testSignTable.d.ts +8 -0
- package/lib/exercises/math/tests/testSignTable.d.ts.map +1 -0
- package/lib/exercises/math/tests/testSignTable.js +90 -0
- package/lib/exercises/math/tests/testVarTable.d.ts +11 -0
- package/lib/exercises/math/tests/testVarTable.d.ts.map +1 -0
- package/lib/exercises/math/tests/testVarTable.js +147 -0
- package/lib/exercises/math/trigonometry/index.d.ts +1 -0
- package/lib/exercises/math/trigonometry/index.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/index.js +1 -0
- package/lib/exercises/math/trigonometry/trigoFundamentalEquation.d.ts +9 -0
- package/lib/exercises/math/trigonometry/trigoFundamentalEquation.d.ts.map +1 -0
- package/lib/exercises/math/trigonometry/trigoFundamentalEquation.js +151 -0
- package/lib/index.d.ts +42 -12
- package/lib/index.d.ts.map +1 -1
- package/lib/latexTester.js +2 -0
- package/lib/math/numbers/reals/real.d.ts.map +1 -1
- package/lib/math/numbers/reals/real.js +7 -2
- package/lib/tests/exoTest.d.ts.map +1 -1
- package/lib/tests/exoTest.js +9 -3
- package/lib/tests/questionTest.d.ts.map +1 -1
- package/lib/tests/questionTest.js +19 -10
- package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/addNode.js +3 -1
- package/lib/tree/parsers/latexParser.d.ts.map +1 -1
- package/lib/tree/parsers/latexParser.js +10 -0
- package/lib/types/keyIds.d.ts +1 -1
- package/lib/types/keyIds.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -142,7 +142,7 @@ export interface Exercise<TIdentifiers = {}, TOptions = {}> {
|
|
|
142
142
|
connector?: "=" | "\\iff" | "\\approx";
|
|
143
143
|
generator: (n: number, opts?: TOptions) => Question<TIdentifiers, TOptions>[];
|
|
144
144
|
maxAllowedQuestions?: number;
|
|
145
|
-
answerType?: "GGB" | "QCM" | "free" | "QCU" | "valueTable";
|
|
145
|
+
answerType?: "GGB" | "QCM" | "free" | "QCU" | "valueTable" | "varTable" | "signTable";
|
|
146
146
|
isQCM?: boolean;
|
|
147
147
|
shouldHaveCalculator?: boolean;
|
|
148
148
|
qcmTimer?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercises/exercise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD,eAAO,MAAM,SAAS,iBACN,WAAW,EAAE,KACxB,MAAM,WACA,MAAM,IAAI,SAQpB,CAAC;AACF,eAAO,MAAM,YAAY,UAChB,WAAW,EAAE,aACT,MAAM,WACT,KAAK,GAAG,KAAK,SAQtB,CAAC;AACF,eAAO,MAAM,YAAY,UAChB,WAAW,EAAE,aACT,MAAM,WACT,KAAK,GAAG,KAAK,SAQtB,CAAC;AACF,eAAO,MAAM,iBAAiB,UACrB,WAAW,EAAE,aACT,MAAM,WACT,KAAK,GAAG,KAAK,SAUtB,CAAC;AAEF,eAAO,MAAM,YAAY,UAChB,WAAW,EAAE,KACjB,MAAM,sBACW,MAAM,kBAQ3B,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AACD,oBAAY,mBAAmB;IAC7B,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,WAAW,gBAAgB;CAC5B;AACD,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,GAAG,IAAI;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,oCAAoC,CAAC,EAAE,OAAO,CAAC;CAChD,CAAC;AAEF,MAAM,WAAW,QAAQ,CAAC,YAAY,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;IAE5B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,KAAK,CAAC,EAAE;QACN,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACvC,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACtD,CAAC,EAAE,MAAM,EACT,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,EACvC,OAAO,CAAC,EAAE,QAAQ,KACf,WAAW,EAAE,CAAC;AACnB,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CAC7C,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,EACvC,OAAO,CAAC,EAAE,QAAQ,KACf,OAAO,CAAC;AACb,MAAM,MAAM,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CAClD,aAAa,EAAE,MAAM,EAAE,EAAE,EACzB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,GAAG,YAAY,EAChD,OAAO,CAAC,EAAE,QAAQ,KACf,OAAO,CAAC;AACb,MAAM,MAAM,MAAM,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CAChD,aAAa,EAAE,MAAM,EAAE,EACvB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,YAAY,EAC5C,OAAO,CAAC,EAAE,QAAQ,KACf,OAAO,CAAC;AACb,MAAM,MAAM,iBAAiB,CAAC,YAAY,GAAG,EAAE,EAAE,QAAQ,GAAG,GAAG,IAAI,CACjE,IAAI,CAAC,EAAE,QAAQ,KACZ,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACtC,MAAM,MAAM,OAAO,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACjD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,CAAC;AACZ,MAAM,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACvD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,CAAC;AACZ,MAAM,MAAM,cAAc,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACxD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,CAAC;AACZ,MAAM,MAAM,iBAAiB,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CAC3D,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,CAAC;AACZ,MAAM,MAAM,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACnD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,CAAC;AACZ,MAAM,MAAM,cAAc,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACxD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,EAAE,EAAE,CAAC;AAChB,MAAM,MAAM,OAAO,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACjD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC1B,MAAM,MAAM,YAAY,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACtD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,MAAM,EAAE,CAAC;AACd,MAAM,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACvD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,eAAe,CAAC;AACrB,MAAM,MAAM,oBAAoB,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CAC9D,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,QAAQ,KACf,eAAe,CAAC;AACrB,MAAM,MAAM,kBAAkB,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CAC5D,cAAc,EAAE,GAAG,EACnB,OAAO,CAAC,EAAE,QAAQ,KACf,YAAY,CAAC;AAClB,MAAM,MAAM,0BAA0B,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACpE,WAAW,EAAE,YAAY,EACzB,OAAO,CAAC,EAAE,QAAQ,KACf,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACtC,MAAM,MAAM,cAAc,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,CACxD,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EACzB,OAAO,CAAC,EAAE,QAAQ,KACf,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5B,MAAM,MAAM,eAAe,CAAC,QAAQ,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK;IAClE,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI;IAClD,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,IAAI,MAAM,QAAQ,CAChE,YAAY,EACZ,QAAQ,CACT,EAAE,CAAC;AACJ,KAAK,UAAU,GAAG;IAEhB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AACF,MAAM,WAAW,QAAQ,CAAC,YAAY,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,GAAG,OAAO,GAAG,UAAU,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EACP,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,YAAY,GACZ,UAAU,GACV,WAAW,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,YAAY,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC5E,aAAa,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC5C,kBAAkB,CAAC,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,eAAe,GAAG,QAAQ,GAAG,UAAU,CAAC;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACxD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAExD,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpD,aAAa,CAAC,EAAE,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChE,0BAA0B,EAAE,0BAA0B,CACpD,YAAY,EACZ,QAAQ,CACT,CAAC;IACF,MAAM,CAAC,EAAE,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1E,QAAQ,CAAC,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CAC7C;AAED,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,cAAc,GACd,iBAAiB,GACjB,SAAS,GACT,8BAA8B,GAC9B,aAAa,GACb,YAAY,GACZ,SAAS,GACT,0BAA0B,GAC1B,WAAW,GACX,2BAA2B,GAC3B,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,WAAW,GACX,mBAAmB,GACnB,wBAAwB,GACxB,WAAW,GACX,uBAAuB,GACvB,uBAAuB,GACvB,aAAa,GACb,aAAa,GACb,SAAS,GACT,qBAAqB,GACrB,oBAAoB,GACpB,UAAU,GACV,mBAAmB,GACnB,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,iBAAiB,GACjB,cAAc,GACd,cAAc,GACd,QAAQ,GACR,UAAU,GACV,uBAAuB,GACvB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,UAAU,CAAC;AAEf,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,SAAS,GACT,cAAc,GACd,+CAA+C,GAC/C,OAAO,GACP,KAAK,GACL,wBAAwB,GACxB,SAAS,GACT,KAAK,GACL,aAAa,GACb,4BAA4B,GAC5B,oBAAoB,GACpB,WAAW,GACX,iBAAiB,GACjB,SAAS,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
type: number;
|
|
4
|
+
a: number;
|
|
5
|
+
b?: number;
|
|
6
|
+
c?: number;
|
|
7
|
+
d?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const findZeroesProductQuotient: Exercise<Identifiers>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=findZeroesProductQuotient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findZeroesProductQuotient.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/arithmetics/findZeroesProductQuotient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAqCrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AA+MF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAkB3D,CAAC"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { Affine } from "../../../../math/polynomials/affine.js";
|
|
4
|
+
import { Polynomial } from "../../../../math/polynomials/polynomial.js";
|
|
5
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
6
|
+
import { EquationSolutionNode } from "../../../../tree/nodes/equations/equationSolutionNode.js";
|
|
7
|
+
import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
|
|
8
|
+
import { sqrt } from "../../../../tree/nodes/functions/sqrtNode.js";
|
|
9
|
+
import { frac, isFractionNode, } from "../../../../tree/nodes/operators/fractionNode.js";
|
|
10
|
+
import { multiply, } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
11
|
+
import { square } from "../../../../tree/nodes/operators/powerNode.js";
|
|
12
|
+
import { substract } from "../../../../tree/nodes/operators/substractNode.js";
|
|
13
|
+
import { DiscreteSetNode } from "../../../../tree/nodes/sets/discreteSetNode.js";
|
|
14
|
+
import { discreteSetParser } from "../../../../tree/parsers/discreteSetParser.js";
|
|
15
|
+
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
16
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
17
|
+
import { alignTex } from "../../../../utils/latex/alignTex.js";
|
|
18
|
+
const getPropositions = (n, { answer }) => {
|
|
19
|
+
const propositions = [];
|
|
20
|
+
addValidProp(propositions, answer);
|
|
21
|
+
while (propositions.length < n) {
|
|
22
|
+
const oneSol = coinFlip();
|
|
23
|
+
const a = randint(-10, 10);
|
|
24
|
+
const b = randint(-10, 10, [a]);
|
|
25
|
+
const roots = oneSol
|
|
26
|
+
? [a.toTree()]
|
|
27
|
+
: [a, b].sort((a, b) => a - b).map((e) => e.toTree());
|
|
28
|
+
tryToAddWrongProp(propositions, new EquationSolutionNode(new DiscreteSetNode(roots)).toTex());
|
|
29
|
+
}
|
|
30
|
+
return shuffleProps(propositions, n);
|
|
31
|
+
};
|
|
32
|
+
const getRoots = (identifiers) => {
|
|
33
|
+
const { a, b, c, d } = identifiers;
|
|
34
|
+
switch (identifiers.type) {
|
|
35
|
+
case 0:
|
|
36
|
+
return [frac(-b, a), frac(-d, c)].sort((r1, r2) => r1.evaluate() - r2.evaluate());
|
|
37
|
+
case 1:
|
|
38
|
+
return [frac(-b, a)];
|
|
39
|
+
case 2:
|
|
40
|
+
default:
|
|
41
|
+
return [opposite(sqrt(a)), sqrt(a)];
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const getAnswer = (identifiers) => {
|
|
45
|
+
const roots = getRoots(identifiers).map((r) => r.simplify());
|
|
46
|
+
return new EquationSolutionNode(new DiscreteSetNode(roots)).toTex();
|
|
47
|
+
};
|
|
48
|
+
const buildFunc = (identifiers) => {
|
|
49
|
+
const { type, a, b, c, d } = identifiers;
|
|
50
|
+
switch (type) {
|
|
51
|
+
case 0: //product
|
|
52
|
+
return multiply(new Affine(a, b).toTree(), new Affine(c, d).toTree());
|
|
53
|
+
break;
|
|
54
|
+
case 1: //quotient
|
|
55
|
+
return frac(new Affine(a, b).toTree(), new Affine(c, d).toTree());
|
|
56
|
+
break;
|
|
57
|
+
case 2: //x^2 -k
|
|
58
|
+
default:
|
|
59
|
+
return substract(square("x"), a);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const getInstruction = (identifiers) => {
|
|
64
|
+
const { type, a, b, c, d } = identifiers;
|
|
65
|
+
const myFuncNode = buildFunc(identifiers);
|
|
66
|
+
return `Déterminer la ou les valeurs d'annulation de la fonction suivante :
|
|
67
|
+
|
|
68
|
+
$$
|
|
69
|
+
f(x)=${myFuncNode.toTex()}
|
|
70
|
+
$$`;
|
|
71
|
+
};
|
|
72
|
+
const getHint = (identifiers) => {
|
|
73
|
+
const type = identifiers.type;
|
|
74
|
+
if (type === 0) {
|
|
75
|
+
return `Un produit est nul si et seulement si au moins un des deux facteurs est nul. Cherche les valeurs de $x$ qui annulent chaque facteur.`;
|
|
76
|
+
}
|
|
77
|
+
if (type === 1) {
|
|
78
|
+
return `Un quotient est nul lorsque son numérateur est nul, et son dénominateur non nul. Cherche donc les valeurs de $x$ qui rendent le numérateur nul, mais pas le dénominateur.`;
|
|
79
|
+
}
|
|
80
|
+
return `Cherche les solutions de l'équation $x^2 = k$.`;
|
|
81
|
+
};
|
|
82
|
+
const getCorrection = (identifiers) => {
|
|
83
|
+
const myFunc = buildFunc(identifiers);
|
|
84
|
+
const tex = myFunc.toTex();
|
|
85
|
+
const answer = getAnswer(identifiers);
|
|
86
|
+
const { type, a, b, c, d } = identifiers;
|
|
87
|
+
if (type === 0) {
|
|
88
|
+
const polynome1 = new Polynomial([b, a]);
|
|
89
|
+
const polynome2 = new Polynomial([d, c]);
|
|
90
|
+
const sol1 = frac(-b, a).simplify();
|
|
91
|
+
const sol2 = frac(-d, c).simplify();
|
|
92
|
+
return `Un produit est nul si et seulement si un des deux facteurs est nul. On résout donc deux équations :
|
|
93
|
+
|
|
94
|
+
${alignTex([
|
|
95
|
+
["", buildFunc(identifiers).toTex() + "=0"],
|
|
96
|
+
[
|
|
97
|
+
"\\iff",
|
|
98
|
+
`${polynome1.toTree().toTex()} = 0 \\text{ ou } ${polynome2
|
|
99
|
+
.toTree()
|
|
100
|
+
.toTex()} = 0`,
|
|
101
|
+
],
|
|
102
|
+
["\\iff", `x=${sol1.toTex()} \\text{ ou } x=${sol2.toTex()}`],
|
|
103
|
+
])}
|
|
104
|
+
|
|
105
|
+
Ainsi, $${getAnswer(identifiers)}$`;
|
|
106
|
+
}
|
|
107
|
+
if (isFractionNode(myFunc)) {
|
|
108
|
+
const polynome1 = new Polynomial([b, a]);
|
|
109
|
+
const polynome2 = new Polynomial([d, c]);
|
|
110
|
+
const root1 = frac(-b, a).simplify().toTex();
|
|
111
|
+
const root2 = frac(-d, c).simplify().toTex();
|
|
112
|
+
const answer = getAnswer(identifiers);
|
|
113
|
+
return `Un quotient est nul si est seulement si le numérateur est nul et le dénominateur est non nul. Ainsi :
|
|
114
|
+
|
|
115
|
+
${alignTex([
|
|
116
|
+
["", buildFunc(identifiers).toTex() + "=0"],
|
|
117
|
+
["\\iff", `${polynome1.toTex()}=0 \\text{ et } ${polynome2.toTex()}\\neq 0`],
|
|
118
|
+
["\\iff", `x=${root1} \\text{ et } x\\neq ${root2}`],
|
|
119
|
+
])}
|
|
120
|
+
|
|
121
|
+
Il y a donc bien une solution pour cette équation :
|
|
122
|
+
|
|
123
|
+
$$
|
|
124
|
+
${answer}
|
|
125
|
+
$$`;
|
|
126
|
+
}
|
|
127
|
+
return `On résout l'équation :
|
|
128
|
+
|
|
129
|
+
${alignTex([
|
|
130
|
+
["", buildFunc(identifiers).toTex() + "=0"],
|
|
131
|
+
["\\iff", `x^2=${a}`],
|
|
132
|
+
])}
|
|
133
|
+
|
|
134
|
+
Il y a donc deux solutions à cette équaton :
|
|
135
|
+
|
|
136
|
+
$$
|
|
137
|
+
${getAnswer(identifiers)}
|
|
138
|
+
$$
|
|
139
|
+
`;
|
|
140
|
+
};
|
|
141
|
+
const getKeys = (identifiers) => {
|
|
142
|
+
return ["S", "equal", "lbrace", "semicolon", "rbrace"];
|
|
143
|
+
};
|
|
144
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
145
|
+
try {
|
|
146
|
+
const parsed = discreteSetParser(ans);
|
|
147
|
+
if (!parsed)
|
|
148
|
+
return false;
|
|
149
|
+
return "S=" + parsed.simplify().toTex() === answer;
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
return handleVEAError(err);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
const getFindZeroesProductQuotientQuestion = () => {
|
|
156
|
+
const type = randint(0, 3);
|
|
157
|
+
let a = 0;
|
|
158
|
+
let b = undefined;
|
|
159
|
+
let c = undefined;
|
|
160
|
+
let d = undefined;
|
|
161
|
+
switch (type) {
|
|
162
|
+
case 0: //product
|
|
163
|
+
a = randint(-10, 10, [0]);
|
|
164
|
+
b = randint(-10, 10);
|
|
165
|
+
do {
|
|
166
|
+
c = randint(-10, 10, [0]);
|
|
167
|
+
d = randint(-10, 10, [0]);
|
|
168
|
+
} while (a / c === b / d);
|
|
169
|
+
break;
|
|
170
|
+
case 1: //quotient
|
|
171
|
+
a = randint(-10, 10, [0]);
|
|
172
|
+
b = randint(-10, 10);
|
|
173
|
+
do {
|
|
174
|
+
c = randint(-10, 10, [0]);
|
|
175
|
+
d = randint(-10, 10, [0]);
|
|
176
|
+
} while (a / c === b / d);
|
|
177
|
+
break;
|
|
178
|
+
case 2: //x^2 -k
|
|
179
|
+
default:
|
|
180
|
+
a = randint(1, 11) ** 2;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
const identifiers = { type, a, b, c, d };
|
|
184
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
185
|
+
};
|
|
186
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
187
|
+
return {
|
|
188
|
+
answer: getAnswer(identifiers),
|
|
189
|
+
instruction: getInstruction(identifiers),
|
|
190
|
+
keys: getKeys(identifiers),
|
|
191
|
+
answerFormat: "tex",
|
|
192
|
+
identifiers,
|
|
193
|
+
hint: getHint(identifiers),
|
|
194
|
+
correction: getCorrection(identifiers),
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
export const findZeroesProductQuotient = {
|
|
198
|
+
id: "findZeroesProductQuotient",
|
|
199
|
+
label: "Déterminer la ou les valeur d'annulation d'une fonction par le calcul",
|
|
200
|
+
isSingleStep: true,
|
|
201
|
+
generator: (nb, opts) => getDistinctQuestions(() => getFindZeroesProductQuotientQuestion(opts), nb),
|
|
202
|
+
qcmTimer: 60,
|
|
203
|
+
freeTimer: 60,
|
|
204
|
+
getPropositions,
|
|
205
|
+
isAnswerValid,
|
|
206
|
+
subject: "Mathématiques",
|
|
207
|
+
getInstruction,
|
|
208
|
+
getHint,
|
|
209
|
+
getCorrection,
|
|
210
|
+
getAnswer,
|
|
211
|
+
getQuestionFromIdentifiers,
|
|
212
|
+
hasHintAndCorrection: true,
|
|
213
|
+
};
|
|
@@ -18,4 +18,5 @@ export * from "./isMultipleOrDivisor.js";
|
|
|
18
18
|
export * from "./compareInverseValues.js";
|
|
19
19
|
export * from "./compareSquaredValues.js";
|
|
20
20
|
export * from "./decimalBoundingOnLine.js";
|
|
21
|
+
export * from "./findZeroesProductQuotient.js";
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/arithmetics/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/calcul/arithmetics/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
|
|
@@ -9,6 +9,7 @@ export * from "./twoFunctionsInequation.js";
|
|
|
9
9
|
export * from "./inverseImageFunctionTable.js";
|
|
10
10
|
export * from "./imageAntecedentFromSentence.js";
|
|
11
11
|
export * from "./graphicInequationAffine.js";
|
|
12
|
+
export * from "./signOfFunction.js";
|
|
12
13
|
export * from "./valueTableCompletion.js";
|
|
13
14
|
export * from "./valueTableFromGraph.js";
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
|
|
@@ -9,5 +9,7 @@ export * from "./twoFunctionsInequation.js";
|
|
|
9
9
|
export * from "./inverseImageFunctionTable.js";
|
|
10
10
|
export * from "./imageAntecedentFromSentence.js";
|
|
11
11
|
export * from "./graphicInequationAffine.js";
|
|
12
|
+
// export * from "./valueTableCompletion.js";
|
|
13
|
+
export * from "./signOfFunction.js";
|
|
12
14
|
export * from "./valueTableCompletion.js";
|
|
13
15
|
export * from "./valueTableFromGraph.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signOfFunction.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/signOfFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAmBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IAEV,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAgHF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAkBhD,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
4
|
+
import { abs } from "../../../../tree/nodes/functions/absNode.js";
|
|
5
|
+
import { multiply, } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
6
|
+
import { MonomNode, } from "../../../../tree/nodes/polynomials/monomNode.js";
|
|
7
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
8
|
+
const getPropositions = (n, { answer }) => {
|
|
9
|
+
const propositions = [];
|
|
10
|
+
addValidProp(propositions, answer, "raw");
|
|
11
|
+
tryToAddWrongProp(propositions, "Positive", "raw");
|
|
12
|
+
tryToAddWrongProp(propositions, "Nulle", "raw");
|
|
13
|
+
tryToAddWrongProp(propositions, "Négative", "raw");
|
|
14
|
+
tryToAddWrongProp(propositions, "La fonction change de signe sur $\\mathbb{R}$", "raw");
|
|
15
|
+
return shuffleProps(propositions, n);
|
|
16
|
+
};
|
|
17
|
+
const buildFunc = (identifiers) => {
|
|
18
|
+
const { a, type } = identifiers;
|
|
19
|
+
if (type === 0) {
|
|
20
|
+
return a.toTree();
|
|
21
|
+
}
|
|
22
|
+
if (type === 1) {
|
|
23
|
+
return new MonomNode(a, 2, { variable: "x" });
|
|
24
|
+
}
|
|
25
|
+
return multiply(a, abs("x"));
|
|
26
|
+
};
|
|
27
|
+
const getAnswer = (identifiers) => {
|
|
28
|
+
const node = buildFunc(identifiers).simplify();
|
|
29
|
+
const value = node.evaluate({ x: 1 });
|
|
30
|
+
if (value === 0)
|
|
31
|
+
return "Nulle";
|
|
32
|
+
return value > 0 ? "Positive" : "Négative";
|
|
33
|
+
};
|
|
34
|
+
const getInstruction = (identifiers) => {
|
|
35
|
+
const node = buildFunc(identifiers).simplify();
|
|
36
|
+
return `Donner le signe de la fonction suivante sur $\\mathbb{R}$ :
|
|
37
|
+
|
|
38
|
+
$$
|
|
39
|
+
f(x) = ${node.toTex()}
|
|
40
|
+
$$`;
|
|
41
|
+
};
|
|
42
|
+
const getHint = (identifiers) => {
|
|
43
|
+
const { type } = identifiers;
|
|
44
|
+
if (type === 0)
|
|
45
|
+
return `$f$ est une fonction constante, c'est à dire que $f(x)$ vaut toujours le même nombre quelle que soit la valeur de $x$.`;
|
|
46
|
+
return `$f(x)$ est un produit, donc son signe dépend des signes des deux facteurs. Utilise la règle des signes.`;
|
|
47
|
+
};
|
|
48
|
+
const getCorrection = (identifiers) => {
|
|
49
|
+
const node = buildFunc(identifiers).simplify();
|
|
50
|
+
const value = node.evaluate({ x: 1 });
|
|
51
|
+
const type = identifiers.type;
|
|
52
|
+
const word = value > 0 ? "positif" : "négatif";
|
|
53
|
+
const feminized = value > 0 ? "positive" : "négative";
|
|
54
|
+
if (type === 0) {
|
|
55
|
+
return `$f$ est une fonction constante égale à $${node.toTex()}$.
|
|
56
|
+
|
|
57
|
+
Puisque $${node.toTex()}$ est ${word}, la fonction $f$ est ${feminized} sur $\\mathbb{R}$.`;
|
|
58
|
+
}
|
|
59
|
+
if (type === 1) {
|
|
60
|
+
return `$f(x)$ est un produit. On étudie le signe de chacun des facteurs :
|
|
61
|
+
|
|
62
|
+
- $${identifiers.a}$ est ${word} sur $\\mathbb{R}$ ;
|
|
63
|
+
- $x^2$ est positif sur $\\mathbb{R}$, car un carré est toujours positif.
|
|
64
|
+
|
|
65
|
+
D'après la régle des signes, $f$ est donc ${feminized} sur $\\mathbb{R}$.`;
|
|
66
|
+
}
|
|
67
|
+
return `$f(x)$ est un produit. On étudie le signe de chacun des facteurs :
|
|
68
|
+
|
|
69
|
+
- $${identifiers.a}$ est ${word} sur $\\mathbb{R}$ ;
|
|
70
|
+
- $|x|$ est positif sur $\\mathbb{R}$, car une valeur absolue est toujours positive.
|
|
71
|
+
|
|
72
|
+
D'après la régle des signes, $f$ est donc ${feminized} sur $\\mathbb{R}$.`;
|
|
73
|
+
};
|
|
74
|
+
const getKeys = (identifiers) => {
|
|
75
|
+
return [];
|
|
76
|
+
};
|
|
77
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
78
|
+
try {
|
|
79
|
+
return ans === answer;
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
return handleVEAError(err);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const getSignOfFunctionQuestion = (ops) => {
|
|
86
|
+
const a = randint(-20, 20);
|
|
87
|
+
const exp1 = new MonomNode(a, 2, { variable: "x" });
|
|
88
|
+
const exp2 = multiply(a, abs("x"));
|
|
89
|
+
const type = randint(0, 3);
|
|
90
|
+
const myFunc = [a.toTree(), exp1, exp2][type];
|
|
91
|
+
const identifiers = { a, type };
|
|
92
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
93
|
+
};
|
|
94
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
95
|
+
return {
|
|
96
|
+
answer: getAnswer(identifiers),
|
|
97
|
+
instruction: getInstruction(identifiers),
|
|
98
|
+
keys: getKeys(identifiers),
|
|
99
|
+
answerFormat: "raw",
|
|
100
|
+
identifiers,
|
|
101
|
+
hint: getHint(identifiers),
|
|
102
|
+
correction: getCorrection(identifiers),
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
export const signOfFunction = {
|
|
106
|
+
id: "signOfFunction",
|
|
107
|
+
label: "Donner le signe d'une fonction qui ne change pas de signe",
|
|
108
|
+
isSingleStep: true,
|
|
109
|
+
generator: (nb, opts) => getDistinctQuestions(() => getSignOfFunctionQuestion(opts), nb),
|
|
110
|
+
qcmTimer: 60,
|
|
111
|
+
freeTimer: 60,
|
|
112
|
+
getPropositions,
|
|
113
|
+
isAnswerValid,
|
|
114
|
+
subject: "Mathématiques",
|
|
115
|
+
getInstruction,
|
|
116
|
+
getHint,
|
|
117
|
+
getCorrection,
|
|
118
|
+
getAnswer,
|
|
119
|
+
getQuestionFromIdentifiers,
|
|
120
|
+
hasHintAndCorrection: true,
|
|
121
|
+
answerType: "QCU",
|
|
122
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"squareImageInterval.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/square/squareImageInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"squareImageInterval.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/square/squareImageInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAW,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAMxE,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAgKF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAYrD,CAAC"}
|
|
@@ -57,7 +57,7 @@ const getInstruction = (identifiers) => {
|
|
|
57
57
|
.toTex();
|
|
58
58
|
break;
|
|
59
59
|
}
|
|
60
|
-
return `Soit $${instruction}$.
|
|
60
|
+
return `Soit $x$ un nombre réel tel que $${instruction}$.
|
|
61
61
|
|
|
62
62
|
À quel intervalle appartient $x^2$ ?`;
|
|
63
63
|
};
|
|
@@ -88,6 +88,12 @@ const getSquareImageIntervalQuestion = () => {
|
|
|
88
88
|
const identifiers = { a, b, closure, type };
|
|
89
89
|
return getQuestionFromIdentifiers(identifiers);
|
|
90
90
|
};
|
|
91
|
+
const getHint = (identifiers) => {
|
|
92
|
+
return ``;
|
|
93
|
+
};
|
|
94
|
+
const getCorrection = (identifiers) => {
|
|
95
|
+
return ``;
|
|
96
|
+
};
|
|
91
97
|
const getQuestionFromIdentifiers = (identifiers) => {
|
|
92
98
|
const question = {
|
|
93
99
|
answer: getAnswer(identifiers),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Exercise } from "../../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
xA: number;
|
|
4
|
+
xB: number;
|
|
5
|
+
xC: number;
|
|
6
|
+
yA: number;
|
|
7
|
+
yB: number;
|
|
8
|
+
yC: number;
|
|
9
|
+
};
|
|
10
|
+
export declare const alignementViaColinearity: Exercise<Identifiers>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=alignementViaColinearity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignementViaColinearity.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/geometry/vectors/colinearity/alignementViaColinearity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAWrC,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AA8HF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,WAAW,CAa1D,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { addValidProp, tryToAddWrongProp, } from "../../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { Point, PointConstructor } from "../../../../../math/geometry/point.js";
|
|
4
|
+
import { Vector, VectorConstructor } from "../../../../../math/geometry/vector.js";
|
|
5
|
+
import { randint } from "../../../../../math/utils/random/randint.js";
|
|
6
|
+
import { NumberNode } from "../../../../../tree/nodes/numbers/numberNode.js";
|
|
7
|
+
import { substract } from "../../../../../tree/nodes/operators/substractNode.js";
|
|
8
|
+
import { coinFlip } from "../../../../../utils/alea/coinFlip.js";
|
|
9
|
+
import { shuffle } from "../../../../../utils/alea/shuffle.js";
|
|
10
|
+
const getPoints = (identifiers) => {
|
|
11
|
+
const { xA, xB, xC, yA, yB, yC } = identifiers;
|
|
12
|
+
return [
|
|
13
|
+
new Point("A", xA, yA),
|
|
14
|
+
new Point("B", xB, yB),
|
|
15
|
+
new Point("C", xC, yC),
|
|
16
|
+
];
|
|
17
|
+
};
|
|
18
|
+
const getInstruction = (identifiers) => {
|
|
19
|
+
const points = getPoints(identifiers);
|
|
20
|
+
return `Soient trois points $${points[0].toTexWithCoords()}$, $${points[1].toTexWithCoords()}$ et $${points[2].toTexWithCoords()}$ dans un repère orthonormé.
|
|
21
|
+
|
|
22
|
+
Les points $A$, $B$ et $C$ sont-ils alignés ?`;
|
|
23
|
+
};
|
|
24
|
+
const getAnswer = (identifiers) => {
|
|
25
|
+
const points = getPoints(identifiers);
|
|
26
|
+
const vec1 = VectorConstructor.fromPoints(points[0], points[1]);
|
|
27
|
+
const vec2 = VectorConstructor.fromPoints(points[0], points[2]);
|
|
28
|
+
const isAligned = vec1.isColinear(vec2);
|
|
29
|
+
const answer = isAligned ? "Oui" : "Non";
|
|
30
|
+
return answer;
|
|
31
|
+
};
|
|
32
|
+
const getHint = (identifiers) => {
|
|
33
|
+
return `Les points $A$, $B$ et $C$ sont alignés si et seulement si les vecteurs $\\overrightarrow{AB}$ et $\\overrightarrow{AC}$ sont colinéaires.`;
|
|
34
|
+
};
|
|
35
|
+
const getCorrection = (identifiers) => {
|
|
36
|
+
const points = getPoints(identifiers);
|
|
37
|
+
const vec1 = new Vector("AB", substract(points[1].x, points[0].x), substract(points[1].y, points[0].y));
|
|
38
|
+
const vec1Simp = vec1.simplify();
|
|
39
|
+
const vec2 = new Vector("AC", substract(points[2].x, points[0].x), substract(points[2].y, points[0].y));
|
|
40
|
+
const vec2Simp = vec2.simplify();
|
|
41
|
+
const det = vec1Simp.determinant(vec2Simp);
|
|
42
|
+
const isAligned = vec1.isColinear(vec2);
|
|
43
|
+
return `Les points $A$, $B$ et $C$ sont alignés si et seulement si les vecteurs $\\overrightarrow{AB}$ et $\\overrightarrow{AC}$ sont colinéaires.
|
|
44
|
+
|
|
45
|
+
On calcule les coordonnées de ces vecteurs :
|
|
46
|
+
|
|
47
|
+
$$
|
|
48
|
+
${vec1.toTexWithCoords()}=${vec1Simp.toBinomCoords().toTex()}
|
|
49
|
+
$$
|
|
50
|
+
|
|
51
|
+
et
|
|
52
|
+
|
|
53
|
+
$$
|
|
54
|
+
${vec2.toTexWithCoords()}=${vec2Simp.toBinomCoords().toTex()}
|
|
55
|
+
$$
|
|
56
|
+
|
|
57
|
+
On calcule ensuite le déterminant des deux vecteurs :
|
|
58
|
+
|
|
59
|
+
$$
|
|
60
|
+
\\det(${vec1.toTex()};${vec2.toTex()})=${det.toTex()}=${det.simplify().toTex()}
|
|
61
|
+
$$
|
|
62
|
+
|
|
63
|
+
${isAligned
|
|
64
|
+
? `Puisque le déterminant est nul, les vecteurs sont colinéaires. Les points $A$, $B$ et $C$ sont donc alignés.`
|
|
65
|
+
: `Puisque le déterminant n'est pas nul, les vecteurs ne sont pas colinéaires. Les points $A$, $B$ et $C$ ne sont donc pas alignés.`}`;
|
|
66
|
+
};
|
|
67
|
+
const getAlignementViaColinearityQuestion = () => {
|
|
68
|
+
const xA = randint(-10, 11);
|
|
69
|
+
const yA = randint(-10, 11);
|
|
70
|
+
const xB = randint(-10, 11, [xA]);
|
|
71
|
+
const yB = randint(-10, 11, [yA]);
|
|
72
|
+
const points = [new Point("A", xA, yA), new Point("B", xB, yB)];
|
|
73
|
+
const AB = VectorConstructor.fromPoints(points[0], points[1]);
|
|
74
|
+
let C;
|
|
75
|
+
const isAligned = coinFlip();
|
|
76
|
+
const coeff = new NumberNode(randint(-4, 4, [0, 1]));
|
|
77
|
+
if (isAligned) {
|
|
78
|
+
C = AB.times(coeff).getEndPoint(points[0], "C");
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
do {
|
|
82
|
+
C = PointConstructor.random("C");
|
|
83
|
+
} while (AB.isColinear(VectorConstructor.fromPoints(points[0], C)));
|
|
84
|
+
}
|
|
85
|
+
const identifiers = {
|
|
86
|
+
xA,
|
|
87
|
+
xB,
|
|
88
|
+
xC: C.x.evaluate({}),
|
|
89
|
+
yA,
|
|
90
|
+
yB,
|
|
91
|
+
yC: C.y.evaluate({}),
|
|
92
|
+
};
|
|
93
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
94
|
+
};
|
|
95
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
96
|
+
const question = {
|
|
97
|
+
answer: getAnswer(identifiers),
|
|
98
|
+
instruction: getInstruction(identifiers),
|
|
99
|
+
keys: [],
|
|
100
|
+
answerFormat: "raw",
|
|
101
|
+
identifiers,
|
|
102
|
+
hint: getHint(identifiers),
|
|
103
|
+
correction: getCorrection(identifiers),
|
|
104
|
+
};
|
|
105
|
+
return question;
|
|
106
|
+
};
|
|
107
|
+
const getPropositions = (n, { answer }) => {
|
|
108
|
+
const propositions = [];
|
|
109
|
+
addValidProp(propositions, answer, "raw");
|
|
110
|
+
tryToAddWrongProp(propositions, "Oui", "raw");
|
|
111
|
+
tryToAddWrongProp(propositions, "Non", "raw");
|
|
112
|
+
tryToAddWrongProp(propositions, "On ne peut pas savoir", "raw");
|
|
113
|
+
return shuffle(propositions);
|
|
114
|
+
};
|
|
115
|
+
export const alignementViaColinearity = {
|
|
116
|
+
id: "alignementViaColinearity",
|
|
117
|
+
label: "Utiliser la colinéarité pour déterminer un alignement",
|
|
118
|
+
isSingleStep: true,
|
|
119
|
+
generator: (nb) => getDistinctQuestions(getAlignementViaColinearityQuestion, nb),
|
|
120
|
+
qcmTimer: 60,
|
|
121
|
+
freeTimer: 60,
|
|
122
|
+
getPropositions,
|
|
123
|
+
answerType: "QCU",
|
|
124
|
+
subject: "Mathématiques",
|
|
125
|
+
getQuestionFromIdentifiers,
|
|
126
|
+
hasHintAndCorrection: true,
|
|
127
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Exercise } from "../../../../../exercises/exercise.js";
|
|
2
|
+
import { NodeIdentifiers } from "../../../../../tree/nodes/nodeConstructor.js";
|
|
3
|
+
type Identifiers = {
|
|
4
|
+
xu: NodeIdentifiers;
|
|
5
|
+
yu: NodeIdentifiers;
|
|
6
|
+
xv: NodeIdentifiers;
|
|
7
|
+
yv: NodeIdentifiers;
|
|
8
|
+
};
|
|
9
|
+
export declare const colinearity: Exercise<Identifiers>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=colinearity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colinearity.d.ts","sourceRoot":"","sources":["../../../../../../src/exercises/math/geometry/vectors/colinearity/colinearity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAM7C,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,eAAe,CAAC;CACrB,CAAC;AA4GF,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,CAa7C,CAAC"}
|