math-exercises 3.0.87 → 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 +2 -0
- package/lib/exercises/math/functions/basics/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/basics/index.js +3 -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/basics/valueTableFromGraph.d.ts +8 -0
- package/lib/exercises/math/functions/basics/valueTableFromGraph.d.ts.map +1 -0
- package/lib/exercises/math/functions/basics/valueTableFromGraph.js +139 -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/percent/evolutions/globalCM.d.ts +7 -0
- package/lib/exercises/math/percent/evolutions/globalCM.d.ts.map +1 -0
- package/lib/exercises/math/percent/evolutions/globalCM.js +89 -0
- package/lib/exercises/math/percent/evolutions/index.d.ts +1 -0
- package/lib/exercises/math/percent/evolutions/index.d.ts.map +1 -1
- package/lib/exercises/math/percent/evolutions/index.js +1 -0
- package/lib/exercises/math/percent/index.d.ts +1 -0
- package/lib/exercises/math/percent/index.d.ts.map +1 -1
- package/lib/exercises/math/percent/index.js +1 -0
- package/lib/exercises/math/percent/percentOfPercent.d.ts +8 -0
- package/lib/exercises/math/percent/percentOfPercent.d.ts.map +1 -0
- package/lib/exercises/math/percent/percentOfPercent.js +89 -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/geogebra/spline.d.ts +2 -1
- package/lib/geogebra/spline.d.ts.map +1 -1
- package/lib/geogebra/spline.js +39 -1
- package/lib/index.d.ts +50 -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,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 "./signOfFunction.js";
|
|
12
13
|
export * from "./valueTableCompletion.js";
|
|
14
|
+
export * from "./valueTableFromGraph.js";
|
|
13
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,4 +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";
|
|
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
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
points: number[][];
|
|
4
|
+
initTable: string[][];
|
|
5
|
+
};
|
|
6
|
+
export declare const valueTableFromGraph: Exercise<Identifiers>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=valueTableFromGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueTableFromGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/basics/valueTableFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,6BAA6B,CAAC;AAUrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;CACvB,CAAC;AAkIF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAmBrD,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
2
|
+
import { randomColor } from "../../../../geogebra/colors.js";
|
|
3
|
+
import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
|
|
4
|
+
import { Point } from "../../../../math/geometry/point.js";
|
|
5
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
6
|
+
import { numberParser } from "../../../../tree/parsers/numberParser.js";
|
|
7
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
8
|
+
import { mdTable } from "../../../../utils/markdown/mdTable.js";
|
|
9
|
+
const getAnswerTable = (identifiers) => {
|
|
10
|
+
const { points, initTable } = identifiers;
|
|
11
|
+
const answerTable = [[], []];
|
|
12
|
+
for (let j = 1; j < initTable[0].length; j++) {
|
|
13
|
+
if (initTable[0][j] === "") {
|
|
14
|
+
answerTable[0].push(points
|
|
15
|
+
.find((p) => p[1] === Number(initTable[1][j]))[0]
|
|
16
|
+
.toTree()
|
|
17
|
+
.toTex());
|
|
18
|
+
answerTable[1].push(initTable[1][j]);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
answerTable[1].push(points
|
|
22
|
+
.find((p) => p[0] === Number(initTable[0][j]))[1]
|
|
23
|
+
.toTree()
|
|
24
|
+
.toTex());
|
|
25
|
+
answerTable[0].push(initTable[0][j]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
["x", ...answerTable[0]],
|
|
30
|
+
["f(x)", ...answerTable[1]],
|
|
31
|
+
];
|
|
32
|
+
};
|
|
33
|
+
const getInstruction = (identifiers) => {
|
|
34
|
+
return `Soit $f$ la fonction dont la courbe représentative est tracée ci-dessous.
|
|
35
|
+
|
|
36
|
+
Compléter le tableau de valeurs de $f$.`;
|
|
37
|
+
};
|
|
38
|
+
const getGGBOptions = (identifiers) => {
|
|
39
|
+
const ggb = new GeogebraConstructor({
|
|
40
|
+
commands: [
|
|
41
|
+
`S = Spline(${identifiers.points
|
|
42
|
+
.map((point) => `(${point[0]},${point[1]})`)
|
|
43
|
+
.join(",")})`,
|
|
44
|
+
"SetFixed(S, true)",
|
|
45
|
+
`SetColor(S, "${randomColor()}")`,
|
|
46
|
+
],
|
|
47
|
+
});
|
|
48
|
+
return ggb.getOptions({
|
|
49
|
+
coords: ggb.getCoordsForPoints(identifiers.points.map((point) => new Point("A", point[0], point[1]))),
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const getHint = (identifiers) => {
|
|
53
|
+
return "Dans un tableau de valeurs, la deuxième ligne contient les images de la première ligne par la fonction $f$. Pour trouver une case de la deuxième ligne, il faut donc lire graphiquement l'image du nombre de la première ligne par la fonction $f$.";
|
|
54
|
+
};
|
|
55
|
+
const getCorrection = (identifiers) => {
|
|
56
|
+
return `
|
|
57
|
+
On lit graphiquement que :
|
|
58
|
+
|
|
59
|
+
${identifiers.points.map((p) => `- $f(${p[0]}) = ${p[1]}$`).join("\n")}
|
|
60
|
+
|
|
61
|
+
Le tableau de valeurs complété est donc :
|
|
62
|
+
|
|
63
|
+
${mdTable(getAnswerTable(identifiers), true)}
|
|
64
|
+
|
|
65
|
+
`;
|
|
66
|
+
};
|
|
67
|
+
const getKeys = (identifiers) => {
|
|
68
|
+
return [];
|
|
69
|
+
};
|
|
70
|
+
const isAnswerTableValid = (ans, { answerTable }) => {
|
|
71
|
+
try {
|
|
72
|
+
for (let i = 0; i < 2; i++) {
|
|
73
|
+
for (let j = 1; j < ans[i].length; j++) {
|
|
74
|
+
const ansParsed = numberParser(ans[i][j]);
|
|
75
|
+
const answerParsed = numberParser(answerTable[i][j]);
|
|
76
|
+
const valid = ansParsed === answerParsed;
|
|
77
|
+
if (!valid)
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
return handleVEAError(err);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const getValueTableFromGraphQuestion = (ops) => {
|
|
88
|
+
const xs = [randint(-10, -5), randint(-5, 0), randint(0, 5), randint(6, 10)];
|
|
89
|
+
const points = [[xs[0], randint(-9, 10)]];
|
|
90
|
+
for (let i = 1; i < xs.length; i++) {
|
|
91
|
+
let y = points[i - 1][1] + randint(-5, 6);
|
|
92
|
+
points.push([xs[i], y]);
|
|
93
|
+
}
|
|
94
|
+
let stringXs = points.map((p) => p[0].toString());
|
|
95
|
+
const ys = [];
|
|
96
|
+
for (let i = 0; i < stringXs.length; i++) {
|
|
97
|
+
ys.push("");
|
|
98
|
+
}
|
|
99
|
+
const initTable = [
|
|
100
|
+
["x", ...stringXs],
|
|
101
|
+
["f(x)", ...ys],
|
|
102
|
+
];
|
|
103
|
+
const identifiers = {
|
|
104
|
+
points: points,
|
|
105
|
+
initTable,
|
|
106
|
+
};
|
|
107
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
108
|
+
};
|
|
109
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
110
|
+
return {
|
|
111
|
+
answerTable: getAnswerTable(identifiers),
|
|
112
|
+
instruction: getInstruction(identifiers),
|
|
113
|
+
keys: getKeys(identifiers),
|
|
114
|
+
answerFormat: "tex",
|
|
115
|
+
identifiers,
|
|
116
|
+
hint: getHint(identifiers),
|
|
117
|
+
correction: getCorrection(identifiers),
|
|
118
|
+
initTable: identifiers.initTable,
|
|
119
|
+
ggbOptions: getGGBOptions(identifiers),
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
export const valueTableFromGraph = {
|
|
123
|
+
id: "valueTableFromGraph",
|
|
124
|
+
connector: "=",
|
|
125
|
+
label: "Compléter un tableau de valeurs d'une fonction à partir d'un graphique",
|
|
126
|
+
isSingleStep: true,
|
|
127
|
+
generator: (nb, opts) => getDistinctQuestions(() => getValueTableFromGraphQuestion(opts), nb),
|
|
128
|
+
valueTableTimer: 120,
|
|
129
|
+
subject: "Mathématiques",
|
|
130
|
+
getInstruction,
|
|
131
|
+
getHint,
|
|
132
|
+
getCorrection,
|
|
133
|
+
getAnswerTable,
|
|
134
|
+
getQuestionFromIdentifiers,
|
|
135
|
+
hasHintAndCorrection: true,
|
|
136
|
+
answerType: "valueTable",
|
|
137
|
+
isAnswerTableValid,
|
|
138
|
+
hasGeogebra: true,
|
|
139
|
+
};
|
|
@@ -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"}
|