HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/beta5N20bis-X84-kFs2.js.map
{"version":3,"file":"beta5N20bis-X84-kFs2.js","sources":["../../src/exercices/beta/beta5N20bis.js"],"sourcesContent":["import { choice, combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { deprecatedTexFraction, texFractionReduite } from '../../lib/outils/deprecatedFractions.js'\nimport Exercice from '../Exercice.js'\nimport { context } from '../../modules/context.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nimport FractionEtendue from '../../modules/FractionEtendue.js'\nimport { calculer } from '../../modules/outilsMathjs.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const amcReady = true\nexport const amcType = 'qcmMono'\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const titre = 'Additionner ou soustraire deux fractions (dénominateurs multiples)'\n\n/**\n * Effectuer l'addition ou la soustraction de deux fractions dont un dénominateur est un multiple de l'autre.\n *\n * Le résultat de la soustraction sera toujours positif.\n *\n * Le coefficient est paramétrable, par défaut il est inférieur à 11.\n *\n * On peut paramétrer de n'avoir que des soustractions.\n * @author Rémi Angot\n * 5N20\n */\nexport default function ExerciceAdditionnerSoustraireFractions5e (max = 11) {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.sup = max // Correspond au facteur commun\n  this.sup2 = 3 // Si 1 alors il n'y aura pas de soustraction\n  this.sup3 = true // Si false alors le résultat n'est pas en fraction simplifiée\n  this.titre = titre\n  this.consigne = 'Calculer.'\n  this.spacing = 2\n  this.spacingCorr = 2\n  this.nbQuestions = 5\n  this.nbColsCorr = 1\n\n  this.nouvelleVersion = function () {\n    if (this.sup3 && !context.isAmc) {\n      this.consigne = this.level === 6 ? 'Calculer.' : 'Calculer et simplifier au maximum le résultat.'\n    } else {\n      if (this.interactif && !context.isAmc) {\n        this.consigne = 'Calculer.'\n      } else if (context.isAmc) {\n        this.consigne = 'Calculer et choisir parmi les réponses proposées la bonne réponse.'\n      } else if (!this.sup3) {\n        this.consigne = 'Calculer.'\n      }\n    }\n    this.sup = parseInt(this.sup)\n    this.sup2 = parseInt(this.sup2)\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = []\n    let listeTypeDeQuestions\n    if (this.sup2 === 1) {\n      listeTypeDeQuestions = combinaisonListes(['+'], this.nbQuestions)\n    }\n    if (this.sup2 === 2) {\n      listeTypeDeQuestions = combinaisonListes(['-'], this.nbQuestions)\n    }\n    if (this.sup2 === 3) {\n      listeTypeDeQuestions = combinaisonListes(['+', '-'], this.nbQuestions)\n    }\n    for (let i = 0, question, expression, numerateur1, denominateur1, numerateur2, denominateur2, facteur, ordreDesFractions, texte, texteCorr; i < this.nbQuestions;) {\n      this.autoCorrection[i] = {}\n\n      texte = ''\n      texteCorr = ''\n      // les numérateurs sont numerateur1 et numerateur2\n      numerateur1 = randint(1, 9)\n      // les dénominateurs sont denominateur1 et denominateur2 = denominateur1*facteur ; denominateur1 compris entre 2 et 9 denominateur1 != numerateur1 ; facteur compris entre 2 et this.sup\n      denominateur1 = randint(2, 9, numerateur1)\n      if (this.sup > 1) {\n        facteur = randint(2, this.sup)\n      } else facteur = 1\n      denominateur2 = denominateur1 * facteur\n      if (listeTypeDeQuestions[i] === '-') {\n        numerateur2 = choice([randint(1, denominateur1 * facteur), randint(denominateur1 * facteur, 9 * facteur)])\n      } else {\n        numerateur2 = randint(1, 19, denominateur2)\n      }\n\n      // On crée l'expression en fonction de l'opération choisie.\n      ordreDesFractions = randint(1, 2)\n      if (listeTypeDeQuestions[i] === '+') {\n        if (ordreDesFractions === 1) {\n          expression = `${numerateur1}/${denominateur1}+${numerateur2}/${denominateur2}`\n        } else {\n          expression = `${numerateur2}/${denominateur2}+${numerateur1}/${denominateur1}`\n        }\n      } else {\n        if (numerateur1 / denominateur1 > numerateur2 / denominateur2) {\n          expression = `${numerateur1}/${denominateur1}-${numerateur2}/${denominateur2}`\n        } else {\n          expression = `${numerateur2}/${denominateur2}-${numerateur1}/${denominateur1}`\n        }\n      }\n      // l'expression étant prête, on confie à calculer() la tâche de fabriquer l'énoncé et la correction.\n      question = calculer(expression, { comment: true, substeps: true })\n      texte = question.texte\n      texteCorr = question.texteCorr\n\n      // c'est fini, mais il faut préparer le Qcm pour AMC et les réponses pour l'interactif...\n\n      if (listeTypeDeQuestions[i] === '+') { // une addition\n        /** ***************** Choix des réponses du QCM ***********************************/\n        this.autoCorrection[i].propositions = [\n          {\n            texte: this.sup3 ? `$${texFractionReduite(numerateur1 * facteur + numerateur2, denominateur2)}$` : `$${deprecatedTexFraction(numerateur1 * facteur + numerateur2, denominateur2)}$`,\n            statut: true\n          },\n          {\n            texte: this.sup3 ? `$${texFractionReduite(numerateur1 + numerateur2, denominateur2)}$` : `$${deprecatedTexFraction(numerateur1 + numerateur2, denominateur2)}$`,\n            statut: false\n          },\n          {\n            texte: this.sup3 ? `$${texFractionReduite(numerateur1 + numerateur2, denominateur1 + denominateur2)}$` : `$${deprecatedTexFraction(numerateur1 + numerateur2, denominateur1 + denominateur2)}$`,\n            statut: false\n          },\n          {\n            texte: this.sup3 ? `$${texFractionReduite(numerateur1 * numerateur2, denominateur2)}$` : `$${deprecatedTexFraction(numerateur1 * numerateur2, denominateur2)}$`,\n            statut: false\n          }\n        ]\n        this.autoCorrection[i].options = {\n          ordered: false,\n          lastChoice: 5\n        }\n        if (this.level === 6) {\n          // En 6e, pas de fraction simplifiée\n          // Les fractions ont le même dénominateur (denominateur1=denominateur2)\n          this.autoCorrection[i].propositions[0].texte = `$${deprecatedTexFraction(numerateur1 + numerateur2, denominateur1)}$`\n        }\n        /** ****************** AMC question/questionmult ********************************/\n        this.autoCorrection[i].enonce = `${texte}\\n`\n        /*******************************************************************************/\n\n        if ((this.modeQcm && !context.isAmc) || (this.interactif && this.interactifType === 'qcm')) {\n          texte += '<br>' + propositionsQcm(this, i).texte\n        }\n        if (context.isHtml && this.interactifType === 'mathLive') {\n          if (this.sup3 && this.level !== 6) {\n            setReponse(this, i, (new FractionEtendue(numerateur1 * denominateur2 + numerateur2 * denominateur1, denominateur1 * denominateur2)).simplifie(), { formatInteractif: 'fraction' })\n          } else {\n            setReponse(this, i, (new FractionEtendue(numerateur1 * denominateur2 + numerateur2 * denominateur1, denominateur1 * denominateur2)).simplifie(), { formatInteractif: 'fractionEgale' })\n          }\n        }\n      } else { // une soustraction\n        /** ***************** Choix des réponses du QCM ***********************************/\n        this.autoCorrection[i].propositions = [\n          {\n            texte: this.sup3 ? `$${texFractionReduite(Math.abs(numerateur1 * facteur - numerateur2), Math.abs(denominateur2))}$` : `$${deprecatedTexFraction(Math.abs(numerateur1 * facteur - numerateur2), Math.abs(denominateur2))}$`,\n            statut: true\n          },\n          {\n            texte: this.sup3 ? `$${texFractionReduite(Math.abs(numerateur1 - numerateur2), Math.abs(denominateur1 - denominateur2))}$` : `$${deprecatedTexFraction(Math.abs(numerateur1 - numerateur2), Math.abs(denominateur1 - denominateur2))}$`,\n            statut: false\n          },\n          {\n            texte: this.sup3 ? `$${texFractionReduite(Math.abs(numerateur1 - numerateur2), denominateur2)}$` : `$${deprecatedTexFraction(Math.abs(numerateur1 - numerateur2), denominateur2)}$`,\n            statut: false\n          },\n          {\n            texte: this.sup3 ? `$${texFractionReduite(numerateur1 * numerateur2, denominateur2)}$` : `$${deprecatedTexFraction(numerateur1 * numerateur2, denominateur2)}$`,\n            statut: false\n          }\n        ]\n        this.autoCorrection[i].options = {\n          ordered: false,\n          lastChoice: 5\n        }\n        if (this.level === 6) {\n          // En 6e, pas de fraction simplifiée\n          // Les fractions ont le même dénominateur (denominateur1=denominateur2)\n          this.autoCorrection[i].propositions[0].texte = `$${deprecatedTexFraction(Math.abs(numerateur1 - numerateur2), denominateur1)}$`\n        }\n\n        if ((this.modeQcm && !context.isAmc) || (this.interactif && this.interactifType === 'qcm')) {\n          texte += '<br>' + propositionsQcm(this, i).texte\n        }\n        if (context.isHtml && this.interactifType === 'mathLive') {\n          if (this.sup3 && this.level !== 6) {\n            setReponse(this, i, (new FractionEtendue(Math.abs(numerateur1 * denominateur2 - numerateur2 * denominateur1), denominateur1 * denominateur2)).simplifie(), { formatInteractif: 'fraction' })\n          } else {\n            setReponse(this, i, (new FractionEtendue(Math.abs(numerateur1 * denominateur2 - numerateur2 * denominateur1), denominateur1 * denominateur2)).simplifie(), { formatInteractif: 'fractionEgale' })\n          }\n        }\n      }\n      if (context.isHtml && this.interactifType === 'mathLive') texte += ajouteChampTexteMathLive(this, i)\n      if (context.isAmc) {\n        this.autoCorrection[i].enonce = texte\n      }\n      // la version interactive et la version AMC sont prête on vérifie que la question n'a pas déjà été posée avant de passer à la suivante.\n\n      if (this.questionJamaisPosee(i, numerateur1, facteur, denominateur1, numerateur2)) {\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n    }\n    listeQuestionsToContenu(this) // Espacement de 2 em entre chaque questions.\n  }\n\n  this.besoinFormulaireNumerique = ['Valeur maximale du coefficient multiplicateur', 99999]\n  this.besoinFormulaire2Numerique = ['Type de calculs', 3, '1 : Additions\\n2 : Soustractions\\n3 : Mélange']\n  this.besoinFormulaire3CaseACocher = ['Avec l\\'écriture simplifiée de la fraction résultat']\n}\n"],"names":["amcReady","amcType","interactifReady","interactifType","titre","ExerciceAdditionnerSoustraireFractions5e","max","Exercice","context","listeTypeDeQuestions","combinaisonListes","i","question","expression","numerateur1","denominateur1","numerateur2","denominateur2","facteur","ordreDesFractions","texte","texteCorr","randint","choice","calculer","texFractionReduite","deprecatedTexFraction","propositionsQcm","setReponse","FractionEtendue","ajouteChampTexteMathLive","listeQuestionsToContenu"],"mappings":"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"}