File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6N20-2-giKUO8bW.js.map
{"version":3,"file":"6N20-2-giKUO8bW.js","sources":["../../src/exercices/6e/6N20-2.ts"],"sourcesContent":["import { shuffle } from '../../lib/outils/arrayOutils'\nimport Exercice from '../ExerciceTs'\nimport { gestionnaireFormulaireTexte, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport FractionEtendue from '../../modules/FractionEtendue.js'\nimport { ComputeEngine } from '@cortex-js/compute-engine'\nimport type { MathfieldElement } from 'mathlive'\n\nexport const titre = 'Decomposing compound fractions to their decimal form.'\nexport const interactifReady = true\nexport const interactifType = 'custom'\nexport const dateDeModifImportante = '18/11/2023' // passage de l'interactif en fill in the blank\n\n/**\n * Décomposer une fraction (partie entière + fraction inférieure à 1) puis donner l'écriture décimale.\n * @author Rémi Angot\n * 6N20-2\n */\nexport const uuid = 'ab44e'\nexport const ref = '6N20-2'\n\nconst ce = new ComputeEngine()\n\nexport default class ExerciceFractionsDifferentesEcritures extends Exercice {\n reponsesAttendues: {\n entier: number;\n numPartieDecimale: number;\n den: number;\n ecritureDecimale: string;\n }[] = []\n\n constructor () {\n super()\n this.consigne =\n 'Write as the sum of a whole number and a fraction less than 1 then write as a decimal.'\n this.spacing = 2\n this.spacingCorr = 2\n this.sup = '2-4-4-5-5-5-8-8-10-10-10-10'\n\n this.besoinFormulaireTexte = [\n 'Dénominateurs à choisir',\n 'Nombres séparés par des tirets\\n2: demis\\n4: quarts\\n5: cinquièmes\\n8: huitièmes\\n10: dixièmes\\n11: Mélange'\n ]\n this.exoCustomResultat = true // Permet de mettre chaque question sur 2 points\n }\n\n nouvelleVersion (): void {\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n this.autoCorrection = []\n const listeDenominateurs = gestionnaireFormulaireTexte({\n saisie: this.sup2 as string,\n min: 2,\n max: 10,\n defaut: 11,\n melange: 11,\n nbQuestions: this.nbQuestions,\n exclus: [3, 6, 7, 9]\n })\n const fractions : [number, number, string][] = []\n const nbDenominateursDifferents : number = new Set(listeDenominateurs).size\n const aleaMax = Math.ceil(this.nbQuestions / nbDenominateursDifferents)\n const fractionsUsed: { [id: number]: number [] } = {}\n for (let i = 0; i < this.nbQuestions; i++) {\n const b: number = listeDenominateurs[i] as number\n if (!fractionsUsed[b]) fractionsUsed[b] = shuffle(Array.from({ length: b - 1 }, (_, i) => i + 1)) // tous les numérateurs possibles...\n const num: number = fractionsUsed[b].pop() ?? 1 // choisi un numérateur au hasard\n let partieDecimale: string = ((num * 1000) / b).toString() // avec les 8e on a 3 chiffres, avec les 4 2...\n partieDecimale = ',' + (partieDecimale.match(/[1-9]+/g)?.[0] ?? '')\n fractions.push([num, b, partieDecimale])\n }\n shuffle(fractions)\n for (let i = 0, cpt = 0, num : number, ecriDec : string, den : number, numPartieFrac : number, entier : number, texte : string, texteCorr : string; i < this.nbQuestions && cpt < 100; cpt++) {\n numPartieFrac = fractions[i][0]\n den = fractions[i][1]\n entier = randint(1, aleaMax)\n num = entier * den + numPartieFrac\n ecriDec = entier.toString() + fractions[i][2]\n const frac = new FractionEtendue(num, den)\n const partieFrac = new FractionEtendue(numPartieFrac, den)\n\n texte =\n '$ ' +\n frac.texFraction +\n ' = \\\\phantom{00}\\\\text{........}\\\\phantom{00} + ' +\n '\\\\dfrac{\\\\phantom{00}\\\\text{........}\\\\phantom{00}}{\\\\phantom{00}\\\\text{........}\\\\phantom{00}}' +\n ' = $'\n texteCorr =\n '$ ' +\n frac.texFraction +\n ' = ' +\n entier +\n '+' +\n partieFrac.texFraction +\n ' = ' +\n ecriDec +\n ' $'\n this.reponsesAttendues[i] = { entier, numPartieDecimale: numPartieFrac, den, ecritureDecimale: ecriDec }\n\n if (this.interactif) {\n texte = `<math-field class=\"fillInTheBlanks invisible\" readonly style=\"font-size:2em\" id=\"champTexteEx${this.numeroExercice}Q${i}\">\n ${frac.texFraction} =~\\\\placeholder[n]{} + \\\\dfrac{\\\\placeholder[num]{}}{\\\\placeholder[den]{}} =~\\\\placeholder[ecritureDecimale]{}\n </math-field><span class=\"ml-2\" id=\"feedbackEx${this.numeroExercice}Q${i}\"></span>`\n }\n if (this.questionJamaisPosee(i, num, den)) {\n // Si la question n'a jamais été posée, on en crée une autre\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n i++\n }\n }\n listeQuestionsToContenu(this) // Espacement de 2 em entre chaque question.\n }\n\n correctionInteractive = (i?: number) => {\n if (i === undefined) return ''\n if (this.answers === undefined) this.answers = {}\n const result: ('OK' | 'KO')[] = []\n const mf = document.querySelector(\n `#champTexteEx${this.numeroExercice}Q${i}`\n ) as MathfieldElement\n if (mf === null) return ''\n const { entier, numPartieDecimale, den, ecritureDecimale } = this.reponsesAttendues[i]\n this.answers[`Ex${this.numeroExercice}Q${i}`] = mf.getValue()\n const divFeedback = document.querySelector(\n `#feedbackEx${this.numeroExercice}Q${i}`\n ) as HTMLDivElement\n const nSaisi = Number(mf.getPromptValue('n').replaceAll(',', '.'))\n const test1 = nSaisi === entier\n const numSaisi = Number(mf.getPromptValue('num').replaceAll(',', '.'))\n const denSaisi = Number(mf.getPromptValue('den').replaceAll(',', '.'))\n const test2 = (denSaisi !== 0) && Number.isInteger(denSaisi) && Number.isInteger(numSaisi) && new FractionEtendue(numPartieDecimale, den).isEqual(new FractionEtendue(numSaisi, denSaisi))\n const test3 = ce\n .parse(mf.getPromptValue('ecritureDecimale'))\n .isSame(ce.parse(`${ecritureDecimale}`))\n if (test1 && test2 && test3) {\n divFeedback.innerHTML = '😎'\n } else {\n divFeedback.innerHTML = '☹️'\n }\n if (!test1) {\n mf.setPromptState('n', 'incorrect', true)\n } else {\n mf.setPromptState('n', 'correct', true)\n }\n if (!test2) {\n mf.setPromptState('num', 'incorrect', true)\n mf.setPromptState('den', 'incorrect', true)\n } else {\n mf.setPromptState('num', 'correct', true)\n mf.setPromptState('den', 'correct', true)\n }\n if (!test3) {\n mf.setPromptState('ecritureDecimale', 'incorrect', true)\n } else {\n mf.setPromptState('ecritureDecimale', 'correct', true)\n }\n if (test1 && test2) result.push('OK')\n else result.push('KO')\n if (test3) result.push('OK')\n else result.push('KO')\n return result\n }\n}\n"],"names":["titre","interactifReady","interactifType","dateDeModifImportante","uuid","ref","ce","ComputeEngine","Exercice","__publicField","i","result","mf","entier","numPartieDecimale","den","ecritureDecimale","divFeedback","test1","numSaisi","denSaisi","test2","FractionEtendue","test3","listeDenominateurs","gestionnaireFormulaireTexte","fractions","nbDenominateursDifferents","aleaMax","fractionsUsed","b","shuffle","_","num","partieDecimale","_a","cpt","ecriDec","numPartieFrac","texte","texteCorr","randint","frac","partieFrac","listeQuestionsToContenu"],"mappings":"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"}