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/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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"}