File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6P15-AVtL40mm.js.map
{"version":3,"file":"6P15-AVtL40mm.js","sources":["../../src/exercices/6e/6P15.js"],"sourcesContent":["import Decimal from 'decimal.js'\nimport { Tableau } from '../../lib/2d/tableau.js'\nimport { choice, combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { nombreDeChiffresDansLaPartieEntiere } from '../../lib/outils/nombres.js'\nimport { numAlpha } from '../../lib/outils/outilString.js'\nimport { stringNombre, texNombre } from '../../lib/outils/texNombre.js'\nimport { fixeBordures, mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport FractionEtendue from '../../modules/FractionEtendue.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport Exercice from '../Exercice.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const titre = 'Calculate the proportionality coefficient'\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\nexport const dateDePublication = '18/03/2023'\n\nexport const uuid = '2d5eb'\nexport const ref = '6P15'\n/**\n * @author jean-claude Lhote\n * @constructor\n */\nexport default function CalculerCoeffPropo () {\n Exercice.call(this)\n this.sup = 1\n this.spacing = 2\n this.spacingCorr = 3\n this.nbQuestions = 5\n this.besoinFormulaireNumerique = ['Coefficient type', 4, '1: Integer\\n2: Decimal\\n3: Fraction\\n4: Mixture']\n this.nouvelleVersion = function () {\n const isBetterWithLinearity = function (nombres) {\n const [a, b, c] = nombres\n if (a % b === 0 || a % c === 0 || b % c === 0 || b % a === 0 || c % a === 0 || c % b === 0) return true\n if (a + b === c || a + c === b || b + c === a) return true\n if (a - b === c || a - c === b || b - c === a || b - a === c || c - a === c || c - b === a) return true\n if (2 * a - 3 * b === 0 || 2 * a - 3 * c === 0 || 2 * b - 3 * c === 0 || 3 * a - 2 * b === 0 || 3 * a - 2 * c === 0 || 3 * b - 2 * c === 0) return true\n return false\n }\n this.listeQuestions = []\n this.listeCorrections = []\n this.autoCorrection = []\n const typeDeCoefficient = ['Entire', 'Decimal', 'Fraction']\n let listeTypesDeCoefficient = []\n const tableauxEntiers = [[2, 3, 4, 5, 6, 7, 8, 9], [10, 12, 15, 16], [20, 24, 25, 30, 35, 40], [50, 60, 70, 80, 90]]\n const tableauxCoefficientsEntiers = [[2, 4, 6, 8, 10], [3, 5, 7, 9, 80, 90], [11, 5, 19, 15, 25, 50, 75], [12, 15, 20, 25, 30, 40]]\n const tableauxCoefficientsFractions = [[[2, 5], [3, 4], [2, 3], [2, 7]], [[3, 7], [4, 7], [4, 9], [5, 9]], [[7, 3], [8, 3], [3, 2], [7, 2]], [[9, 4], [7, 8], [8, 7], [9, 5]]]\n // @todo provide a table of choice of fractions rather than randomizing their construction\n\n if (this.sup === 4) listeTypesDeCoefficient = combinaisonListes(typeDeCoefficient, this.nbQuestions)\n else listeTypesDeCoefficient = combinaisonListes([typeDeCoefficient[this.sup - 1]], this.nbQuestions)\n for (let i = 0, texte, texteCorr; i < this.nbQuestions; i++) {\n if (context.isAmc) this.autoCorrection[i] = {}\n // I'm in js, I do practical JsDoc inline typing to recover autocompletion\n /** @type number | Decimal | FractionEtendue */\n let coefficient\n /** @type Array<{ nombre: number, visible: boolean }> */\n const premiereLigne = []\n /** @type Array<{ nombre: number, visible: boolean }> */\n const deuxiemeLigne = []\n const colonneReference = randint(0, 2) // La colonne qui contiendra deux valeurs visibles pour faire le calcul\n do {\n switch (listeTypesDeCoefficient[i]) {\n case 'Entire': // On choisit un coefficient dans les listes => tout est entier\n coefficient = choice(tableauxCoefficientsEntiers[i % 4])\n for (let colonne = 0; colonne < 3; colonne++) {\n const contenuVisible = choice([true, false])\n premiereLigne[colonne] = {\n nombre: choice(choice(tableauxEntiers), premiereLigne.map(elt => elt.nombre)),\n visible: colonne === colonneReference ? true : contenuVisible\n }\n deuxiemeLigne[colonne] = {\n nombre: premiereLigne[colonne].nombre * coefficient,\n visible: colonne === colonneReference ? true : !contenuVisible\n }\n }\n break\n case 'Decimal': // On construit un coefficient... on pourrait le choisir dans une liste\n coefficient = new Decimal(randint(1, 9) + randint(0, 2) * 10).div(10)\n for (let colonne = 0; colonne < 3; colonne++) {\n const contenuVisible = choice([true, false])\n premiereLigne[colonne] = {\n nombre: choice(choice(tableauxEntiers), premiereLigne.map(elt => elt.nombre)),\n visible: colonne === colonneReference ? true : contenuVisible\n }\n deuxiemeLigne[colonne] = {\n nombre: coefficient.mul(premiereLigne[colonne].nombre),\n visible: colonne === colonneReference ? true : !contenuVisible\n }\n }\n break\n case 'Fraction': { // construction de la fraction => prévoir une liste simplifiera le code\n let allNumberAreGood\n do {\n allNumberAreGood = true\n const [numerateur, denominateur] = choice(choice(tableauxCoefficientsFractions))\n coefficient = new FractionEtendue(numerateur, denominateur)\n for (let colonne = 0; colonne < 3; colonne++) {\n const contenuVisible = choice([true, false])\n let unNombre\n let antiBoucleInfinie = 0\n do { // On choisit un nombre à multiplier par une fraction => on veut un résultat entier obligatoirement !\n unNombre = choice(choice(tableauxEntiers), premiereLigne.map(elt => elt.nombre))\n antiBoucleInfinie++\n } while (!coefficient.multiplieEntier(unNombre).estEntiere && antiBoucleInfinie < 20)\n if (antiBoucleInfinie === 20) allNumberAreGood = false\n premiereLigne[colonne] = {\n nombre: unNombre,\n visible: colonne === colonneReference ? true : contenuVisible\n }\n deuxiemeLigne[colonne] = {\n nombre: premiereLigne[colonne].nombre * coefficient,\n visible: colonne === colonneReference ? true : !contenuVisible\n }\n }\n } while (!allNumberAreGood)\n break\n }\n }\n } while (isBetterWithLinearity(premiereLigne.map(elt => elt.nombre)))\n const coefficientRationnel = coefficient instanceof FractionEtendue\n const coefficientDecimal = coefficient instanceof Decimal\n const coefficientTex = coefficientRationnel ? coefficient.texFraction : stringNombre(coefficient)\n // filling the stated table and correction.\n const ligne1 = [{ texte: 'Size A' }].concat(premiereLigne.map(elt => {\n return elt.visible ? { texte: stringNombre(elt.nombre), math: true } : { texte: '...' }\n }))\n const ligne2 = [{ texte: 'Size B' }].concat(deuxiemeLigne.map(elt => {\n return elt.visible ? { texte: stringNombre(elt.nombre), math: true } : { texte: '...' }\n }))\n const monTableau = listeTypesDeCoefficient[i] === 'Fraction'\n ? new Tableau({\n largeurTitre: 6,\n largeur: 3,\n hauteur: 2,\n nbColonnes: 4,\n ligne1,\n ligne2,\n flecheDroite: { texte: '\\\\times \\\\ldots', latex: true },\n flecheDroiteSens: 'down',\n flecheGauche: { texte: '\\\\times \\\\ldots', latex: true },\n flecheGaucheSens: 'high'\n })\n : new Tableau({\n largeurTitre: 6,\n largeur: 3,\n hauteur: 2,\n nbColonnes: 4,\n ligne1,\n ligne2,\n flecheDroite: { texte: '×...' },\n flecheDroiteSens: 'down'\n })\n const ligne1Corr = [{ texte: 'Size A' }].concat(premiereLigne.map(elt => {\n return { texte: stringNombre(elt.nombre), math: true }\n }))\n const ligne2Corr = [{ texte: 'Size B' }].concat(deuxiemeLigne.map(elt => {\n return { texte: stringNombre(elt.nombre), math: true }\n }))\n const monTableauCorr = listeTypesDeCoefficient[i] === 'Fraction'\n ? new Tableau({\n largeurTitre: 7,\n largeur: 3,\n hauteur: 2,\n nbColonnes: 4,\n ligne1: ligne1Corr,\n ligne2: ligne2Corr,\n flecheDroite: { texte: `\\\\times ${coefficientTex}`, latex: true },\n flecheDroiteSens: 'down',\n flecheGauche: { texte: `\\\\times ${coefficient.inverse().texFraction}`, latex: true },\n flecheGaucheSens: 'high'\n })\n : new Tableau({\n largeurTitre: 7,\n largeur: 3,\n hauteur: 2,\n nbColonnes: 4,\n ligne1: ligne1Corr,\n ligne2: ligne2Corr,\n flecheDroite: { texte: `× ${coefficientTex}`, math: true },\n flecheDroiteSens: 'down'\n })\n texte = 'The table below represents a situation of proportionality.<br>'\n texte += numAlpha(0) + 'Calculate the proportionality coefficient.<br>'\n texte += numAlpha(1) + 'Complete the proportionality table.<br>'\n // drawing the table according to the context\n // define an object for expected responses\n const reponsesAttendue = { reponse1: {}, reponse2: {} }\n for (let colonne = 1, rep = 1; colonne < 4; colonne++) {\n if (colonne !== colonneReference + 1) {\n reponsesAttendue[`response${rep.toString()}`] = {\n lettre: premiereLigne[colonne - 1].visible ? 'B' : 'A',\n colonne,\n reponse: premiereLigne[colonne - 1].visible\n ? {\n valeur: deuxiemeLigne[colonne - 1].nombre,\n digits: 4\n }\n : { valeur: premiereLigne[colonne - 1].nombre, digits: 2 }\n }\n rep++\n }\n }\n if (context.isHtml) { // Pour HTML on utilise mathalea2d\n texte += mathalea2d(Object.assign({}, fixeBordures([monTableau])), monTableau)\n if (this.interactif) {\n texte += 'Proportionality coefficient from A to B:' + ajouteChampTexteMathLive(this, 3 * i, 'width15 inline')\n setReponse(this, 3 * i, coefficient, { formatInteractif: coefficientRationnel ? 'fractionEqual' : 'calculation' })\n texte += `<br>Value of the ${reponsesAttendue.reponse1.lettre} quantity for the ${reponsesAttendue.reponse1.colonne} column:`\n texte += ajouteChampTexteMathLive(this, 3 * i + 1, 'width15 inline')\n setReponse(this, 3 * i + 1, reponsesAttendue.reponse1.reponse.valeur, { formatInteractif: 'calculation' })\n texte += `<br>Value of the ${reponsesAttendue.reponse2.lettre} quantity for the ${reponsesAttendue.reponse2.colonne} column:`\n texte += ajouteChampTexteMathLive(this, 3 * i + 2, 'width15 inline')\n setReponse(this, 3 * i + 2, reponsesAttendue.reponse2.reponse.valeur, { formatInteractif: 'calculation' })\n }\n } else { // pour LAtex, c'est profCollege dans le texte\n texte += '\\n\\\\Propor[Math,Stretch=2,width=15]{'\n for (let colonne = 0; colonne < 3; colonne++) {\n texte += `${ligne1[colonne + 1].texte.replace('...', '\\\\ldots')}/`\n texte += `${ligne2[colonne + 1].texte.replace('...', '\\\\ldots')}`\n if (colonne < 2) texte += ','\n else texte += '}\\not'\n }\n texte += '\\n\\\\FlechesPD{1}{2}{$\\\\times$\\\\ldots}\\n'\n if (context.isAmc) {\n this.autoCorrection[i] = {\n enonce: texte,\n options: { multicols: true, barreseparation: true }, // facultatif. Par défaut, multicols est à false. Ce paramètre provoque un multicolonnage (sur 2 colonnes par défaut) : pratique quand on met plusieurs AMCNum. !!! Attention, cela ne fonctionne pas, nativement, pour AMCOpen. !!!\n propositions: [\n {\n type: 'AMCNum',\n propositions: [{\n texte: '',\n statut: '',\n reponse: { // coefficient\n texte: 'coefficient value',\n valeur: [coefficient],\n param: coefficientDecimal\n ? {\n digits: 3,\n decimal: 2,\n signe: false,\n approx: 0\n }\n : coefficientRationnel\n ? {\n digitsNum: nombreDeChiffresDansLaPartieEntiere(deuxiemeLigne[colonneReference].nombre),\n digitsDen: nombreDeChiffresDansLaPartieEntiere(premiereLigne[colonneReference].nombre),\n digits: nombreDeChiffresDansLaPartieEntiere(deuxiemeLigne[colonneReference].nombre) + nombreDeChiffresDansLaPartieEntiere(premiereLigne[colonneReference].nombre),\n approx: 0//,\n // alsoCorrect: newRangeFraction(secondLine[Referencecolumn].number, firstLine[Referencecolumn].number)\n }\n : {\n digits: 2,\n decimals: 0,\n signe: false,\n approx: 0\n }\n }\n }]\n },\n {\n type: 'AMCNum',\n propositions: [{\n texte: '',\n statut: '',\n reponse: {\n texte: `Response from the ${reponsesAttendue.reponse1.lettre} column ${reponsesAttendue.reponse1.colonne} line:`,\n valeur: [reponsesAttendue.reponse1.reponse.valeur],\n param: {\n digits: reponsesAttendue.reponse1.reponse.digits,\n decimals: 0,\n signe: false,\n approx: 0\n }\n }\n }]\n },\n {\n type: 'AMCNum',\n propositions: [{\n texte: '',\n statut: '',\n reponse: {\n texte: `Response from the ${reponsesAttendue.reponse2.lettre} column ${reponsesAttendue.reponse2.colonne} line:`,\n valeur: [reponsesAttendue.reponse2.reponse.valeur],\n param: {\n digits: reponsesAttendue.reponse2.reponse.digits,\n decimals: 0,\n signe: false,\n approx: 0\n }\n }\n }]\n }\n ]\n }\n }\n }\n texteCorr = numAlpha(0) +\n `The proportionality coefficient is given by the quotient of $${texNombre(deuxiemeLigne[colonneReference].nombre)}$\n by $${texNombre(premiereLigne[colonneReference].nombre)}$.<br>Either $\\\\dfrac{${texNombre(deuxiemeLigne[colonneReference].nombre)}}{${texNombre(premiereLigne[colonneReference].nombre)}}`\n if (coefficientRationnel) {\n const quotient = new FractionEtendue(deuxiemeLigne[colonneReference].nombre, premiereLigne[colonneReference].nombre)\n if (!quotient.estIrreductible) {\n texteCorr += `= ${coefficient.texFraction}$.<br>`\n } else {\n texteCorr += '$.<br>'\n }\n } else {\n texteCorr += `= ${texNombre(coefficient)}$.<br>`\n }\n for (let colonne = 1; colonne < 4; colonne++) { // La première colonne ici c'est la colonne des entêtes\n if (premiereLigne[colonne - 1].visible && colonne !== colonneReference + 1) { // on a la première valeur, on calcule donc la deuxième\n texteCorr += `For the ${colonne} column, we calculate: $${ligne1Corr[colonne].texte}\\\\times ${coefficientTex}=`\n if (coefficientRationnel) {\n texteCorr += `\\\\dfrac{${ligne1Corr[colonne].texte}\\\\times ${coefficient.num}}{${coefficient.den}}=`\n }\n texteCorr += `${ligne2Corr[colonne].texte}$.`\n } else {\n if (colonne !== colonneReference + 1) {\n texteCorr += `For the ${colonne} column, we calculate: $${ligne2Corr[colonne].texte}${coefficientRationnel ? '\\\\times' + coefficient.inverse().texFraction : '\\\\div' + coefficientTex}=`\n if (coefficientRationnel) {\n texteCorr += `\\\\dfrac{${ligne2Corr[colonne].texte}\\\\times ${coefficient.den}}{${coefficient.num}}=`\n }\n texteCorr += `${ligne1Corr[colonne].texte}$.`\n }\n }\n if (colonne < 4 && colonne !== colonneReference + 1) texteCorr += '<br>'\n }\n // drawing the table according to the context\n if (context.isHtml) { // Pour HTML on utilise mathalea2d\n texteCorr += mathalea2d(Object.assign({}, fixeBordures([monTableauCorr])), monTableauCorr)\n } else { // pour LAtex, c'est profCollege dans le texte\n texteCorr += '\\\\Propor[Math,\\nStretch=2,\\nwidth=1.5]{'\n for (let colonne = 0; colonne < 3; colonne++) {\n texteCorr += `$${ligne1Corr[colonne + 1].texte}$/`\n texteCorr += `$${ligne2Corr[colonne + 1].texte}$`\n if (colonne < 2) texteCorr += ','\n else texteCorr += '}\\not'\n }\n if (coefficientRationnel) {\n texteCorr += `\\\\FlechesPG{2}{1}{$\\\\times ${coefficient.inverse().texFraction}$}\\n`\n }\n texteCorr += `\\\\FlechesPD{1}{2}{$\\\\times ${coefficientTex}$}`\n if (context.isAmc) {\n this.autoCorrection[i].propositions[0].propositions[0].texte = texteCorr\n }\n }\n if (this.questionJamaisPosee(i, ...premiereLigne.map(elt => elt.nombre), ...deuxiemeLigne.map(elt => elt.nombre))) {\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n }\n }\n listeQuestionsToContenu(this)\n }\n}\n"],"names":["titre","interactifReady","interactifType","amcReady","amcType","dateDePublication","uuid","ref","CalculerCoeffPropo","Exercice","isBetterWithLinearity","nombres","a","b","c","typeDeCoefficient","listeTypesDeCoefficient","tableauxEntiers","tableauxCoefficientsEntiers","tableauxCoefficientsFractions","combinaisonListes","i","texte","texteCorr","context","coefficient","premiereLigne","deuxiemeLigne","colonneReference","randint","choice","colonne","contenuVisible","elt","Decimal","allNumberAreGood","numerateur","denominateur","FractionEtendue","unNombre","antiBoucleInfinie","coefficientRationnel","coefficientDecimal","coefficientTex","stringNombre","ligne1","ligne2","monTableau","Tableau","ligne1Corr","ligne2Corr","monTableauCorr","numAlpha","reponsesAttendue","rep","mathalea2d","fixeBordures","ajouteChampTexteMathLive","setReponse","nombreDeChiffresDansLaPartieEntiere","texNombre","listeQuestionsToContenu"],"mappings":"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"}