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/_Canc3a-t0jmkW02.js.map
{"version":3,"file":"_Canc3a-t0jmkW02.js","sources":["../../src/exercices/can/c3/_Canc3a.js"],"sourcesContent":["import { milieu, plot, point } from '../../../lib/2d/points.js'\nimport { polygone, polygoneAvecNom } from '../../../lib/2d/polygones.js'\nimport { droiteGraduee, grille } from '../../../lib/2d/reperes.js'\nimport { segment, segmentAvecExtremites } from '../../../lib/2d/segmentsVecteurs.js'\nimport { texteParPosition } from '../../../lib/2d/textes.js'\nimport { choice, shuffle } from '../../../lib/outils/arrayOutils'\nimport { miseEnEvidence, texteEnCouleur } from '../../../lib/outils/embellissements'\nimport { arrondi } from '../../../lib/outils/nombres.js'\nimport { sp } from '../../../lib/outils/outilString.js'\nimport { prenomF, prenomM } from '../../../lib/outils/Personne.js'\nimport { texPrix } from '../../../lib/format/style'\nimport { stringNombre, texNombre } from '../../../lib/outils/texNombre.js'\nimport { mathalea2d, fixeBordures, colorToLatexOrHTML } from '../../../modules/2dGeneralites.js'\nimport FractionEtendue from '../../../modules/FractionEtendue.js'\nimport { context } from '../../../modules/context.js'\nimport { randint } from '../../../modules/outils.js'\n\nimport Decimal from 'decimal.js'\nexport const titre = 'Classe CAN C3'\n\n/**\n * Essai de classe Can pour le sujet cm2 2023\n * @author Sébastien LOZANO\n*/\n\nexport default class ClasseCan2023 {\n  compareNombres (a, b) {\n    return a - b\n  }\n\n  /**\n   * Méthode pour la question produit de deux facteurs entiers\n   * @param {number} minFacteur0 min pour le premier facteur\n   * @param {number} maxFacteur0 max pour le premier facteur\n   * @param {number} minFacteur1 min pour le second facteur\n   * @param {number} maxFacteur1 max pour le second facteur\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  produitDeDeuxFacteurs (minFacteur0, maxFacteur0, minFacteur1, maxFacteur1) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = randint(minFacteur0, maxFacteur0)\n    const b = randint(minFacteur1, maxFacteur1)\n    sortie.texte = `$${a} \\\\times ${b}$`\n    sortie.texteCorr = `$${a} \\\\times ${b}=${miseEnEvidence(a * b)}$`\n    sortie.reponse = a * b\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour ajouter une dizaine moins un\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  ajouterDizaineMoinsUn () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = randint(23, 38, [20, 30, 31, 29])\n    const b = choice([19, 29, 39])\n\n    sortie.texte = `$${a}+${b}$`\n    sortie.reponse = a + b\n    if (b === 19) { sortie.texteCorr = `$${a}+${b}=${a}+20-1=${a + 20}-1=${miseEnEvidence(sortie.reponse)}$` }\n    if (b === 29) { sortie.texteCorr = `$${a}+${b}=${a}+30-1=${a + 30}-1=${miseEnEvidence(sortie.reponse)}$` }\n    if (b === 39) { sortie.texteCorr = `$${a}+${b}=${a}+40-1=${a + 40}-1=${miseEnEvidence(sortie.reponse)}$` }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour dénombrer les éléments d'un rectangle\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  denombrementProduit () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const k = randint(5, 8)\n    const b = randint(2, 5) * k\n    const d = []\n    for (let n = 0; n < b; n++) {\n      d.push(plot(n % k, -Math.floor(n / k), { rayon: 0.2, couleur: 'black', couleurDeRemplissage: 'black' }))\n    }\n    sortie.texte = 'Combien y a-t-il de boules noires ? <br> \\n'\n\n    sortie.texte += `${mathalea2d(Object.assign({ scale: 0.3 }, fixeBordures(d)), d)}`\n    sortie.reponse = b\n    sortie.texteCorr = `Le nombre de boules noires est donné par : $${k}\\\\times ${texNombre(b / k, 0)}=${miseEnEvidence(b)}$.`\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = '\\\\dots{} boules'\n    return sortie\n  }\n\n  /**\n   * Méthode pour calucler la moitié ou le double\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  moitieDouble () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let a\n    if (choice([true, false])) {\n      a = randint(11, 25, 20) * 2\n      sortie.reponse = a / 2\n      sortie.texte = `La moitié de $${a}$`\n      sortie.texteCorr = `La moitié de $${a}$ est $${a}\\\\div 2=${miseEnEvidence(a / 2)}$.`\n    } else {\n      a = randint(16, 45, [20, 30, 40])\n      sortie.reponse = 2 * a\n      sortie.texte = `Le double de $${a}$`\n      sortie.texteCorr = `Le double  de $${a}$ est $${a}\\\\times 2=${miseEnEvidence(a * 2)}$.`\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour la lecture d'abscisse entière\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  lectureAbscisseEntiere () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    // Variables pour l'affichage LaTeX\n    let pas, valeurOrigine, valeurUnitex, gradLaTeX\n    let a, d\n    if (choice([true, false])) {\n      a = randint(42, 52, [40, 45, 50]) * 2 // choix de la produit = écart entre deux graduations\n      pas = 5\n      valeurOrigine = a - a % 10\n      valeurUnitex = valeurOrigine + 10\n      gradLaTeX = Math.floor(a % 10 / 2)\n      d = droiteGraduee({\n        Unite: 0.5,\n        Min: 81,\n        Max: 106,\n        x: 0,\n        y: 0,\n        thickDistance: 10,\n        thickSec: true,\n        thickSecDist: 2,\n        thickOffset: 0,\n        axeStyle: '->',\n        pointListe: [[a, '?']],\n        pointCouleur: 'blue',\n        pointStyle: 'x',\n        labelsPrincipaux: true\n      })\n    } else {\n      a = choice([75, 85, 95, 105, 115])// choix de la produit = écart entre deux graduations\n      pas = 2\n      valeurOrigine = a - a % 10\n      valeurUnitex = valeurOrigine + 10\n      gradLaTeX = 1\n      d = droiteGraduee({\n        Unite: 0.25,\n        Min: 71,\n        Max: 116,\n        x: 0,\n        y: 0,\n        thickDistance: 10,\n        thickSec: true,\n        thickSecDist: 5,\n        thickOffset: 0,\n        axeStyle: '->',\n        pointListe: [[a, '?']],\n        pointCouleur: 'blue',\n        pointStyle: 'x',\n        labelsPrincipaux: true\n      })\n    }\n    sortie.reponse = a\n    sortie.texte = context.isHtml ? 'Quel est le nombre écrit sous le point d\\'interrogation ?<br>\\n' + mathalea2d({ xmin: -1, ymin: -1, xmax: 15, ymax: 1.5, scale: 0.6, style: 'margin: auto' }, d) + '\\n' : `Complète \\\\\\\\ \\\\Reperage[ValeurOrigine=${valeurOrigine},ValeurUnitex=${valeurUnitex},Pasx=${pas},AffichageAbs=3,AffichageGrad]{${gradLaTeX}/A}`\n    // texte += context.isHtml ? '' : '\\\\\\\\\\\\smallskip'\n    sortie.texteCorr = `Le nombre écrit sous le point d'interrogation est : $${miseEnEvidence(a)}$.`\n    sortie.canEnonce = 'Complète.'\n    sortie.canReponseACompleter = `\\\\Reperage[ValeurOrigine=${valeurOrigine},ValeurUnitex=${valeurUnitex},Pasx=${pas},AffichageAbs=3,AffichageGrad]{${gradLaTeX}/A}`\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer deux facteurs d'un produit donné\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  trouverLesFacteursDUnProduit () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    function texteQ6 (valeurCible) {\n      const sortie = { texte: '', reponseACompleter: '' }\n      sortie.texte = `Complète : ${context.isHtml ? sp(3) : ''} $\\\\ldots \\\\times \\\\ldots =${valeurCible}$`\n      sortie.reponseACompleter = `$\\\\ldots \\\\times \\\\ldots =${valeurCible}$`\n      return sortie\n    }\n    const m = choice([1, 2, 3, 4])\n    if (m === 1) {\n      sortie.texte = texteQ6(18).texte\n      sortie.canReponseACompleter = texteQ6(18).reponseACompleter\n      sortie.reponse = ['3;6', '1;18', '2;9', '6;3', '18;1', '9;2']\n      sortie.texteCorr = `Trois réponses possibles (avec des entiers) : <br>\n    $${miseEnEvidence(3)}\\\\times ${miseEnEvidence(6)}=18$<br>\n    $${miseEnEvidence(2)}\\\\times ${miseEnEvidence(9)}=18$<br>\n    $${miseEnEvidence(1)}\\\\times ${miseEnEvidence(18)}=18$ `\n    }\n    if (m === 2) {\n      sortie.texte = texteQ6(21).texte\n      sortie.canReponseACompleter = texteQ6(21).reponseACompleter\n      sortie.reponse = ['3;7', '1;21', '7;3', '21;1']\n      sortie.texteCorr = `Deux réponses possibles (avec des entiers) : <br>\n      $${miseEnEvidence(3)}\\\\times ${miseEnEvidence(7)}=21$<br>\n      $${miseEnEvidence(1)}\\\\times ${miseEnEvidence(21)}=21$ `\n    }\n    if (m === 3) {\n      sortie.texte = texteQ6(35).texte\n      sortie.canReponseACompleter = texteQ6(35).reponseACompleter\n      sortie.reponse = ['5;7', '1;35', '7;5', '35;1']\n      sortie.texteCorr = `Deux réponses possibles (avec des entiers) : <br>\n        $${miseEnEvidence(5)}\\\\times ${miseEnEvidence(7)}=35$<br>\n        $${miseEnEvidence(1)}\\\\times ${miseEnEvidence(35)}=35$ `\n    }\n    if (m === 4) {\n      sortie.texte = texteQ6(42).texte\n      sortie.canReponseACompleter = texteQ6(42).reponseACompleter\n      sortie.reponse = ['6;7', '1;42', '2;21', '3;14', '7;6', '42;1', '21;2', '14;3']\n      sortie.texteCorr = `Quatre réponses possibles (avec des entiers) : <br>\n            $${miseEnEvidence(6)}\\\\times ${miseEnEvidence(7)}=42$<br>\n            $${miseEnEvidence(2)}\\\\times ${miseEnEvidence(21)}=42$ <br>\n            $${miseEnEvidence(3)}\\\\times ${miseEnEvidence(14)}=42$<br>\n            $${miseEnEvidence(1)}\\\\times ${miseEnEvidence(42)}=42$`\n    }\n    sortie.canEnonce = 'Complète.'\n    return sortie\n  }\n\n  /**\n   * Méthode pour ajouter des durées\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  sommeDeDurees () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let b, c\n    if (choice([true, false])) {\n      b = choice([35, 40, 45, 50, 55])\n      c = choice([30, 35, 40, 45])\n      sortie.texte = context.isHtml ? `$${b}\\\\text{ min }+${c} \\\\text{ min }= \\\\ldots \\\\text{ h } \\\\ldots \\\\text{ min }$` : `\\\\Temps{;;;;${b};}+ \\\\Temps{;;;;${c};}`\n      sortie.reponse = b + c - 60\n    } else {\n      b = choice([20, 25, 30, 35])\n      c = choice([45, 50, 55])\n      sortie.texte = context.isHtml ? `$${b}\\\\text{ min }+${c} \\\\text{ min }=\\\\ldots \\\\text{ h } \\\\ldots \\\\text{ min }$` : `\\\\Temps{;;;;${b};}+ \\\\Temps{;;;;${c};}`\n      sortie.reponse = b + c - 60\n    }\n    if (b > c) {\n      sortie.texteCorr = `De $${b} \\\\text{ min }$ pour aller à $1$ h, il faut $${60 - b}$ min, et il reste $${b - 60 + c}$ min à ajouter.<br>\n        On obtient  $${miseEnEvidence(1)}$ h et $${miseEnEvidence(sortie.reponse)}$ min.`\n    } else {\n      sortie.texteCorr = `De $${c} \\\\text{ min }$ pour aller à $1$ h, il faut $${60 - c}$ min, et il reste $${b - 60 + c}$ min à ajouter.<br>\n        On obtient  $${miseEnEvidence(1)}$ h et $${miseEnEvidence(sortie.reponse)}$ min.`\n    }\n\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = '\\\\ldots{} h \\\\ldots{} min'\n    return sortie\n  }\n\n  /**\n   * Méthode pour un calcul de partage\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  partages () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const choix = choice(['a', 'b', 'c', 'd'])\n    let a\n    if (choix === 'a') {\n      a = randint(9, 15) * 3\n      sortie.reponse = Math.round(a / 3)\n      sortie.texte = `Pour partager $${a}$ oeufs, combien de boites de  $3$ oeufs dois-je utiliser ? `\n      sortie.texteCorr = `Le nombre de boites est donné par $${a}\\\\div 3=${miseEnEvidence(a / 3)}$.`\n    }\n    if (choix === 'b') {\n      sortie.reponse = randint(8, 12)\n      a = sortie.reponse * 4\n      sortie.texte = `Pour partager $${a}$ oeufs, combien de boites de  $4$ oeufs dois-je utiliser ? `\n      sortie.texteCorr = `Le nombre de boites est donné par $${a}\\\\div 4=${miseEnEvidence(a / 4)}$.`\n    }\n    if (choix === 'c') {\n      sortie.reponse = randint(6, 10)\n      a = sortie.reponse * 5\n      sortie.texte = `Pour partager $${a}$ oeufs, combien de boites de  $5$ oeufs dois-je utiliser ? `\n      sortie.texteCorr = `Le nombre de boites est donné par $${a}\\\\div 5=${miseEnEvidence(sortie.reponse)}$.`\n    }\n    if (choix === 'd') {\n      sortie.reponse = randint(4, 8)\n      a = sortie.reponse * 6\n      sortie.texte = `Pour partager $${a}$ oeufs, combien de boites de  $6$ oeufs dois-je utiliser ? `\n      sortie.texteCorr = `Le nombre de boites est donné par $${a}\\\\div 6=${miseEnEvidence(sortie.reponse)}$.`\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = 'Je dois utiliser \\\\\\\\ \\\\ldots{} boites.'\n    return sortie\n  }\n\n  /**\n   * Méthode pour un ordre de grandeur\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  ordreDeGrandeur () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      reponseUnite: '',\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const taille1 = [['falaise', 15, 25, 'm'], ['girafe', 40, 50, 'dm'], ['échelle', 200, 300, 'cm'], ['bouteille', 28, 35, 'cm'], ['télévision', 50, 60, 'cm']]\n\n    const a = randint(0, 4)\n    const b = randint(taille1[a][1], taille1[a][2])\n    const propositions = shuffle([\n      context.isHtml ? `$${b}$ m` : `\\\\Lg[m]{${b}}`,\n      context.isHtml ? `$${b}$ dm` : `\\\\Lg[dm]{${b}}`,\n      context.isHtml ? `$${b}$ cm` : `\\\\Lg[cm]{${b}}`,\n      context.isHtml ? `$${b}$ mm` : `\\\\Lg[mm]{${b}}`\n    ])\n    sortie.reponse = b\n    sortie.reponseUnite = taille1[a][3]\n\n    sortie.texte = `Choisis parmi les propositions suivantes la hauteur d'une ${taille1[a][0]}.<br>`\n    sortie.texte += `${propositions[0]} ${sp(4)} ${propositions[1]} ${sp(4)} ${propositions[2]}${sp(4)} ${propositions[3]}`\n    sortie.texteCorr = `La taille d'une ${taille1[a][0]} est $${miseEnEvidence(sortie.reponse)}$ ${sortie.reponseUnite}.`\n    sortie.canEnonce = `Entoure parmi les propositions suivantes la hauteur d'une ${taille1[a][0]}`\n    sortie.canReponseACompleter = `${propositions[0]} \\\\hfill ${propositions[1]} \\\\hfill ${propositions[2]} \\\\hfill ${propositions[3]}`\n    return sortie\n  }\n\n  /**\n   * Méthode pour écrire un nombre en chiffres\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  ecrireUnNombreEnChiffres () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let chiffre = [['un', 1], ['deux', 2], ['trois', 3], ['cinq', 5], ['quatre', 4], ['six', 6], ['sept', 7], ['huit', 8], ['neuf', 9]]\n    let chiffre2 = [['vingt', 20], ['trente', 30], ['quarante', 40], ['cinquante', 50], ['soixante', 60]]\n    let a = randint(0, 8)\n    let b = randint(0, 4)\n    let c = randint(0, 8)\n    const d = randint(0, 4)\n    if (choice([true, false])) {\n      chiffre = [['un', 1], ['deux', 2], ['trois', 3], ['cinq', 5], ['quatre', 4], ['six', 6], ['sept', 7], ['huit', 8], ['neuf', 9]]\n      chiffre2 = [['vingt', 20], ['trente', 30], ['quarante', 40], ['cinquante', 50], ['soixante', 60]]\n      a = randint(0, 8)\n      b = randint(0, 4)\n      c = randint(0, 8)\n      if (a === 0) {\n        sortie.texte = `Écris en chiffres le nombre ${chiffre2[b][0]}-et-${chiffre[a][0]}-mille-${chiffre[c][0]}.`\n        sortie.reponse = (chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre[c][1]\n        sortie.texteCorr = `${chiffre2[b][0]}-et-${chiffre[a][0]}-mille-${chiffre[c][0]} = $${texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000)}$ + ${chiffre[c][1]} = $${miseEnEvidence(texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre[c][1]))}$ `\n      } else {\n        sortie.texte = `Écris en chiffres le nombre ${chiffre2[b][0]}-${chiffre[a][0]}-mille-${chiffre[c][0]}.`\n        sortie.reponse = (chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre[c][1]\n        sortie.texteCorr = `${chiffre2[b][0]}-${chiffre[a][0]}-mille-${chiffre[c][0]} = $${texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000)}$ + ${chiffre[c][1]} = $${miseEnEvidence(texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre[c][1]))}$ `\n      }\n    } else {\n      if (a === 0) {\n        sortie.texte = `Écris en chiffres le nombre : <br> ${chiffre2[b][0]}-et-${chiffre[a][0]}-mille-${chiffre2[d][0]} `\n        sortie.reponse = (chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre2[d][1]\n        sortie.texteCorr = `$\\\\text{${chiffre2[b][0]}-et-${chiffre[a][0]}-mille-${chiffre2[d][0]}} = ${texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000)} + ${chiffre2[d][1]} =${miseEnEvidence(texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre2[d][1]))}$ `\n      } else {\n        sortie.texte = `Écris en chiffres le nombre : <br> ${chiffre2[b][0]}-${chiffre[a][0]}-mille-${chiffre2[d][0]} `\n        sortie.reponse = (chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre2[d][1]\n        sortie.texteCorr = `$\\\\text{${chiffre2[b][0]}-${chiffre[a][0]}-mille-${chiffre2[d][0]}} = ${texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000)} + ${chiffre2[d][1]} =${miseEnEvidence(texNombre((chiffre2[b][1] + chiffre[a][1]) * 1000 + chiffre2[d][1]))}$ `\n      }\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour de plus de moins\n   * @param {string} type pour le type de problème\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n\n  dePlusDeMoins (type) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: '',\n      champTexteApres: {},\n      texteApres: ''\n    }\n    const prenom1 = prenomF()\n    const prenom2 = prenomM()\n    let b, a\n    switch (type) {\n      case 'billes':\n        b = randint(3, 5)\n        sortie.reponse = randint(4, 9)\n        a = sortie.reponse + b\n        sortie.texte = `${prenom1} a $${a}$ billes. <br>\n        Elle en a $${b}$ de plus que ${prenom2}.${context.isHtml ? '' : '\\\\\\\\'} Combien de billes a ${prenom2} ? `\n        sortie.texteCorr = `Puisque ${prenom1} en  a $${b}$ de plus, sa sœur en a $${b}$ de moins, soit  : $${a} - ${b}=${miseEnEvidence(a - b)}$. `\n        sortie.champTexteApres = {}\n        sortie.canEnonce = sortie.texte\n        sortie.canReponseACompleter = `${prenom2} a \\\\ldots{} billes.`\n        break\n      case 'ages':\n        b = randint(6, 15)\n        a = randint(2, 5)\n        sortie.reponse = b - a\n        sortie.texte = `${prenom1} a $${b}$ ans. <br>\n        ${prenom2} a ${a} ans de moins que ${prenom1}. ${prenom2} a `\n        sortie.texteCorr = `Puisque ${prenom2} a ${a} ans de moins que ${prenom1}, son âge est  : $${b}-${a}=${miseEnEvidence(b - a)}$ ${texteEnCouleur('ans')}. `\n        sortie.champTexteApres = { texteApres: sp(5) + 'ans.' }\n        sortie.texteApres = '$\\\\ldots$ ans'\n        sortie.canReponseACompleter = `${prenom2} a \\\\ldots{} ans.`\n        sortie.canEnonce = `${prenom1} a $${b}$ ans. <br>\n        ${prenom2} a ${a} ans de moins que ${prenom1}.`\n        break\n    }\n    return sortie\n  }\n\n  /**\n   * Méthode pour demander l'écriture d'un produit d'un entier par un nombre entier de dixièmes/centièmes\n  * @returns {object}\n  * @author Sébastien LOZANO\n  */\n  ecritureDecimaleProduitEntierParDixiemesOuCentiemes () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let a, b, c\n    if (choice([true, false])) {\n      a = randint(2, 5)\n      b = randint(6, 9)\n      c = new Decimal('0.1')\n      sortie.reponse = new Decimal(a).mul(b).mul(c)\n      sortie.texte = `Donne l'écriture décimale de  $${a}\\\\times ${b}$ dixièmes.`\n      sortie.texteCorr = `$1$ dixième $=0,1$, d'où $${a}\\\\times ${b}$ dixièmes $=${a}\\\\times ${b}\\\\times 0,1=${miseEnEvidence(texNombre(sortie.reponse, 1))}$.`\n    } else {\n      a = randint(2, 5)\n      b = randint(6, 9)\n      c = new Decimal('0.01')\n      sortie.reponse = new Decimal(a).mul(b).mul(c)\n      sortie.texte = `Donne l'écriture décimale de  $${a}\\\\times ${b}$ centièmes.`\n      sortie.texteCorr = `$1$ centième $=0,01$, d'où $${a}\\\\times ${b}$ centièmes $=${a}\\\\times ${b}\\\\times 0,01=${miseEnEvidence(texNombre(sortie.reponse, 2))}$.`\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour la lecture d'abscisse entière\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  lectureAbscisseEntiereOrigineZero () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const facteur = randint(2, 9)\n    const table = randint(2, 9)\n    const a = facteur * table\n    let unite = 1\n    switch (table) {\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n        unite = 0.5\n        break\n      case 6:\n      case 7:\n      case 8:\n      case 9:\n        unite = 0.25\n        break\n    }\n    const d = droiteGraduee({\n      Unite: unite,\n      Min: 0,\n      Max: 11 * table,\n      x: 0,\n      y: 0,\n      thickDistance: table,\n      thickOffset: 0,\n      axeStyle: '->',\n      pointListe: [[a, '?']],\n      labelListe: [[0, '0'], [table, `${table}`], [10 * table, `${10 * table}`]],\n      pointCouleur: 'blue',\n      pointStyle: 'x',\n      labelsPrincipaux: false\n    })\n    sortie.reponse = a\n    sortie.canReponseACompleter = `\\\\Reperage[DemiDroite,Pasx=1,Unitex=0.4,ValeurUnitex=${table},AffichageAbs=2]{${facteur}/3*A,10/B}`\n    sortie.texte = context.isHtml ? 'Quel est le nombre écrit sous le point d\\'interrogation ?<br>\\n' + mathalea2d(Object.assign({ scale: 0.6, style: 'margin: auto' }, fixeBordures(d)), d) + '\\n' : `Complète \\\\\\\\ ${sortie.canReponseACompleter}`\n    // texte += context.isHtml ? '' : '\\\\\\\\\\\\smallskip'\n    sortie.texteCorr = `Le nombre écrit sous le point d'interrogation est : $${miseEnEvidence(a)}$.`\n    sortie.canEnonce = 'Complète.'\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer un terme décimal inconnu\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  trouverUnTermeDecimalInconnu () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = new Decimal(randint(1, 9)).div(10)\n    const b = new Decimal(randint(1, 9)).add(a)\n    const res = choice([10, 20])\n    sortie.reponse = new Decimal(res).sub(b)\n    sortie.texte = `Complète : ${sp(3)}\n    $${texNombre(b, 1)}+\\\\ldots =${res}$ `\n    sortie.texteCorr = `Le nombre cherché est donné par : $${res}-${texNombre(b, 1)}=${miseEnEvidence(texNombre(sortie.reponse, 2))}$.`\n    // sortie.reponse = a\n    sortie.canEnonce = 'Complète.'\n    sortie.canReponseACompleter = `$${texNombre(b, 1)}+\\\\ldots =${res}$`\n    return sortie\n  }\n\n  /**\n   * Méthode pour décomposer un nombre à 3 chiffres en ... dizaines et ... unités\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  decomposerUnNombreATroisChiffresEnDizainesUnites () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const nombreDeDizaines = randint(10, 99)\n    const nombreDUnites = randint(2, 9)\n    const nombre = 10 * nombreDeDizaines + nombreDUnites\n    sortie.reponse = [`${nombreDeDizaines};${nombreDUnites}`]\n    sortie.texte = `Complète : ${sp(3)}\n    $${texNombre(nombre, 0)}= \\\\ldots$ dizaines  $\\\\ldots$  unités`\n    sortie.texteCorr = `$${texNombre(nombre, 0)} = ${miseEnEvidence(texNombre(nombreDeDizaines, 0))}$ dizaines $${miseEnEvidence(texNombre(nombreDUnites, 0))}$ unités`\n    sortie.canEnonce = 'Complète.'\n    sortie.canReponseACompleter = `$${texNombre(nombre, 0)}= \\\\ldots$  dizaines $\\\\ldots$  unités  `\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer une fraction à partir d'une figure\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  determinerUneFractionAPartirDUneFigure () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const b = randint(2, 4)\n    const a = randint(b + 1, 6)\n    const c = randint(1, a - 1)\n    const d = randint(1, b)\n    const e = randint(0, c - 1)\n    const f = randint(d, b)\n    const A = polygone([point(0, 0), point(c, 0), point(c, d), point(e, d), point(e, f), point(0, f)], 'black')\n    A.couleurDeRemplissage = colorToLatexOrHTML('lightgray')\n    const C = grille(0, 0, a, b, 'black', 1, 1, false)\n    // const D = point(1 + a, 4 - b)\n    sortie.texte = `Quelle fraction de la surface totale représente la surface grisée ?\n    <br>`\n    sortie.texte += mathalea2d({ xmin: -0.5, ymin: -0.1, xmax: 6.1, ymax: b + 0.5, scale: 0.7, style: 'margin: auto' }, A, C)\n    sortie.texteCorr = `Il y a $${c * d + e * f - e * d}$ ${c * d + e * f - e * d > 1 ? 'carrés' : 'carré'} gris sur un total de $${a * b}$ carrés, la surface grisée représente donc $\\\\dfrac{${miseEnEvidence(c * d + e * f - e * d)}}{${miseEnEvidence(a * b)}}$ de la surface totale.`\n    sortie.reponse = new FractionEtendue(c * d + e * f - e * d, a * b)\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer un quotient\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  determinerUnQuotient () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = randint(5, 9)\n    const b = randint(4, 9)\n    const c = a * b\n    sortie.reponse = b\n    sortie.texte = `$${c}\\\\div ${a}$`\n    sortie.texteCorr = `$${c}\\\\div ${a}=${miseEnEvidence(sortie.reponse)}$`\n    sortie.canEnonce = 'Complète.'\n    sortie.canReponseACompleter = `$${c}\\\\div ${a} =\\\\ldots$`\n    return sortie\n  }\n\n  /**\n   * Méthode pour un calcul de proportionnalité par addition\n   * @param {string} type type d'énoncé\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  proportionnaliteParAddition (type) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: '',\n      uniteInteractif: ''\n    }\n    let a, b, k\n    switch (type) {\n      case 'pieces':\n        a = choice([4, 6, 8, 10, 12, 14])\n        b = a + a / 2\n        sortie.reponse = arrondi(2 * b, 0)\n        sortie.texte = `Si une pile de $${a}$ pièces de monnaie a une hauteur de $${2 * a}$ mm, alors une pile de $${texNombre(b, 0)}$ pièces a une hauteur de `\n        sortie.texteCorr = `Une pile de $${a}$ pièces de monnaie a une hauteur de $2\\\\times ${a}=${2 * a}$ mm.<br>\n        Donc une pile de  $${texNombre(b, 0)}$ pièces aura une hauteur de $2\\\\times ${b}=${miseEnEvidence(2 * b)}$ mm.`\n        sortie.canEnonce = `Si une pile de $${a}$ pièces de monnaie a une hauteur de $\\\\Lg[mm]{${2 * a}}$, `\n        sortie.canReponseACompleter = `alors une pile de $${texNombre(b, 0)}$ pièces a une hauteur de $\\\\ldots$ \\\\Lg[mm]{}.`\n        sortie.uniteInteractif = 'mm'\n        break\n      case 'cahiers':\n        a = randint(2, 6)\n        k = randint(2, 4)\n        b = k * a\n        sortie.reponse = k * b\n        sortie.texte = `Si $${a}$ cahiers coûtent $${b}$ €, alors $${b}$ cahiers coûtent `\n        sortie.texteCorr = `$${a}$ cahiers coûtent $${b}$ €.<br> $${k}\\\\times${a}=${k * a}$ cahiers coûtent $${k}\\\\times${b}=${miseEnEvidence(k * b)}$ €.`\n        sortie.canEnonce = `Si $${a}$ cahiers coûtent $\\\\Prix[0]{${b}}$,`\n        sortie.canReponseACompleter = `alors $${b}$ cahiers coûtent $\\\\ldots$ \\\\Prix[0]{}.`\n        sortie.uniteInteractif = '€'\n        break\n    }\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer une longueur en unité de longueur donnée\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  determinerUnNombreDUnitesDeLongueur () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let a, b, A, B, C, D, E, G, H, s1, s2, s3, s4, s5, xmin, ymin, xmax, ymax, objets\n    const choix = choice(['a', 'b', 'c'])//, 'b', 'd', 'e'\n    sortie.texte = 'Quelle est la longueur de la ligne en pointillé ? <br>'\n    if (choix === 'a') {\n      a = grille(-2, 0, 7, 4, 'gray', 1, 1)\n      b = choice([3, 4, 5, 6])\n      A = point(0, 2, 'A', 'below')\n      B = point(1, 2, 'B', 'below')\n      C = point(1, 1, 'C', 'above')\n      G = point(0, 4, 'C', 'above')\n      H = point(b, 4, 'D', 'above')\n      s1 = segmentAvecExtremites(G, H)\n      s1.epaisseur = 2\n      s2 = segment(A, B)\n      s2.pointilles = 2\n      s2.epaisseur = 2\n\n      s3 = segment(B, C)\n      s3.pointilles = 2\n      s3.epaisseur = 2\n      xmin = -1\n      ymin = -0.2\n      xmax = 7\n      ymax = 5\n      objets = []\n      objets.push(\n        texteParPosition('1 ul', milieu(G, H).x, milieu(G, H).y + 0.7, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n        a, s1, s2, s3)\n      sortie.reponse = new FractionEtendue(2, b)\n      sortie.texte += mathalea2d({ xmin, ymin, xmax, ymax, pixelsParCm: 20, mainlevee: false, amplitude: 0.5, scale: 0.5, style: 'margin: auto' }, objets) + '<br>'\n      sortie.texteCorr = `Une unité correspond à $${b}$ carreaux, la ligne en pointillé mesure $2$ carreaux, soit $\\\\dfrac{${miseEnEvidence(2)}}{${miseEnEvidence(b)}}$ ul.`\n    }\n    if (choix === 'b') {\n      a = grille(-2, 0, 7, 4, 'gray', 1, 1)\n      b = choice([2, 4, 5, 6])\n      A = point(0, 2, 'A', 'below')\n      B = point(1, 2, 'B', 'below')\n      C = point(1, 1, 'C', 'above')\n      D = point(2, 1, 'C', 'above')\n      G = point(0, 4, 'C', 'above')\n      H = point(b, 4, 'D', 'above')\n      s1 = segmentAvecExtremites(G, H)\n      s1.epaisseur = 2\n      s2 = segment(A, B)\n      s2.pointilles = 2\n      s2.epaisseur = 2\n\n      s3 = segment(B, C)\n      s3.pointilles = 2\n      s3.epaisseur = 2\n      s4 = segment(D, C)\n      s4.pointilles = 2\n      s4.epaisseur = 2\n      xmin = -1\n      ymin = -0.2\n      xmax = 7\n      ymax = 5\n      objets = []\n      objets.push(\n        texteParPosition('1 ul', milieu(G, H).x, milieu(G, H).y + 0.7, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n        a, s1, s2, s3, s4)\n      sortie.reponse = new FractionEtendue(3, b)\n      sortie.texte += mathalea2d({ xmin, ymin, xmax, ymax, pixelsParCm: 20, mainlevee: false, amplitude: 0.5, scale: 0.5, style: 'margin: auto' }, objets) + '<br>'\n      sortie.texteCorr = `Une unité correspond à $${b}$ carreaux, la ligne en pointillé mesure $3$ carreaux, soit $\\\\dfrac{${miseEnEvidence(3)}}{${miseEnEvidence(b)}}$ ul `\n    }\n    if (choix === 'c') {\n      a = grille(-2, 0, 7, 4, 'gray', 1, 1)\n      b = choice([3, 5, 6])\n      A = point(0, 2, 'A', 'below')\n      B = point(1, 2, 'B', 'below')\n      C = point(1, 1, 'C', 'above')\n      D = point(2, 1, 'C', 'above')\n      E = point(2, 2, 'C', 'above')\n      G = point(0, 4, 'C', 'above')\n      H = point(b, 4, 'D', 'above')\n      s1 = segmentAvecExtremites(G, H)\n      s1.epaisseur = 2\n      s2 = segment(A, B)\n      s2.pointilles = 2\n      s2.epaisseur = 2\n\n      s3 = segment(B, C)\n      s3.pointilles = 2\n      s3.epaisseur = 2\n      s4 = segment(D, C)\n      s4.pointilles = 2\n      s4.epaisseur = 2\n      s5 = segment(D, E)\n      s5.pointilles = 2\n      s5.epaisseur = 2\n      xmin = -1\n      ymin = -0.2\n      xmax = 7\n      ymax = 5\n      objets = []\n      objets.push(\n        texteParPosition('1 ul', milieu(G, H).x, milieu(G, H).y + 0.7, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n        a, s1, s2, s3, s4, s5)\n      sortie.reponse = new FractionEtendue(4, b)\n      sortie.texte += mathalea2d({ xmin, ymin, xmax, ymax, pixelsParCm: 20, mainlevee: false, amplitude: 0.5, scale: 0.5, style: 'margin: auto' }, objets) + '<br>'\n      sortie.texteCorr = `Une unité correspond à $${b}$ carreaux, la ligne en pointillé mesure $4$ carreaux, soit $\\\\dfrac{${miseEnEvidence(4)}}{${miseEnEvidence(b)}}$ ul `\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = '$\\\\ldots$ ul'\n    return sortie\n  }\n\n  /**\n   * Méthode pour multiplier par 5\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  multiplierParCinq () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = randint(11, 99, [20, 30, 40, 50, 60, 70, 80, 90])\n    const b = 5 // randint(2, 7) * 100\n\n    sortie.reponse = a * b\n    sortie.texte = ` $${a}\\\\times ${b}$`\n    sortie.texteCorr = `$${a}\\\\times ${b}=${a}\\\\times 10 \\\\div 2=${a * 10}\\\\div 2=${miseEnEvidence(texNombre(sortie.reponse))}$`\n    sortie.canEnonce = 'Complète.'\n    sortie.canReponseACompleter = `$${a}\\\\times ${b} =\\\\ldots$`\n    return sortie\n  }\n\n  /**\n   * Méthode pour choisir une vitesse commune\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  vitesseCommune () {\n    const sortie = {\n      diviseurDeLHeure: 0,\n      vitesse: 0,\n      nombreDeMinutes: 0\n    }\n    sortie.diviseurDeLHeure = choice([2, 4]) // diviseur de l'heure\n    if (sortie.diviseurDeLHeure === 4) {\n      sortie.vitesse = choice([40, 80, 100])\n      sortie.nombreDeMinutes = 15\n    } else {\n      sortie.vitesse = choice([30, 60, 90, 120])\n      sortie.nombreDeMinutes = 30\n    }\n    return sortie\n  }\n\n  /**\n   * Méthode pour proportionnalité et vitesse\n   * @param {string} type premiere ou seconde question\n   * @param {object} vitesseCommune éléments communs à deux questions liées\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  proportionnaliteEtVitesse (type, vitesseCommune) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    switch (type) {\n      case 'premiere':\n        sortie.reponse = vitesseCommune.vitesse / vitesseCommune.diviseurDeLHeure\n        sortie.texte = `Une voiture roule à $${vitesseCommune.vitesse}$ km/h à vitesse constante. <br>Combien de kilomètres parcourt-elle en $${vitesseCommune.nombreDeMinutes}$ min à cette vitesse ?`\n        sortie.texteCorr = `En $1$ h, la voiture parcourt $${vitesseCommune.vitesse}$ km.<br>\n        En $${vitesseCommune.nombreDeMinutes}$ minutes, elle parcourt $${vitesseCommune.diviseurDeLHeure}$ fois moins de km qu'en $1$ heure, soit $\\\\dfrac{${vitesseCommune.vitesse}}{${vitesseCommune.diviseurDeLHeure}}=\n        ${miseEnEvidence(texNombre(vitesseCommune.vitesse / vitesseCommune.diviseurDeLHeure, 2))}$ km.`\n        sortie.canReponseACompleter = `Elle parcourt $\\\\ldots$ \\\\Lg[km]{} en $${vitesseCommune.nombreDeMinutes}$ min à cette vitesse.`\n        break\n      case 'seconde':{\n        const d = randint(1, 3)\n        sortie.reponse = d * vitesseCommune.vitesse + (vitesseCommune.nombreDeMinutes / 60) * vitesseCommune.vitesse\n        sortie.texte = `Une voiture roule à  $${vitesseCommune.vitesse}$ km/h à vitesse constante.<br> Combien de kilomètres parcourt-elle en $${d}$ h et $${vitesseCommune.nombreDeMinutes}$ min à cette vitesse ?`\n        sortie.texteCorr = `En $${d}$ h, elle parcourt $${d * vitesseCommune.vitesse}$ km.<br>\n        En $${vitesseCommune.nombreDeMinutes}$ min, elle parcourt $${texNombre((vitesseCommune.nombreDeMinutes / 60) * vitesseCommune.vitesse, 2)}$ km.<br>\n        Ainsi, en en $${d}$ h et $${vitesseCommune.nombreDeMinutes}$ min, elle parcourt donc $${miseEnEvidence(texNombre(sortie.reponse, 0))}$ km.`\n        sortie.canReponseACompleter = `Elle parcourt $\\\\ldots$ \\\\Lg[km]{} en $${d}$ h et $${vitesseCommune.nombreDeMinutes}$ min à cette vitesse.`\n      }\n        break\n    }\n    sortie.canEnonce = `Une voiture roule à la vitesse constante de $${vitesseCommune.vitesse}$ \\\\Vitesse{}.`\n    return sortie\n  }\n\n  /**\n   * Méthode pour travailler la question clef de la division\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  dansNCombienDeFoisP () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = randint(3, 9)\n    const b = randint(3, 9)\n    const c = a * b\n\n    sortie.reponse = b\n    sortie.texte = `Dans $${c}$ combien de fois $${a}$ ?`\n    sortie.texteCorr = `Dans $${c}$, il y a $${miseEnEvidence(b)}$ fois $${a}$ car $${b}\\\\times ${a}=${c}$.`\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour décomposer un nombre à 3 chiffres en ... dizaines et ... unités\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  determinerUnNombreDeDizainesDansUnEntierATroisChiffres () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const nombreDeDizaines = randint(1, 9)\n    const nombreDeCentaines = randint(1, 9)\n    const nombre = 100 * nombreDeCentaines + 10 * nombreDeDizaines\n    const accordDizaine = nombreDeDizaines === 1 ? 'dizaine' : 'dizaines'\n    const accordCentaine = nombreDeCentaines === 1 ? 'centaine' : 'centaines'\n    sortie.reponse = nombreDeDizaines\n    sortie.texte = `Complète : ${sp(3)}\n    $${texNombre(nombreDeCentaines, 0)}$ ${accordCentaine} et  $\\\\ldots$  ${accordDizaine} font  $${nombre}$.`\n    sortie.texteCorr = `$${texNombre(nombre, 0)} = ${texNombre(nombreDeCentaines, 0)}$ centaines et $${miseEnEvidence(texNombre(nombreDeDizaines, 0))}$ dizaines`\n    sortie.canEnonce = 'Complète.'\n    sortie.canReponseACompleter = `$${texNombre(nombreDeCentaines, 0)}$ ${accordCentaine} et  $\\\\ldots$  ${accordDizaine} font  $${nombre}$.`\n    return sortie\n  }\n\n  /**\n   * Méthode pour tracer une figure d'aire donnée en fonction d'une unité d'aire\n   * @param {string} niveau Pour pouvoir être utilisé en 6e et en cm2\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  tracerUneFigureAireDonneeEnFonctionUniteAire (niveau) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let f, prenom1, a, A, B, C\n    let nombreDUnitesDAire\n    const choix = choice([true, false])\n    switch (niveau) {\n      case 'cm2':\n        f = [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [8, 1]]\n        a = randint(0, 7)\n        // b = randint(2, 4)\n        nombreDUnitesDAire = f[a][0]\n        break\n      case '6e':\n        if (choix) {\n          f = [[3, 5], [6, 5], [7, 5], [8, 5], [3, 2], [5, 2], [9, 5], [7, 2]]\n          a = randint(0, 7)\n          // b = randint(2, 4)\n        } else {\n          f = [[5, 4], [7, 4], [3, 2], [5, 2], [7, 2], [3, 4], [9, 4]]\n          a = randint(0, 6)\n          // b = randint(2, 4)\n        }\n        nombreDUnitesDAire = `$\\\\dfrac{${f[a][0]}}{${f[a][1]}}$`\n        break\n    }\n    if (choix) {\n      prenom1 = prenomF()\n      A = polygone([point(1, 5), point(11, 5), point(11, 4), point(1, 4)], 'black')\n      A.couleurDeRemplissage = colorToLatexOrHTML('lightgray')\n      B = texteParPosition('1 uA', 6, 4.5, 'milieu', 'black', 1, 'middle', false)\n      C = grille(0, 0, 12, 5, 'black', 1, 1, false)\n      // D = point(1 + a, 4 - b)\n\n      sortie.texte = `${prenom1} veut construire une figure d'aire ${nombreDUnitesDAire} ${f[a][0] / f[a][1] >= 2 ? 'unités' : 'unité'} d'aire (uA).<br>\n      Combien de petits carreaux doit-elle contenir ?<br>`\n\n      sortie.texte += mathalea2d({ xmin: -1, ymin: -0.1, xmax: 12.1, ymax: 5.5, scale: 1, style: 'margin: auto' }, C, A, B)\n      sortie.texteCorr = '$1$ uA est représentée par $10$ petits carreaux. <br>'\n      sortie.texteCorr += f[a][1] === 1 ? '' : `$\\\\dfrac{1}{${f[a][1]}}$ d'unité d'aire est donc rerésentée par $${texNombre(10 / f[a][1], 0)}$ petits carreaux. <br>`\n      sortie.texteCorr += `Ainsi, une figure de ${nombreDUnitesDAire} ${f[a][0] / f[a][1] >= 2 ? 'unités' : 'unité'} d'aire se représente par une figure de $${miseEnEvidence(texNombre(10 / f[a][1] * f[a][0], 0))}$ petits carreaux.`\n      sortie.reponse = 10 / f[a][1] * f[a][0]\n    } else {\n      prenom1 = prenomF()\n      A = polygone([point(1, 5), point(3, 5), point(3, 3), point(1, 3)], 'black')\n      A.couleurDeRemplissage = colorToLatexOrHTML('lightgray')\n      B = texteParPosition('1 uA', 2, 5.4, 'milieu', 'black', 1, 'middle', false)\n      C = grille(0, 0, 12, 5, 'black', 1, 1, false)\n\n      sortie.texte = `${prenom1} veut construire une figure d'aire ${nombreDUnitesDAire} ${f[a][0] / f[a][1] >= 2 ? 'unités' : 'unité'} d'aire (uA).<br>\n    \n      Combien de petits carreaux doit-elle contenir ?<br>\n\n    `\n      sortie.texte += mathalea2d({ xmin: -1, ymin: -0.1, xmax: 12.1, ymax: 6, scale: 1, style: 'margin: auto' }, A, C, B)\n      if (f[a][1] === 4) {\n        sortie.texteCorr = '$1$ uA est représentée par  $4$ petits carreaux. <br>'\n        sortie.texteCorr += f[a][1] === 1 ? '' : `$\\\\dfrac{1}{${f[a][1]}}$ d'unité d'aire est donc rerésenté par un petit carreau.<br>`\n        sortie.texteCorr += `Ainsi, une figure de ${nombreDUnitesDAire} ${f[a][0] / f[a][1] >= 2 ? 'unités' : 'unité'} d'aire se représente par une figure de  `\n        sortie.texteCorr += f[a][1] === 1 ? `$${miseEnEvidence(4 * f[a][0])}$` : `$${miseEnEvidence(f[a][0])}$`\n        sortie.texteCorr += ' petits carreaux.'\n        sortie.reponse = f[a][1] === 1 ? 4 * f[a][0] : f[a][0]\n      } else {\n        sortie.texteCorr = '$1$ uA est représentée par $4$ petits carreaux. <br>'\n        sortie.texteCorr += f[a][1] === 1 ? '' : `$\\\\dfrac{1}{${f[a][1]}}$ d'unité d'aire est donc rerésenté par deux petits carreaux.<br>`\n        sortie.texteCorr += `Ainsi, une figure de ${nombreDUnitesDAire} ${f[a][0] / f[a][1] >= 2 ? 'unités' : 'unité'} d'aire se représente par une figure de `\n        sortie.texteCorr += f[a][1] === 1 ? `$${miseEnEvidence(4 * f[a][0])}$` : `$${miseEnEvidence(2 * f[a][0])}$`\n        sortie.texteCorr += ' petits carreaux.'\n        sortie.reponse = f[a][1] === 1 ? 4 * f[a][0] : 2 * f[a][0]\n      }\n    }\n    sortie.canEnonce = `${prenom1} veut construire une figure d'aire \\\\\\\\ ${nombreDUnitesDAire} ${f[a][0] / f[a][1] > 2 ? 'unités' : 'unité'} d'aire (uA).<br>` + mathalea2d({ xmin: -1, ymin: -0.1, xmax: 12.1, ymax: 6, scale: 0.3 }, A, C, B)\n    sortie.canReponseACompleter = 'La figure doit contenir $\\\\ldots$ petits carreaux.'\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer le nombre de dixièmes dans un décimal\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  nombreDeDixiemesDansUnDecimal () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: '',\n      nombre: ''\n    }\n    const unites = new Decimal(randint(1, 9))\n    const dixiemes = new Decimal(randint(1, 9)).div(10)\n    const centiemes = new Decimal(randint(1, 9)).div(100)\n    sortie.nombre = new Decimal(unites.add(dixiemes).add(centiemes))\n    sortie.reponse = new Decimal(unites.mul(10).add(dixiemes.mul(10)))\n    sortie.texte = `Combien de dixièmes y a-t-il en tout dans $${texNombre(sortie.nombre, 2)}$ ?`\n    sortie.texteCorr = `$${texNombre(sortie.nombre, 2)} = ${texNombre(unites, 0)}$ ${unites.toNumber() === 1 ? 'unité' : 'unités'} $${texNombre(dixiemes.mul(10), 0)}$ ${dixiemes.mul(10).toNumber() === 1 ? 'dixième' : 'dixièmes'} $${texNombre(centiemes.mul(100), 0)}$ ${centiemes.mul(100).toNumber() === 1 ? 'centième' : 'centièmes'}.<br>`\n    sortie.texteCorr += `Or $1$ unité = $10$ dixièmes donc $${texNombre(unites, 0)}$ ${unites.toNumber() === 1 ? 'unité' : 'unités'} $= ${texNombre(unites.mul(10), 0)}$ dixièmes.<br>`\n    sortie.texteCorr += `Finalement $${texNombre(sortie.nombre, 2)} = ${texNombre(unites.mul(10).add(dixiemes.mul(10)), 0)}$ dixièmes $${texNombre(centiemes.mul(100), 0)}$ ${centiemes.mul(100).toNumber() === 1 ? 'centième' : 'centièmes'}.<br>`\n    sortie.texteCorr += `Il y a donc $${miseEnEvidence(texNombre(sortie.reponse))}$ dixièmes en tout dans $${texNombre(sortie.nombre, 2)}$.`\n    sortie.canEnonce = `Combien de dixièmes y a-t-il en tout \\\\\\\\ dans $${texNombre(sortie.nombre, 2)}$ ?`\n    sortie.canReponseACompleter = '\\\\dots{} dixièmes'\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer le prix d'un diviseur d'une quantité donnée\n   * @param {string} type pour le type d'énoncé\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  proportionnaliteEtDiviseur (type) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let a, prix, k\n    switch (type) {\n      case 'stylos':\n        a = randint(2, 6)\n        prix = new Decimal(2 + randint(1, 3) / 10).add(0.05)\n        k = randint(2, 4)\n        sortie.reponse = new Decimal(prix).mul(100 * k)\n        sortie.texte = `$${a}$ stylos identiques coûtent  $${texPrix(prix)}$ €. <br>\nCombien coûtent $${k * a}$ de ces mêmes stylos ?`\n        sortie.texteCorr = `$${a}$ stylos identiques coûtent  $${texPrix(prix)}$ €, donc $${k * a}$ de ces mêmes stylos coûtent  $${k}$ fois plus, soit $${k}\\\\times ${texPrix(prix)}=${texNombre(k * prix)}$ € $=${miseEnEvidence(texNombre(k * prix * 100))}$ centimes.`\n        break\n      case 'cahiers':\n        prix = choice([new Decimal('1.20'), new Decimal('1.80'), new Decimal('2.40')])\n        k = randint(3, 4)\n        sortie.reponse = new Decimal(prix).div(k).mul(100)\n        sortie.texte = `$${k * 2}$ cahiers coûtent  $${texPrix(prix)}$ €. <br>\nCombien coûtent $2$ cahiers ?`\n        sortie.texteCorr = `$${k * 2}$ cahiers coûtent  $${texPrix(prix)}$ €, donc $2$ de ces mêmes cahiers coûtent  $${k}$ fois moins, soit $ ${texPrix(prix)}\\\\div${k}=${texPrix(prix / k)}$ € $=${miseEnEvidence(texNombre(100 * prix / k, 0))}$ centimes.`\n        break\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = '$\\\\ldots$ centimes'\n    return sortie\n  }\n\n  /**\n   * Méthode pour trouver une dimension agrandie ou réduite\n   * @param {string} type pour le type d'énoncé\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  trouverUneDimensionAgrandieOuReduite (type) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let l, k, L, l2, A, B, C, D, E, F, G, H, xmin, ymin, xmax, ymax, pol, pol2, objets\n    switch (type) {\n      case 'agrandissement':\n        l = randint(2, 8)\n        k = randint(2, 4)\n        L = k * l\n        l2 = l + randint(1, 3)\n        A = point(0, 0)\n        B = point(4, 0)\n        C = point(4, 1.5)\n        D = point(0, 1.5)\n        E = point(5, 0)\n        F = point(7.5, 0)\n        G = point(7.5, 1)\n        H = point(5, 1)\n        xmin = -1.5\n        ymin = -0.5\n        xmax = 9.2\n        ymax = 2\n        pol = polygoneAvecNom(A, B, C, D)\n        pol2 = polygoneAvecNom(E, F, G, H)\n\n        // segment((i + 1) * 2, -0.1, (i + 1) * 2, 0.1)\n\n        objets = []\n        objets.push(pol[0]) //, pol[1]\n        objets.push(pol2[0])\n        objets.push(texteParPosition(`${stringNombre(l)} cm`, milieu(F, G).x + 0.7, milieu(F, G).y, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition(`${stringNombre(L)} cm`, milieu(E, F).x, milieu(E, F).y - 0.3, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition(`${stringNombre(l2)} cm`, milieu(A, D).x - 0.6, milieu(A, D).y, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition('A ', milieu(F, G).x - 1.2, milieu(F, G).y),\n          texteParPosition('B ', milieu(B, C).x - 2, milieu(B, C).y)\n        )\n        sortie.reponse = l2 * k\n        sortie.texte = `Le rectangle B est un agrandissement du rectangle A.${context.isHtml ? '' : '\\\\\\\\'} Quelle est la longueur du rectangle B ?<br>`\n        sortie.texte += mathalea2d({ xmin, ymin, xmax, ymax, pixelsParCm: 40, mainlevee: false, amplitude: 0.5, scale: 0.7, style: 'margin: auto' }, objets)\n        sortie.texteCorr = `La longueur du rectangle A est $${k}$ fois plus grande que sa largeur. On en déduit que la longueur du rectangle B est aussi $${k}$ fois plus grande que sa largeur.<br>\nElle est donc égale à $${l2}\\\\times ${k}=${miseEnEvidence(sortie.reponse)}$ cm.`\n        break\n      case 'reduction':\n        L = randint(3, 5) * 2 // Longueur grand rectngle\n        l = randint(2, 5) // Largeur grand rectngle\n        k = L - randint(1, 2)\n        // L = k * l\n        l2 = L / 2// long petit\n        A = point(0, 0)\n        B = point(2.5, 0)\n        C = point(2.5, 1)\n        D = point(0, 1)\n        E = point(3, 0)\n        F = point(7, 0)\n        G = point(7, 2)\n        H = point(3, 2)\n        xmin = -1\n        ymin = -0.5\n        xmax = 8.5\n        ymax = 2.5\n        pol = polygoneAvecNom(A, B, C, D)\n        pol2 = polygoneAvecNom(E, F, G, H)\n        objets = []\n        objets.push(pol[0]) //, pol[1]\n        objets.push(pol2[0])\n        objets.push(texteParPosition(`${stringNombre(l)} cm`, milieu(F, G).x + 0.7, milieu(F, G).y, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition(`${stringNombre(L)} cm`, milieu(E, F).x, milieu(E, F).y - 0.3, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition(`${stringNombre(l2)} cm`, milieu(A, B).x, milieu(A, B).y - 0.3, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition('A ', milieu(E, F).x, milieu(F, G).y, 'milieu', 'black', context.isHtml ? 1 : 0.7),\n          texteParPosition('B ', milieu(A, B).x, milieu(B, C).y, 'milieu', 'black', context.isHtml ? 1 : 0.7)\n        )\n        sortie.reponse = new Decimal(l).div(2)\n        sortie.texte = `Le rectangle B est une réduction du rectangle A.${context.isHtml ? '' : '\\\\\\\\'} Quelle est la largeur du rectangle B ?<br>`\n        sortie.texte += mathalea2d({ xmin, ymin, xmax, ymax, pixelsParCm: 40, mainlevee: false, amplitude: 0.5, scale: 0.7, style: 'margin: auto' }, objets)\n        sortie.texteCorr = `La longueur du rectangle A est $2$ fois plus grande que la longeur du rectangle B. On en déduit que la largeur  du rectangle B est aussi $2$ fois plus petite que la largeur du rectangle A.<br>\nElle est donc égale à $${l}\\\\div 2=${miseEnEvidence(texNombre(sortie.reponse, 1))}$ cm.\n                        `\n        break\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = '$\\\\ldots$ \\\\Lg[cm]{}'\n    return sortie\n  }\n\n  /**\n   * Méthode pour ajouter deux décimaux\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  ajouterDeuxDecimaux () {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    const a = new Decimal(randint(101, 199)).div(100)\n    const b = new Decimal(randint(4, 9)).div(10)\n\n    sortie.reponse = new Decimal(a).add(b)\n    sortie.texte = `$${texNombre(a, 2)}+ ${texNombre(b, 1)}$`\n    sortie.texteCorr = `$${texNombre(a, 2)}+ ${texNombre(b, 1)}=${miseEnEvidence(texNombre(sortie.reponse))}$`\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = ''\n    return sortie\n  }\n\n  /**\n   * Méthode pour déterminer un nombre de combinaisons différentes\n   * @param {string} type type entrée/plat, entrée/plat/dessert\n   * @returns {object}\n   * @author Sébastien LOZANO\n   */\n  nombreDeCombinaisons (type) {\n    const sortie = {\n      texte: '',\n      texteCorr: '',\n      reponse: 0,\n      canEnonce: '',\n      canReponseACompleter: ''\n    }\n    let a, b, c\n    switch (type) {\n      case 'entreePlatDessert':\n        a = randint(2, 3)\n        b = randint(2, 3)\n        c = randint(2, 3)\n        sortie.texte = `À la cantine, il y a toujours $${a}$ entrées différentes, $${b}$ plats différents et $${c}$ desserts différents.<br>\nCombien de menus (composés d'une entrée, d'un plat et d'un dessert) différents peut-on avoir dans cette cantine ?`\n        sortie.texteCorr = `On peut avoir : $${a}\\\\times ${b}\\\\times ${c} =${miseEnEvidence(a * b * c)}$ menus différents.`\n        sortie.reponse = a * b * c\n        break\n      case 'platDessert':\n        a = randint(2, 5)\n        b = randint(2, 5)\n        sortie.texte = `En prenant un plat au choix parmi $${a}$ plats et un dessert au choix parmi $${b}$ desserts.<br>\nCombien de repas différents peut-on réaliser ?  `\n        sortie.texteCorr = `On peut avoir : $${a}\\\\times ${b}=${miseEnEvidence(a * b)}$ repas différents.`\n        sortie.reponse = a * b\n        break\n    }\n    sortie.canEnonce = sortie.texte\n    sortie.canReponseACompleter = '$\\\\ldots$ repas'\n    return sortie\n  }\n}\n"],"names":["titre","ClasseCan2023","a","b","minFacteur0","maxFacteur0","minFacteur1","maxFacteur1","sortie","randint","miseEnEvidence","choice","k","d","n","plot","mathalea2d","fixeBordures","texNombre","pas","valeurOrigine","valeurUnitex","gradLaTeX","droiteGraduee","context","texteQ6","valeurCible","sp","m","c","choix","taille1","propositions","shuffle","chiffre","chiffre2","type","prenom1","prenomF","prenom2","prenomM","texteEnCouleur","Decimal","facteur","table","unite","res","nombreDeDizaines","nombreDUnites","nombre","e","f","A","polygone","point","colorToLatexOrHTML","C","grille","FractionEtendue","arrondi","B","D","E","G","H","s1","s2","s3","s4","s5","xmin","ymin","xmax","ymax","objets","segmentAvecExtremites","segment","texteParPosition","milieu","vitesseCommune","nombreDeCentaines","accordDizaine","accordCentaine","niveau","nombreDUnitesDAire","unites","dixiemes","centiemes","prix","texPrix","l","L","l2","F","pol","pol2","polygoneAvecNom","stringNombre"],"mappings":"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"}