File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6M31-AVUWJhWg.js.map
{"version":3,"file":"6M31-AVUWJhWg.js","sources":["../../src/exercices/6e/6M31.js"],"sourcesContent":["import { choice, combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { sp } from '../../lib/outils/outilString.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 { texTexte } from '../../lib/format/texTexte'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nimport { getDigitFromNumber } from './_ExerciceConversionsLongueurs.js'\nimport Decimal from 'decimal.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const titre = 'Convert volumes'\nexport const amcReady = true\nexport const amcType = 'qcmMono'\nexport const interactifReady = true\nexport const interactifType = ['qcm', 'mathLive']\n\nexport const dateDeModifImportante = '31/05/2023'\n\n/**\n * Conversions de volumes.\n *\n * Dans la correction, on ne voit qu`une multiplication ou qu`un division pour obtenir le résultat\n *\n * * 1 : Conversions en mètres-cubes avec des multiplications\n * * 2 : Conversions en mètres-cubes avec des divisions\n * * 3 : Conversions en mètres-cubes avec des multiplications ou divisions\n * * 4 : Conversions avec des multiplications ou divisions\n * * Paramètre supplémentaire : utiliser des nombres décimaux (par défaut tous les nombres sont entiers)\n * @author Rémi Angot\n * Référence 6M31\n * Amélioration de l'interactivité (mathLive maintenant inline) par Guillaume Valmont le 14/05/2022\n */\nexport const uuid = '33ac2'\nexport const ref = '6M31'\nexport default function ExerciceConversionsVolumes () {\n Exercice.call(this) // Héritage de la classe Exercice()\n this.sup = 1 // Niveau de difficulté de l`exercice\n this.sup2 = false // Avec des nombres décimaux ou pas\n this.sup3 = 1 // interactifType Qcm\n this.titre = titre\n this.spacing = 2\n this.nbColsCorr = 1\n this.amcReady = amcReady\n this.amcType = amcType\n this.interactifReady = interactifReady\n\n function nombreAleatoire (nbChiffres) { // retourne un entier aléatoire à n chiffres sous la forme d'un Decimal\n let a = new Decimal(0)\n for (let i = 0; i < nbChiffres; i++) {\n a = a.add(randint(1, 9) * 10 ** i)\n }\n return a\n }\n\n this.nouvelleVersion = function () {\n this.consigne = (this.interactif && this.sup3 === 1) ? 'Check the right answer.' : 'Complete.'\n this.interactifType = this.sup3 === 2 ? 'mathLive' : 'mth'\n this.autoCorrection = []\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n Decimal.set({ toExpNeg: -20, toExpPos: 20 }) // pour éviter la conversion en notation scientifique on va jusqu'à 20 décimales (-7 est la valeur par défaut)\n const prefixeMulti = [\n [' da', '\\\\times1000', 1000],\n [' h', '\\\\times1000\\\\times1000', 1000000],\n [' k', '\\\\times1000\\\\times1000\\\\times1000', 1000000000]\n ]\n const prefixeDiv = [\n [' d', '\\\\div1000', 1000],\n [' vs', '\\\\div1000\\\\div1000', 1000000],\n [' m', '\\\\div1000\\\\div1000\\\\div1000', 1000000000]\n ]\n\n const unite = 'm'\n const listeUnite = ['mm', 'cm', 'dm', 'm', 'dam', 'hmm', 'km']\n for (\n let i = 0,\n a,\n k,\n div,\n resultat,\n resultatFaux,\n typesDeQuestions,\n texte,\n texteCorr,\n cpt = 0;\n i < this.nbQuestions && cpt < 50;\n ) {\n this.autoCorrection[i] = {}\n // We limit the number of tries to search for new values\n typesDeQuestions = this.sup < 5 ? this.sup : randint(1, 4)\n k = randint(0, 2) // Choix du préfixe\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 if (typesDeQuestions === 3) {\n div = choice([true, false]) // Avec des multiplications ou des divisions\n } else if (typesDeQuestions === 4) {\n div = choice([true, false]) // Avec des multiplications ou des divisions sans toujours revenir au m^3\n }\n\n if (this.sup2) {\n // If the box for decimal numbers is checked\n a = choice([\n (new Decimal(randint(10, 199))).div(10),\n nombreAleatoire(1).div(10),\n nombreAleatoire(1).div(100),\n nombreAleatoire(3).div(100)\n ])\n // XX,X 0,X 0,0X X,XX\n } else {\n a = choice([\n nombreAleatoire(1),\n nombreAleatoire(1).mul(10),\n nombreAleatoire(1).mul(100),\n nombreAleatoire(2)\n ])\n // X, X0, X00, XX\n }\n\n if (!div && typesDeQuestions < 4) {\n // Whether to multiply to convert\n\n resultat = a.mul(prefixeMulti[k][2])\n texte =\n '$' +\n texNombre(a, 3) +\n texTexte(prefixeMulti[k][0] + unite) +\n '^3' +\n ' = \\\\dotfill' +\n texTexte(unite) +\n '^3' +\n '$'\n texteCorr =\n '$' +\n texNombre(a, 3) +\n texTexte(prefixeMulti[k][0] + unite) +\n '^3' +\n ' = ' +\n texNombre(a, 3) +\n '\\\\times' +\n prefixeMulti[k][1] +\n texTexte(unite) +\n '^3' +\n ' = ' +\n texNombre(resultat, 20) +\n texTexte(unite) +\n '^3' +\n '$'\n texteCorr += '<br>' + buildTab(a, prefixeMulti[k][0] + 'm', resultat, unite, 2, true)\n } else if (div && typesDeQuestions < 4) {\n k = randint(0, 1) // Pas de conversions de mm^3 en m^3 avec des nombres décimaux car résultat inférieur à 10e-8\n // The previous comment is irrelevant with Decimal, we can display 20 digits after the decimal point here without switching to scientific notation!\n resultat = a.div(prefixeMulti[k][2])\n texte =\n '$' +\n texNombre(a, 3) +\n texTexte(prefixeDiv[k][0] + unite) +\n '^3' +\n ' = \\\\dotfill' +\n texTexte(unite) +\n '^3' +\n '$'\n texteCorr =\n '$' +\n texNombre(a, 3) +\n texTexte(prefixeDiv[k][0] + unite) +\n '^3' +\n ' = ' +\n texNombre(a, 3) +\n '\\\\div' +\n prefixeDiv[k][1] +\n texTexte(unite) +\n '^3' +\n ' = ' +\n texNombre(resultat, 20) + // avec les Decimaux, on peut demander une telle précision, texNombre n'affichera que ce qui est utile (sauf à mettre force, le troisième paramètre à true)\n texTexte(unite) +\n '^3' +\n '$'\n texteCorr += '<br>' + buildTab(a, prefixeDiv[k][0] + 'm', resultat, unite, 2, true)\n } else if (typesDeQuestions === 4) {\n const unite1 = randint(0, 3)\n let ecart = randint(1, 2) // nombre de multiplication par 10 pour passer de l`one to one`autre\n if (ecart > 4 - unite1) {\n ecart = 4 - unite1\n }\n const unite2 = unite1 + ecart\n let multiplicationsPar1000 = ''\n\n if (randint(0, 1) > 0) {\n switch (ecart) {\n case 1:\n multiplicationsPar1000 = `\\\\times 1${sp()}000`\n break\n case 2:\n multiplicationsPar1000 = `\\\\times 1${sp()}000 \\\\times 1${sp()}000`\n break\n case 3:\n multiplicationsPar1000 =\n `\\\\times 1${sp()}000 \\\\times 1${sp()}000 \\\\times 1${sp()}000`\n break\n }\n resultat = a.mul(10 ** (3 * ecart))\n texte =\n '$' +\n texNombre(a, 3) +\n texTexte(listeUnite[unite2]) +\n '^3' +\n ' = \\\\dotfill' +\n texTexte(listeUnite[unite1]) +\n '^3' +\n '$'\n texteCorr =\n '$' +\n texNombre(a, 3) +\n texTexte(listeUnite[unite2]) +\n '^3' +\n ' = ' +\n texNombre(a, 3) +\n multiplicationsPar1000 +\n texTexte(listeUnite[unite1]) +\n '^3' +\n ' = ' +\n texNombre(resultat, 20) + // avec les Decimaux, on peut demander une telle précision, texNombre n'affichera que ce qui est utile (sauf à mettre force, le troisième paramètre à true)\n texTexte(listeUnite[unite1]) +\n '^3' +\n '$'\n texteCorr += '<br>' + buildTab(a, listeUnite[unite2], resultat, listeUnite[unite1], 2, true)\n } else {\n switch (ecart) {\n case 1:\n multiplicationsPar1000 = `\\\\div 1${sp()}000`\n break\n case 2:\n multiplicationsPar1000 = `\\\\div 1${sp()}000 \\\\div 1${sp()}000`\n break\n case 3:\n multiplicationsPar1000 = `\\\\div 1${sp()}000 \\\\div 1${sp()}000 \\\\div 1${sp()}000`\n break\n }\n resultat = a.div(10 ** (3 * ecart))\n texte =\n '$' +\n texNombre(a, 3) +\n texTexte(listeUnite[unite1]) +\n '^3' +\n ' = \\\\dotfill' +\n texTexte(listeUnite[unite2]) +\n '^3' +\n '$'\n texteCorr =\n '$' +\n texNombre(a, 3) +\n texTexte(listeUnite[unite1]) +\n '^3' +\n ' = ' +\n texNombre(a, 3) +\n multiplicationsPar1000 +\n texTexte(listeUnite[unite2]) +\n '^3' +\n ' = ' +\n texNombre(resultat, 20) +\n texTexte(listeUnite[unite2]) +\n '^3' +\n '$'\n texteCorr += '<br>' + buildTab(a, listeUnite[unite1], resultat, listeUnite[unite2], 2, true)\n }\n }\n\n this.autoCorrection[i].enonce = `${texte}\\n`\n resultatFaux = combinaisonListes([resultat.div(10), resultat.div(100), resultat.div(1000), resultat.mul(10), resultat.mul(100), resultat.mul(1000)], 6)\n this.autoCorrection[i].propositions = [{\n texte: `$${texNombre(resultat, 20)}$`,\n statut: true\n },\n {\n texte: `$${texNombre(resultatFaux[0], 20)}$`,\n statut: false\n },\n {\n texte: `$${texNombre(resultatFaux[1], 20)}$`,\n statut: false\n },\n {\n texte: `$${texNombre(resultatFaux[2], 20)}$`,\n statut: false\n },\n {\n texte: `$${texNombre(resultatFaux[3], 20)}$`,\n statut: false\n }\n ]\n if (this.interactif && this.interactifType === 'mth') {\n texte += propositionsQcm(this, i).texte\n } else if (this.interactif && this.interactifType === 'mathLive') {\n texte = texte.replace('\\\\dotfill', `$${ajouteChampTexteMathLive(this, i, 'length inline width25')}$`)\n setReponse(this, i, resultat)\n }\n if (this.listeQuestions.indexOf(texte) === -1) {\n // If the question has never been asked, we create another one\n if (context.vue === 'slide') {\n texte = texte.replace('= \\\\dotfill', '\\\\text{ en }')\n }\n if (context.isHtml) {\n texte = texte.replace(\n '\\\\dotfill',\n '.................................................'\n )\n }\n if (this.sup4 && i === this.nbQuestions - 1) {\n texte += '<br><br>' + buildTab(0, '', 0, '', Math.min(10, this.nbQuestions), true, true)\n }\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n i++\n }\n cpt++\n }\n listeQuestionsToContenu(this)\n }\n this.besoinFormulaireNumerique = [\n 'Difficulty level',\n 5,\n '1: Cubic meter conversions with multiplications\\n2: Cubic meter conversions with divisions\\n3: Cubic meter conversions with multiplications or divisions\\n4: Conversions with multiplications or divisions\\n5: Mixture'\n ]\n this.besoinFormulaire2CaseACocher = ['With decimal numbers']\n if (context.isHtml && !(context.vue === 'slide')) this.besoinFormulaire3Numerique = ['Interactive exercise', 2, '1: MCQ\\n2: Numerical'] // Texte, tooltip\n this.besoinFormulaire4CaseACocher = ['With table', false]\n}\n\nfunction buildTab (a, uniteA, r, uniteR, ligne = 2, force = false, correction = false) {\n const tabRep = function (nbre, uniteNbre) {\n const res = []\n let caseARemplir\n for (let ee = 0; ee < 33; ee++) res.push('')\n switch (uniteNbre.replaceAll(' ', '')) {\n case 'km':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 8 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 8 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 8 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 8 - i)))\n res[i] = (8 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (8 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n case 'hmm':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 11 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 11 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 11 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 11 - i)))\n res[i] = (11 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (11 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n case 'dam':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 14 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 14 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 14 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 14 - i)))\n res[i] = (14 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (14 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n case 'm':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 17 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 17 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 17 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 17 - i)))\n res[i] = (17 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (17 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n case 'dm':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 20 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 20 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 20 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 20 - i)))\n res[i] = (20 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (20 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n case 'cm':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 23 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 23 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 23 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 23 - i)))\n res[i] = (23 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (23 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n case 'mm':\n for (let i = 0; i < 33; i++) {\n caseARemplir = i % 3 === 1 ? (getDigitFromNumber(nbre, Decimal.pow(10, 26 - i)) !== '' ? '\\\\hspace*{0.1cm}' + getDigitFromNumber(nbre, Decimal.pow(10, 26 - i)) + '\\\\hspace*{0.1cm}' : '\\\\hspace*{0.4cm}') : (getDigitFromNumber(nbre, Decimal.pow(10, 26 - i)) === '' ? '\\\\hspace*{0.2cm}' : getDigitFromNumber(nbre, Decimal.pow(10, 26 - i)))\n res[i] = (26 - i === 0 ? '\\\\color{red}{' : '') + caseARemplir + (26 - i === 0 ? (new Decimal(nbre).decimalPlaces() === 0 ? '}' : ',}') : '')\n }\n break\n }\n return res\n }\n\n const createTab = function (aT, rT, first, end, ligne, correction = false) {\n let texte = '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|'\n for (let i = first; i <= end; i++) {\n texte += 'c|'\n }\n texte += '}'\n const headers2 = ['\\\\hspace*{0.4cm}', '\\\\hspace*{0.4cm}', '\\\\text{km}^3', '\\\\text{hm}^3', '\\\\text{dam}^3', '\\\\text{m}^3', '\\\\text{dm}^3', '\\\\text{cm}^3', '\\\\text{mm}^3', '\\\\hspace*{0.4cm}', '\\\\hspace*{0.4cm}']\n texte += '\\\\hline'\n for (let i = first; i < end; i++) {\n texte += `${headers2[i]} ${i < end - 1 ? ' &' : ' \\\\\\\\'}`\n }\n texte += ' \\\\hline'\n\n for (let i = first; i < end; i++) {\n texte += '\\\\begin{array}{c:c:c}'\n texte += `${aT[3 * i]} & ${aT[3 * i + 1]}& ${aT[3 * i + 2]} \\\\\\\\`\n texte += !correction ? ` ${rT[3 * i]} & ${rT[3 * i + 1]}& ${rT[3 * i + 2]} \\\\\\\\` : ''\n texte += '\\\\end{array}'\n texte += (i !== end - 1 ? ' &' : '')\n }\n for (let k = 3; k <= ligne; k++) {\n texte += '\\\\\\\\ \\\\hline'\n for (let i = first; i < end; i++) {\n texte += '\\\\begin{array}{c:c:c}'\n texte += ' & & \\\\\\\\'\n texte += '\\\\end{array}'\n texte += (i !== end - 1 ? ' &' : '')\n }\n }\n texte += '\\\\\\\\ \\\\hline'\n\n texte += ' \\\\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] !== '' || aTab[2] !== '' ? 0 : aTab[3] !== '' || aTab[4] !== '' || aTab[5] !== '' || force ? 3 : 6\n const minTab2 = rTab[0] !== '' || rTab[1] !== '' || rTab[2] !== '' ? 0 : rTab[3] !== '' || rTab[4] !== '' || rTab[5] !== '' || force ? 3 : 6\n const maxTab1 = aTab[32] !== '' || aTab[31] !== '' || aTab[30] !== '' ? 33 : aTab[29] !== '' || aTab[28] !== '' || aTab[27] !== '' || force ? 30 : 27\n const maxTab2 = rTab[32] !== '' || rTab[31] !== '' || rTab[30] !== '' ? 33 : rTab[29] !== '' || rTab[28] !== '' || rTab[27] !== '' || force ? 30 : 27\n return createTab(aTab, rTab, Math.min(minTab1, minTab2) / 3, Math.max(maxTab1, maxTab2) / 3, ligne, correction)\n}\n"],"names":["titre","amcReady","amcType","interactifReady","interactifType","dateDeModifImportante","uuid","ref","ExerciceConversionsVolumes","Exercice","nombreAleatoire","nbChiffres","a","Decimal","i","randint","prefixeMulti","prefixeDiv","unite","listeUnite","k","div","resultat","resultatFaux","typesDeQuestions","texte","texteCorr","cpt","choice","texNombre","texTexte","buildTab","unite1","ecart","unite2","multiplicationsPar1000","sp","combinaisonListes","propositionsQcm","ajouteChampTexteMathLive","setReponse","context","listeQuestionsToContenu","uniteA","r","uniteR","ligne","force","correction","tabRep","nbre","uniteNbre","res","caseARemplir","ee","getDigitFromNumber","createTab","aT","rT","first","end","headers2","aTab","rTab","minTab1","minTab2","maxTab1","maxTab2"],"mappings":"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"}