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/6C20-Ev-Z9Fsg.js.map
{"version":3,"file":"6C20-Ev-Z9Fsg.js","sources":["../../src/exercices/6e/6C20.js"],"sourcesContent":["import { grille, seyes } from '../../lib/2d/reperes.js'\nimport { combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { nombreDeChiffresDansLaPartieDecimale, nombreDeChiffresDansLaPartieEntiere } from '../../lib/outils/nombres.js'\nimport { texNombre } from '../../lib/outils/texNombre.js'\nimport Operation from '../../modules/operations.js'\nimport Exercice from '../Exercice.js'\nimport { context } from '../../modules/context.js'\nimport { calculANePlusJamaisUtiliser, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const amcReady = true\nexport const amcType = 'AMCNum'\nexport const interactifType = 'mathLive'\nexport const interactifReady = true\n\nexport const titre = 'Perform addition and subtraction of decimal numbers'\nexport const dateDeModifImportante = '01/04/2023'\n\n/**\n * Additions et soustractions de nombres décimaux\n * * xxx-xx,x\n * * xxx-xx,xx\n * * xxx,x-xxx\n * * x0x-xx9,x\n * * xxx+xx,x\n * * xxx+xx,xx\n * * xxx,x+xxx\n * * x0x+xx9,x\n * @author Rémi Angot (Modifié par EE pour modifier le nb de décimales des termes)\n * Référence 6C20\n */\nexport const uuid = '01873'\nexport const ref = '6C20'\nexport default function AdditionnerSoustrairesDecimaux () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.titre = titre\n  this.consigne = 'Ask and carry out the following calculations.'\n  this.listePackages = 'xlop'\n  this.spacing = 2\n  context.isHtml ? (this.spacingCorr = 2) : (this.spacingCorr = 1) // Important sinon les opérations posées ne sont pas jolies\n  this.nbQuestions = 4\n  this.sup = 3\n  this.sup2 = 3\n  this.sup3 = 4\n  this.tailleDiaporama = 3\n  this.nouvelleVersion = function () {\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 typesDeQuestions, reponse\n    const typesAdditions = combinaisonListes(\n      [5, 6, 7, 8],\n      this.nbQuestions\n    )\n    const typesSoustractions = combinaisonListes(\n      [1, 2, 3, 4],\n      this.nbQuestions\n    )\n    let listeTypeDeQuestions = []\n    if (this.sup === 1) {\n      listeTypeDeQuestions = combinaisonListes([5, 6, 7, 8], this.nbQuestions)\n    } else if (this.sup === 2) {\n      listeTypeDeQuestions = combinaisonListes([1, 2, 3, 4], this.nbQuestions)\n    } else if (this.sup === 3) {\n      for (let i = 0; i < this.nbQuestions; i++) {\n        this.autoCorrection[i] = {}\n        if (i + 1 <= this.nbQuestions / 2) {\n          // first half are additions but if it's odd we will take more subtractions\n          listeTypeDeQuestions.push(typesAdditions[i])\n        } else {\n          listeTypeDeQuestions.push(typesSoustractions[i])\n        }\n      }\n    } else {\n      for (let i = 0; i < this.nbQuestions; i++) {\n        this.autoCorrection[i] = {}\n        if (i % 2 === 0) {\n          // first half are additions but if it's odd we will take more subtractions\n          listeTypeDeQuestions.push(typesAdditions[Math.round(i / 2)])\n        } else {\n          listeTypeDeQuestions.push(typesSoustractions[Math.round(i / 2)])\n        }\n      }\n    }\n\n    let grilletxt\n    if (this.sup2 < 3) {\n      const g = (this.sup2 < 3 ? grille(0, 0, 5, 5, 'gray', 0.7) : '')\n      const carreaux = (this.sup2 === 2 ? seyes(0, 0, 5, 5) : '')\n      const sc = (this.sup2 === 2 ? 0.8 : 0.5)\n      const params = { xmin: 0, ymin: 0, xmax: 5, ymax: 5, pixelsParCm: 20, scale: sc }\n      grilletxt = '<br>' + mathalea2d(params, g, carreaux)\n    } else {\n      grilletxt = ''\n    }\n    for (let i = 0, aleaTermes, texte, texteCorr, cpt = 0, a, b; i < this.nbQuestions && cpt < 50;) {\n      typesDeQuestions = listeTypeDeQuestions[i]\n      aleaTermes = this.sup3 < 4 ? this.sup3 : randint(1, 3)\n      switch (typesDeQuestions) {\n        case 1: // xxx-xx,x ou xx,x-xx,x ou xx,x-x,xx\n          a = randint(1, 4) * 100 + randint(2, 5) * 10 + randint(1, 9)\n          if (aleaTermes > 1) a = calculANePlusJamaisUtiliser(a / 10)\n          b = calculANePlusJamaisUtiliser(randint(5, 9) * 10 + randint(6, 9) + randint(1, 9) / 10)\n          if (aleaTermes > 2) b = calculANePlusJamaisUtiliser(b / 10)\n          if (a < b) {\n            const temp = a\n            a = b\n            b = temp\n          }\n          texte = `$${texNombre(a)}-${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a - b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block'\n          })\n          texteCorr += Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block',\n            methodeParCompensation: false\n          })\n          break\n        case 2: // xxx-xx,xx ou xx,xx-xx,xx ou xx,xx-x,xxx\n          a = randint(1, 4) * 100 + randint(2, 5) * 10 + randint(1, 9)\n          if (aleaTermes > 1) a = calculANePlusJamaisUtiliser((a + randint(1, 4) * 1000) / 100)\n          b = calculANePlusJamaisUtiliser(\n            randint(5, 9) * 10 +\n                        randint(6, 9) +\n                        randint(1, 9) / 10 +\n                        randint(1, 9) / 100\n          )\n          if (aleaTermes > 2) b = calculANePlusJamaisUtiliser(b / 10)\n          if (a < b) {\n            const temp = a\n            a = b\n            b = temp\n          }\n          texte = `$${texNombre(a)}-${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a - b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block'\n          })\n          texteCorr += Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block',\n            methodeParCompensation: false\n          })\n          break\n        case 3: // xxx,x-xxx ou xxx,x-xxx,x ou xxx,x-xx,xx\n          a = calculANePlusJamaisUtiliser(\n            randint(5, 9) * 100 +\n                        randint(2, 5) * 10 +\n                        randint(1, 9) +\n                        randint(1, 9) / 10\n          )\n          b = randint(1, 4) * 100 + randint(6, 9) * 10 + randint(1, 9)\n          if (aleaTermes > 1) b = calculANePlusJamaisUtiliser((b + randint(1, 4) * 1000) / Math.pow(10, aleaTermes - 1))\n          if (a < b) {\n            const temp = a\n            a = b\n            b = temp\n          }\n          texte = `$${texNombre(a)}-${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a - b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block'\n          })\n          texteCorr += Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block',\n            methodeParCompensation: false\n          })\n          break\n        case 4: // x0x-xx9,x ou x0x,x-xx9,x ou x0x,x-x9,xx\n          a = calculANePlusJamaisUtiliser(randint(5, 9) * 100 + randint(1, 5))\n          if (aleaTermes > 1) a = calculANePlusJamaisUtiliser((a + randint(1, 9) / 10))\n          b = calculANePlusJamaisUtiliser(randint(1, 4) * 100 + randint(1, 9) * 10 + 9 + randint(1, 9) / 10)\n          if (aleaTermes > 2) b = calculANePlusJamaisUtiliser(randint(1, 9) * 10 + 9 + randint(1, 9) / 10 + randint(1, 9) / 100)\n          texte = `$${texNombre(a)}-${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a - b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block'\n          })\n          texteCorr += Operation({\n            operande1: a,\n            operande2: b,\n            type: 'soustraction',\n            style: 'display: inline-block',\n            methodeParCompensation: false\n          })\n          break\n        case 5: // xxx+xx,x ou xx,x+xx,x ou xx,x+x,xx\n          a = randint(1, 4) * 100 + randint(2, 5) * 10 + randint(1, 9)\n          if (aleaTermes > 1) a = calculANePlusJamaisUtiliser(a / 10)\n          b = calculANePlusJamaisUtiliser(randint(5, 9) * 10 + randint(6, 9) + randint(1, 9) / 10)\n          if (aleaTermes > 2) b = calculANePlusJamaisUtiliser(b / 10)\n          if (a < b) {\n            const temp = a\n            a = b\n            b = temp\n          }\n          texte = `$${texNombre(a)}+${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a + b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'addition',\n            style: 'display: inline-block'\n          })\n          break\n        case 6: // xxx+xx,xx ou xx,xx+xx,xx ou xx,xx+x,xxx\n          a = randint(1, 4) * 100 + randint(2, 5) * 10 + randint(1, 9)\n          if (aleaTermes > 1) a = calculANePlusJamaisUtiliser((a + randint(1, 4) * 1000) / 100)\n          b = calculANePlusJamaisUtiliser(\n            randint(5, 9) * 10 +\n                        randint(6, 9) +\n                        randint(1, 9) / 10 +\n                        randint(1, 9) / 100\n          )\n          if (aleaTermes > 2) b = calculANePlusJamaisUtiliser(b / 10)\n          if (a < b) {\n            const temp = a\n            a = b\n            b = temp\n          }\n          texte = `$${texNombre(a)}+${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a + b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'addition',\n            style: 'display: inline-block'\n          })\n          break\n        case 7: // xxx,x+xxx ou xxx,x+xxx,x ou xxx,x+xx,xx\n          a = calculANePlusJamaisUtiliser(\n            randint(5, 9) * 100 +\n                        randint(2, 5) * 10 +\n                        randint(1, 9) +\n                        randint(1, 9) / 10\n          )\n          b = randint(1, 4) * 100 + randint(6, 9) * 10 + randint(1, 9)\n          if (aleaTermes > 1) b = calculANePlusJamaisUtiliser((b + randint(1, 4) * 1000) / Math.pow(10, aleaTermes - 1))\n          if (a < b) {\n            const temp = a\n            a = b\n            b = temp\n          }\n          texte = `$${texNombre(a)}+${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a + b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'addition',\n            style: 'display: inline-block'\n          })\n          break\n        case 8: // x0x+xx9,x ou x0x,x+xx9,x ou x0x,x+x9,xx\n          a = calculANePlusJamaisUtiliser(randint(5, 9) * 100 + randint(1, 5))\n          if (aleaTermes > 1) a = calculANePlusJamaisUtiliser((a + randint(1, 9) / 10))\n          b = calculANePlusJamaisUtiliser(randint(1, 4) * 100 + randint(1, 9) * 10 + 9 + randint(1, 9) / 10)\n          if (aleaTermes > 2) b = calculANePlusJamaisUtiliser(randint(1, 9) * 10 + 9 + randint(1, 9) / 10 + randint(1, 9) / 100)\n          texte = `$${texNombre(a)}+${texNombre(b)}$`\n          texte += grilletxt\n          reponse = calculANePlusJamaisUtiliser(a + b)\n          texteCorr = Operation({\n            operande1: a,\n            operande2: b,\n            type: 'addition',\n            style: 'display: inline-block'\n          })\n          break\n      }\n      setReponse(this, i, reponse)\n      if (this.interactif && context.isHtml) texte += '$~=$' + ajouteChampTexteMathLive(this, i, 'width15 inline')\n      if (context.isAmc) {\n        this.autoCorrection[i].enonce = texte\n        this.autoCorrection[i].propositions = [{ texte: texteCorr, statut: '' }]\n        this.autoCorrection[i].reponse.param = {\n          digits: nombreDeChiffresDansLaPartieEntiere(reponse) + nombreDeChiffresDansLaPartieDecimale(reponse) + 2,\n          decimals: nombreDeChiffresDansLaPartieDecimale(reponse) + 1,\n          signe: false,\n          exposantNbChiffres: 0\n        }\n      }\n      if (this.questionJamaisPosee(i, a, b)) {\n        // If the question has never been asked, we create another one\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this)\n  }\n  this.besoinFormulaireNumerique = ['Difficulty level', 4, '1: Additions of decimals\\n2: Subtractions of decimals\\n3: Mixture (additions first)\\n4: Mixture (additions and subtractions alternately)']\n  this.besoinFormulaire2Numerique = [\n    'Notebook type',\n    3,\n    ' 1: Notebook with small squares\\n 2: Notebook with large squares (Seyes)\\n 3: Blank sheet'\n  ]\n  this.besoinFormulaire3Numerique = ['Type of terms', 4, '1: An integer and a decimal\\n2: Two decimals having the same number of decimal places\\n3: Two decimals not having the same number of decimal places\\n4: Randomly']\n}\n"],"names":["amcReady","amcType","interactifType","interactifReady","titre","dateDeModifImportante","uuid","ref","AdditionnerSoustrairesDecimaux","Exercice","context","typesDeQuestions","reponse","typesAdditions","combinaisonListes","typesSoustractions","listeTypeDeQuestions","i","grilletxt","g","grille","carreaux","seyes","params","mathalea2d","aleaTermes","texte","texteCorr","cpt","a","b","randint","calculANePlusJamaisUtiliser","temp","texNombre","Operation","setReponse","ajouteChampTexteMathLive","nombreDeChiffresDansLaPartieEntiere","nombreDeChiffresDansLaPartieDecimale","listeQuestionsToContenu"],"mappings":"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"}