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/_ExerciceConversionsLongueurs-2Dtfl1P9.js.map
{"version":3,"file":"_ExerciceConversionsLongueurs-2Dtfl1P9.js","sources":["../../src/exercices/6e/_ExerciceConversionsLongueurs.js"],"sourcesContent":["import { choice, combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { arrondi } from '../../lib/outils/nombres.js'\nimport { texNombre } from '../../lib/outils/texNombre.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 Decimal from 'decimal.js'\nimport { texTexte } from '../../lib/format/texTexte'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const amcReady = 'true'\nexport const amcType = 'AMCNum'\nexport const titre = 'Convert lengths'\n\n/**\n * Conversions de longueur en utilisant le préfixe pour déterminer la multiplication ou division à faire.\n *\n * * 1 : De dam, hm, km vers m\n * * 2 : De dm, cm, mm vers m\n * * 3 : Conversions en mètres\n * * 4 : Toutes les conversions de longueurs\n * * Paramètre supplémentaire : utiliser des nombres décimaux (par défaut tous les nombres sont entiers)\n * @author Rémi Angot\n */\nexport default function ExerciceConversionsLongueurs (niveau = 1) {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.sup = niveau // Niveau de difficulté de l'exercice\n  this.sup2 = false // Avec des nombres décimaux ou pas\n  this.sup3 = false // avec le tableau\n  this.spacing = 2\n  this.listePackages = ['cmd\\\\newcommand\\\\dotfills[1][3cm]{\\\\makebox[#1]{\\\\dotfill}}']\n\n  this.nouvelleVersion = function () {\n    this.consigne = context.isDiaporama ? 'Convert' : 'Complete :'\n    const reponses = []\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    const prefixeMulti = [\n      ['da', 10],\n      ['h', 100],\n      ['k', 1000]\n    ]\n    const prefixeDiv = [\n      ['d', 10],\n      ['c', 100],\n      ['m', 1000]\n    ]\n    const unite = 'm'\n    const listeUnite = ['mm', 'cm', 'dm', 'm', 'dam', 'hmm', 'km']\n    const listeUnite1 = combinaisonListes([0, 1, 2, 3, 4, 5, 6], this.nbQuestions)\n    const listek = combinaisonListes([0, 1, 2], this.nbQuestions)\n    const listeDeDecimaux = combinaisonListes(['entire', 'XX,X', '0,X', '0.0X', 'X,XX'], this.nbQuestions)\n    for (let i = 0,\n      a,\n      k,\n      div,\n      resultat,\n      texte,\n      texteCorr,\n      cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      // We limit the number of tests to search for new values\n\n      const typesDeQuestions = this.sup\n      k = listek[i] // Plutôt que de prendre un préfix au hasard, on alterne entre 10,100 et 1000\n      if (typesDeQuestions === 1) {\n        // level 1\n        div = false // Il n'y aura pas de division\n      } else if (typesDeQuestions === 2) {\n        // level 2\n        div = true // Avec des divisions\n      } else {\n        div = choice([true, false]) // Avec des multiplications ou des divisions\n      }\n\n      if (this.sup2) {\n        // If the box for decimal numbers is checked\n        switch (listeDeDecimaux[i]) {\n          case 'entire':\n            a = randint(1, 99)\n            break\n          case 'XX,X':\n            a = arrondi(randint(1, 19) + randint(1, 9) / 10, 1)\n            break\n          case '0,X':\n            a = arrondi(randint(1, 9) / 10, 1)\n            break\n          case '0.0X':\n            a = arrondi(randint(1, 9) / 100, 2)\n            break\n          case 'X,XX':\n            a = arrondi(randint(1, 9) + randint(1, 9) / 10 + randint(1, 9) / 100, 2)\n        }\n        // integer or\n      } else {\n        a = choice([\n          randint(1, 9),\n          randint(1, 9) * 10,\n          randint(1, 9) * 100,\n          randint(1, 9) * 10 + randint(1, 9)\n        ])\n        // X, X0, X00, XX\n      }\n\n      if (!div && typesDeQuestions < 4) {\n        // If you have to multiply to convert\n        resultat = arrondi(a * prefixeMulti[k][1], 12)\n        texte = `$${texNombre(a)} ${texTexte(prefixeMulti[k][0] + unite)} =`\n        texte += (this.interactif && context.isHtml) ? `$${ajouteChampTexteMathLive(this, i, 'width25 inline', { texteApres: '&nbsp;&nbsp;&nbsp;' + unite })}` : `\\\\dotfills ${texTexte(unite)}$`\n        texteCorr =\n          '$' +\n          texNombre(a) +\n          texTexte(prefixeMulti[k][0] + unite) +\n          ' = ' +\n          texNombre(a) +\n          '\\\\times' +\n          prefixeMulti[k][1] + texTexte(unite) +\n          ' = ' +\n          texNombre(resultat) +\n          texTexte(unite) +\n          '$'\n        if (this.sup3 && context.vue === 'slide') {\n          texte += '<br>' + buildTab(0, '', 0, '', 2, true)\n        }\n        if (this.sup3) {\n          texteCorr += '<br>' + buildTab(a, prefixeMulti[k][0] + 'm', resultat, unite)\n        }\n      } else if (div && typesDeQuestions < 4) {\n        resultat = arrondi(a / prefixeDiv[k][1], 12)\n        texte = `$${texNombre(a)} ${texTexte(prefixeDiv[k][0] + unite)} =`\n        texte += (this.interactif && context.isHtml) ? `$${ajouteChampTexteMathLive(this, i, 'width25 inline', { texteApres: '&nbsp;&nbsp;&nbsp;' + unite })}` : `\\\\dotfills ${texTexte(unite)}$`\n        texteCorr =\n          '$' +\n          texNombre(a) +\n          texTexte(prefixeDiv[k][0] + unite) +\n          ' = ' +\n          texNombre(a) +\n          '\\\\div' +\n          texTexte(prefixeDiv[k][1]) +\n          texTexte(unite) +\n          ' = ' +\n          texNombre(resultat) +\n          texTexte(unite) +\n          '$'\n        if (this.sup3 && context.vue === 'slide') {\n          texte += '<br>' + buildTab(0, '', 0, '', 2, true)\n        }\n        if (this.sup3) {\n          texteCorr += '<br>' + buildTab(a, prefixeDiv[k][0] + 'm', resultat, unite)\n        }\n      } else {\n        // for question type = 4\n        let unite1 = listeUnite1[i]\n        let unite2 = randint(Math.max(0, unite1 - 3), Math.min(unite1 + 3, 6), unite1)\n        if (unite1 > unite2) {\n          [unite1, unite2] = [unite2, unite1]\n        }\n        const ecart = unite2 - unite1 // nombre de multiplication par 10 pour passer de l'one to one'autre\n        if (randint(0, 1) > 0) {\n          resultat = a * Math.pow(10, ecart)\n          texte = `$${texNombre(a)} ${texTexte(listeUnite[unite2])} =`\n          texte += (this.interactif && context.isHtml) ? `$${ajouteChampTexteMathLive(this, i, 'width25 inline', { texteApres: '&nbsp;&nbsp;&nbsp;' + listeUnite[unite1] })}` : `\\\\dotfills ${texTexte(listeUnite[unite1])}$`\n          texteCorr =\n            '$' +\n            texNombre(a) +\n            texTexte(listeUnite[unite2]) +\n            ' = ' +\n            texNombre(a) +\n            '\\\\times' +\n            texNombre(Math.pow(10, ecart)) +\n            texTexte(listeUnite[unite1]) +\n            ' = ' +\n            texNombre(resultat) +\n            texTexte(listeUnite[unite1]) +\n            '$'\n          if (this.sup3 && context.vue === 'slide') {\n            texte += '<br>' + buildTab(0, '', 0, '', 2, true)\n          }\n          if (this.sup3) {\n            texteCorr += '<br>' + buildTab(a, listeUnite[unite2], resultat, listeUnite[unite1])\n          }\n        } else {\n          resultat = a / Math.pow(10, ecart)\n          texte = `$${texNombre(a)} ${texTexte(listeUnite[unite1])} =`\n          texte += (this.interactif && context.isHtml) ? `$${ajouteChampTexteMathLive(this, i, 'width25 inline', { texteApres: '&nbsp;&nbsp;&nbsp;' + listeUnite[unite2] })}` : `\\\\dotfills ${texTexte(listeUnite[unite2])}$`\n          texteCorr =\n            '$' +\n            texNombre(a) +\n            texTexte(listeUnite[unite1]) +\n            ' = ' +\n            texNombre(a) +\n            '\\\\div' +\n            texNombre(Math.pow(10, ecart)) +\n            texTexte(listeUnite[unite2]) +\n            ' = ' +\n            texNombre(resultat) +\n            texTexte(listeUnite[unite2]) +\n            '$'\n          if (this.sup3 && context.vue === 'slide') {\n            texte += '<br>' + buildTab(0, '', 0, '', 2, true)\n          }\n          if (this.sup3) {\n            texteCorr += '<br>' + buildTab(a, listeUnite[unite1], resultat, listeUnite[unite2])\n          }\n        }\n      }\n\n      if (this.questionJamaisPosee(i, resultat)) {\n        reponses[i] = resultat\n        setReponse(this, i, resultat.toString().replace('.', ','))\n        // If the question has never been asked, we create another one\n        if (context.vue === 'slide') {\n          texte = texte.replace('= \\\\dotfills', '~\\\\text{en}')\n        } else if (context.isHtml) {\n          texte = texte.replace('\\\\dotfills', '.................................')\n        }\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n\n    listeQuestionsToContenu(this)\n    this.introduction = ''\n    if (context.vue === 'latex' && this.sup3) {\n      this.introduction = 'using the table below:\\n\\n'\n      this.introduction += buildTab(0, '', 0, '', Math.min(10, this.nbQuestions), true)\n    } else if (context.vue !== 'slide' && context.isHtml && this.sup3) {\n      this.introduction = 'using the table below:<br>'\n      this.introduction += buildTab(0, '', 0, '', Math.min(10, this.nbQuestions), true)\n    }\n  }\n  this.besoinFormulaireNumerique = ['Difficulty level', 4, ' 1: From dam, hm, km to m\\n 2: From dm, cm, mm to m\\n 3: Conversions to meters\\n4: Random']\n  this.besoinFormulaire2CaseACocher = ['With decimal numbers']\n  this.besoinFormulaire3CaseACocher = ['With table']\n}\n\n/**\n * Fonction utilitaire retournant le rang d'un nombre\n * @param {*} nb Nombre entier ou décimal\n * @param {*} pos Le rang cherché\n * @returns retourne la valeur de la colonne, si zéro inutile alors on retourne ''\n * Exemple :\n * getDigitFromNumber(1302.56,1000) retourne '1'\n * getDigitFromNumber(1302.56,10000) retourne ''\n * getDigitFromNumber(1302.56,100) retourne '3'\n * getDigitFromNumber(1302.56,10) retourne '0'\n * getDigitFromNumber(1302.56,0.1) retourne '5'\n * getDigitFromNumber(1302.56,0.001) retourne ''\n */\nexport function getDigitFromNumber (nb, pos) {\n  const n = new Decimal(nb)\n  const po = new Decimal(pos)\n  const exp = Decimal.ln(po).div(Decimal.ln(10))\n  let res = ''\n  if (po.comparedTo(1) >= 0) {\n    // integer part: thousands, hundreds, tens, units\n    res = n.sub(n.div(po.mul(10)).trunc().mul(po.mul(10)))\n    res = res.div(po).trunc()\n    res = (po.equals(1) || n.comparedTo(po) >= 0) ? res.toString() : ''\n  } else {\n    // decimal part: tenth, hundredth, thousandth\n    res = n.sub(n.div(po.mul(10)).trunc().mul(po.mul(10)))\n    res = res.div(po).trunc()\n    res = Math.abs(exp) <= n.decimalPlaces() ? res.toString() : ''\n  }\n  return res\n}\n/**\n * @param {*} a Nombre de départ\n * @param {*} uniteA Unité de départ (ex : 'km',...)\n * @param {*} r Nombre converti\n * @param {*} uniteR\n * @param {*} ligne Nombre de ligne dans le tableau (par défaut :2)\n * @param {*} force Ajoute deux colonnes avant km et deuux après mm (par défaut : false)\n * @returns Un tableau de conversion de longueur en latex.\n */\nfunction buildTab (a, uniteA, r, uniteR, ligne = 2, force = false) {\n  const tabRep = function (nbre, uniteNbre) {\n    const res = ['', '', '', '', '', '', '', '', '', '', '']\n    switch (uniteNbre.replaceAll(' ', '')) {\n      case 'km':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (2 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 2 - i)) + (2 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n      case 'hmm':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (3 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 3 - i)) + (3 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n      case 'dam':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (4 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 4 - i)) + (4 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n      case 'm':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (5 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 5 - i)) + (5 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n      case 'dm':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (6 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 6 - i)) + (6 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n      case 'cm':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (7 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 7 - i)) + (7 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n      case 'mm':\n        for (let i = 0; i <= 10; i++) {\n          res[i] = (8 - i === 0 ? '\\\\color{red}{' : '') + getDigitFromNumber(nbre, Decimal.pow(10, 8 - i)) + (8 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n        }\n        break\n    }\n    return res\n  }\n  const createTab = function (aT, rT, first, end, ligne) {\n    let texte = '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{'\n    for (let i = first; i <= end; i++) {\n      texte += '|c' + (i === end ? '|}' : '')\n    }\n    const headers = ['\\\\hspace*{0.6cm}', '\\\\hspace*{0.6cm}', '\\\\; km \\\\;', '\\\\; hmm \\\\;', 'dam', '\\\\;\\\\; m \\\\;\\\\;', '\\\\; dm \\\\;', '\\\\; cm \\\\;', '\\\\;mm\\\\;', '\\\\hspace*{0.6cm}', '\\\\hspace*{0.6cm}']\n    texte += '\\\\hline'\n    for (let i = first; i <= end; i++) {\n      texte += `${headers[i]} ${i < end ? '&' : '\\\\\\\\'}`\n    }\n    texte += '\\\\hline'\n    for (let i = first; i <= end; i++) {\n      texte += `${aT[i]} ${i < end ? '&' : '\\\\\\\\'}`\n    }\n    texte += '\\\\hline'\n    for (let i = first; i <= end; i++) {\n      texte += `${rT[i]} ${i < end ? '&' : '\\\\\\\\'}`\n    }\n    for (let k = 3; k <= ligne; k++) {\n      texte += '\\\\hline'\n      for (let i = first; i <= end; i++) {\n        texte += `  ${i < end ? '&' : '\\\\\\\\'}`\n      }\n    }\n    texte += '\\\\hline \\\\end{array}$'\n    return texte\n  }\n  const aTab = tabRep(a, uniteA)\n  const rTab = tabRep(r, uniteR)\n  const minTab1 = aTab[0] !== '' || aTab[1] !== '' || force ? 0 : 2\n  const minTab2 = rTab[0] !== '' || rTab[1] !== '' || force ? 0 : 2\n  const maxTab1 = aTab[9] !== '' || aTab[10] !== '' || force ? 10 : 8\n  const maxTab2 = rTab[9] !== '' || rTab[10] !== '' || force ? 10 : 8\n  const texte = createTab(aTab, rTab, Math.min(minTab1, minTab2), Math.max(maxTab1, maxTab2), ligne)\n  return texte\n}\n"],"names":["interactifReady","interactifType","amcReady","amcType","titre","ExerciceConversionsLongueurs","niveau","Exercice","context","reponses","prefixeMulti","prefixeDiv","unite","listeUnite","listeUnite1","combinaisonListes","listek","listeDeDecimaux","i","a","k","div","resultat","texte","texteCorr","cpt","typesDeQuestions","choice","randint","arrondi","texNombre","texTexte","ajouteChampTexteMathLive","buildTab","unite1","unite2","ecart","setReponse","listeQuestionsToContenu","getDigitFromNumber","nb","pos","n","Decimal","po","exp","res","uniteA","r","uniteR","ligne","force","tabRep","nbre","uniteNbre","createTab","aT","rT","first","end","headers","aTab","rTab","minTab1","minTab2","maxTab1","maxTab2"],"mappings":"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"}