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/6G22-5aSJt6ac.js.map
{"version":3,"file":"6G22-5aSJt6ac.js","sources":["../../src/exercices/6e/6G22.js"],"sourcesContent":["import { angleOriente, codageAngle } from '../../lib/2d/angles.js'\nimport { droite } from '../../lib/2d/droites.js'\nimport { point, pointIntersectionDD, pointSurSegment } from '../../lib/2d/points.js'\nimport { polygoneAvecNom, polyline } from '../../lib/2d/polygones.js'\nimport { segment } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { choice, combinaisonListes, enleveElement } from '../../lib/outils/arrayOutils'\nimport { miseEnEvidence } from '../../lib/outils/embellissements'\nimport { couleurTab } from '../../lib/format/style'\nimport { rangeMinMax } from '../../lib/outils/nombres.js'\nimport { lettreDepuisChiffre, numAlpha, sp } from '../../lib/outils/outilString.js'\nimport Exercice from '../Exercice.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { max, min } from 'mathjs'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { context } from '../../modules/context.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const titre = 'Name an angle'\nexport const interactifType = ['qcm', 'mathLive']\nexport const interactifReady = true\nexport const amcType = 'AMCHybride'\nexport const amcReady = true\n\nexport const dateDePublication = '13/04/2022'\n\n/**\n * Nommer un angle\n * Ref 6G22\n * @author Eric Elter\n * Publié le 13/04/2022\n */\nexport const uuid = 'e10d1'\nexport const ref = '6G22'\nexport default function NommerUnAngle () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.consigne = ''\n  this.nbQuestions = 2\n  this.sup = 2\n  this.sup2 = 1\n  this.sup3 = false\n  this.nouvelleVersion = function () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = []\n    this.interactifType = this.sup2 === 2 ? 'mathLive' : 'mth'\n    let propositionsDuQcm = []\n    for (let i = 0, texteAMC, troisBonnesReponses, listePt1, listePt3, resultatOK1, resultatOK2, resultat3, resultatPasOK1, resultatPasOK2, choixAngle, pt1, pt2, pt3, tailleAngle, aleaChoixCouleurRemplissage, couleurRemplissageAngle, couleurAngle, segmentsCorrection, resultat; i < this.nbQuestions; i++) {\n      const propositionsAMC = []\n      // let figureExo\n      // We prepare the figure...\n      const marquageAngle = this.sup3 ? combinaisonListes(['X', 'OO', '|||'], 3) : ['', '', '']\n\n      const ChoixHorizontal = choice([-1, 1])\n\n      const numB = randint(1, 26, [4, 5, 15, 23, 24, 25])\n      const numA = randint(1, 26, [4, 5, 15, 23, 24, 25, numB])\n      const numC = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA])\n      const numM = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA, numC])\n      const numN = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA, numC, numM])\n      const numI = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA, numC, numM, numN])\n\n      /* A décommenter pour débugguer (et commenter les 6 lignes du dessus)\n            const numA = 1\n            const numB = 2\n            const numC = 3\n            const numI = 9\n            const numM = 13\n            const numN = 14\n            */\n\n      const ordB = randint(0, 2)\n      const B = point(0, ordB, lettreDepuisChiffre(numB))\n\n      const absA = ChoixHorizontal * randint(7, 12)\n      const ordA = randint(4, 8)\n      const A = point(absA, ordA, lettreDepuisChiffre(numA))\n\n      const absC = ChoixHorizontal * randint(7, 12, [absA])\n      const ordC = -1 * randint(2, 5)\n      const C = point(absC, ordC, lettreDepuisChiffre(numC))\n      const fractionSegmentAB = this.sup === 1 ? randint(2, 8) : randint(4, 6)\n      const fractionSegmentBC = this.sup === 1 ? randint(2, 8, [fractionSegmentAB]) : randint(4, 6, [fractionSegmentAB])\n      const AB = segment(A, B).longueur\n      const BC = segment(B, C).longueur\n      const M = pointSurSegment(B, A, AB * fractionSegmentAB / 10, lettreDepuisChiffre(numM))\n      const N = pointSurSegment(B, C, BC * fractionSegmentBC / 10, lettreDepuisChiffre(numN), 'below')\n      const p1 = polygoneAvecNom(B, A, C)\n      const I = pointIntersectionDD(droite(A, N), droite(C, M), lettreDepuisChiffre(numI), 'left')\n      const listePoints = [numA, numB, numC, numM, numN, numI]\n      const objetsEnonce = []\n      const objetsCorrection = []\n      const sommetsDejaTrouves = []\n      const choixCouleurRemplissage = rangeMinMax(0, 7)\n      // AngleFill color = ['none'] // J-C correction: we will define these colors by testing this.sup3\n      // colorAngle = 'black'\n      let texte = ''\n      const O = point(0, 0) // Sert à construire les symboles pour les questions\n      const M1 = point(4, 0) // Sert à construire les symboles pour les questions\n      let texteCorr = ''\n      let positionIbis = ChoixHorizontal === -1 ? 'right' : 'left'\n      const Ibis = point(I.x, I.y, lettreDepuisChiffre(numI), positionIbis)\n\n      for (let jj = 0, marquageAngleConsigne; jj < this.sup; jj++) {\n        marquageAngleConsigne = []\n        const choixSommet = choice(listePoints, sommetsDejaTrouves)\n        if (!this.sup3) {\n          aleaChoixCouleurRemplissage = choice(choixCouleurRemplissage)\n          couleurRemplissageAngle = couleurTab(aleaChoixCouleurRemplissage)\n          couleurAngle = couleurRemplissageAngle[0]\n          enleveElement(choixCouleurRemplissage, aleaChoixCouleurRemplissage)\n        } else {\n          couleurRemplissageAngle = ['none']\n          couleurAngle = 'black'\n        }\n        sommetsDejaTrouves[jj] = choixSommet\n        switch (choixSommet) {\n          case numA: // Si le sommet est A, alors il y a 3 choix possibles d'angles\n            pt2 = A\n            tailleAngle = min(segment(pt2, M).longueur, segment(pt2, N).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n            choixAngle = 1\n            switch (choixAngle) {\n              case 1 :\n                listePt1 = [B, M]\n                listePt3 = [N, I]\n                break\n              case 2 :\n                listePt1 = [C]\n                listePt3 = [N, I]\n                break\n              case 3 :\n                listePt3 = [B, M]\n                listePt1 = [C]\n                break\n            }\n            break\n          case numC : // Si le sommet est C, alors il y a 3 choix possibles d'angles\n            pt2 = C\n            choixAngle = randint(1, 3)\n            tailleAngle = min(segment(pt2, M).longueur, segment(pt2, N).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n            switch (choixAngle) {\n              case 1 :\n                listePt1 = [B, N]\n                listePt3 = [M, I]\n                break\n              case 2 :\n                listePt3 = [M, I]\n                listePt1 = [A]\n                break\n              case 3 :\n                listePt3 = [B, N]\n                listePt1 = [A]\n                break\n            }\n            break\n          case numB :\n            pt2 = B\n            tailleAngle = min(segment(pt2, M).longueur, segment(pt2, N).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n            listePt1 = [C, N]\n            listePt3 = [A, M]\n            break\n          case numM : // Si le sommet est M, alors il y a 2 choix possibles d'angles\n            pt2 = M\n            tailleAngle = min(segment(pt2, A).longueur, segment(pt2, C).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n            listePt1 = [C, I]\n            listePt3 = [randint(1, 2) === 1 ? A : B]\n            positionIbis = ChoixHorizontal === -1 ? 'left' : 'right'\n            break\n          case numN : // Si le sommet est N, alors il y a 2 choix possibles d'angles\n            pt2 = N\n            tailleAngle = min(segment(pt2, A).longueur, segment(pt2, C).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n            listePt1 = [A, I]\n            listePt3 = [randint(1, 2) === 1 ? C : B]\n            break\n          case numI:\n            pt2 = I\n            choixAngle = randint(1, 4)\n            switch (choixAngle) {\n              case 1:\n                listePt1 = [M]\n                listePt3 = [A]\n                break\n              case 2:\n                listePt1 = [C]\n                listePt3 = [A]\n                positionIbis = ChoixHorizontal === -1 ? 'right' : 'left'\n                break\n              case 3:\n                listePt1 = [N]\n                listePt3 = [C]\n                break\n              case 4:\n                listePt1 = [N]\n                listePt3 = [M]\n                positionIbis = ChoixHorizontal === -1 ? 'left' : 'right'\n                break\n            }\n            tailleAngle = min(segment(pt2, listePt1[0]).longueur, segment(pt2, listePt3[0]).longueur, 4) / 2 * 0.9\n        }\n\n        pt1 = choice(listePt1) // Une fois la possibilité d'angle choisie, il y a deux points possibles.\n        pt3 = choice(listePt3)\n        segmentsCorrection = polyline([listePt1[0], pt2, listePt3[0]], this.sup3 ? 'black' : couleurRemplissageAngle[0])\n        resultat = []\n        for (const item1 in listePt1) {\n          for (const item3 in listePt3) {\n            resultat.push(`\\\\widehat{${listePt1[item1].nom}${pt2.nom}${listePt3[item3].nom}}`)\n            resultat.push(`\\\\widehat{${listePt3[item3].nom}${pt2.nom}${listePt1[item1].nom}}`)\n          }\n        }\n        // The following 5 results are for the MCQ\n        // 2 correct results, 2 false results and a 5th false or true result, depending on the exercise.\n        resultatOK1 = choice(resultat)\n        resultatOK2 = choice(resultat, [resultatOK1])\n        resultatPasOK1 = `\\\\widehat{${pt2.nom}${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}}`\n        resultatPasOK2 = `\\\\widehat{${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}${pt2.nom}}`\n        troisBonnesReponses = false\n        if (choixSommet === numI) { // Si I est le sommet, que deux bonnes réponses.\n          resultat3 = choice([`\\\\widehat{${listePt3[0].nom}${listePt1[0].nom}${pt2.nom}}`, `\\\\widehat{${pt2.nom}${listePt3[0].nom}${listePt1[0].nom}}`])\n        } else {\n          troisBonnesReponses = choice([true, false])\n          if (troisBonnesReponses) { // Une 3e réponse vraie\n            resultat3 = choice(resultat, [resultatOK1, resultatOK2])\n          } else if (choice([true, false])) { // Une 3e réponse fausse\n            resultat3 = `\\\\widehat{${pt2.nom}${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}}`\n            while (resultat3 === resultatPasOK1) resultat3 = `\\\\widehat{${pt2.nom}${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}}`\n          } else {\n            resultat3 = `\\\\widehat{${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}${pt2.nom}}`\n            while (resultat3 === resultatPasOK2) resultat3 = `\\\\widehat{${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}${pt2.nom}}`\n          }\n        }\n        segmentsCorrection.epaisseur = 3\n        const ang = angleOriente(pt1, pt2, pt3)\n\n        objetsEnonce.push(codageAngle(pt1, pt2, ang, tailleAngle, marquageAngle[jj], couleurAngle, 2, 1, couleurRemplissageAngle[0], 1, false, true))\n        if ((this.interactif || context.isAmc) && this.interactifType === 'mth') {\n          texteAMC = 'Choose all angles that can name'\n        } else {\n          texteAMC = 'How can we name'\n        }\n        texteAMC += ' the angle'\n        marquageAngleConsigne.push(codageAngle(M1, O, 79, 1, marquageAngle[jj]))\n        texteAMC += this.sup3\n          ? 'marked by the symbol' + mathalea2d({\n            xmin: 0,\n            ymin: 0,\n            xmax: 1.2,\n            ymax: 1.2,\n            pixelsParCm: 20,\n            scale: 0.5,\n            style: 'display:inline'\n          }, marquageAngleConsigne)\n          : `${couleurRemplissageAngle[1]}`\n        texteAMC += ((this.interactif || context.isAmc) && this.interactifType === 'mth') ? '.' : `${sp()}?`\n        texte += this.sup > 1 ? `${jj === 0 ? '' : '<br>'}${numAlpha(jj)}` : ''\n        texte += texteAMC\n        if (this.interactif && this.interactifType === 'mathLive') {\n          texte += ajouteChampTexteMathLive(this, i * this.sup + jj, 'inline width25')\n        }\n        setReponse(this, i * this.sup + jj, resultat, { formatInteractif: 'text' })\n        objetsCorrection.push(codageAngle(pt1, pt2, ang, tailleAngle, marquageAngle[jj], couleurAngle, 2, 1, couleurRemplissageAngle[0], 1, false, true), segmentsCorrection)\n        texteCorr += this.sup > 1 ? `${jj === 0 ? '' : '<br>'}${numAlpha(jj)}` : ''\n        texteCorr += 'The angle'\n        texteCorr += this.sup3\n          ? 'marked by the symbol' + mathalea2d({\n            xmin: 0,\n            ymin: 0,\n            xmax: 1.2,\n            ymax: 1.2,\n            pixelsParCm: 20,\n            scale: 0.5,\n            style: 'display:inline'\n          }, marquageAngleConsigne)\n          : `${couleurRemplissageAngle[1]}`\n        texteCorr += ` is named, of your choice: $${this.sup3 ? miseEnEvidence(resultat[0], 'black') : miseEnEvidence(resultat[0], couleurRemplissageAngle[0])}$`\n        for (let ee = 1; ee < resultat.length; ee++) {\n          texteCorr += `, $${this.sup3 ? miseEnEvidence(resultat[ee], 'black') : miseEnEvidence(resultat[ee], couleurRemplissageAngle[0])}$`\n        }\n        texteCorr += '.'\n        propositionsDuQcm = [{\n          texte: `$${resultatOK1}$`,\n          statut: true\n        },\n        {\n          texte: `$${resultatOK2}$`,\n          statut: true\n        },\n        {\n          texte: `$${resultat3}$`,\n          statut: troisBonnesReponses\n        },\n        {\n          texte: `$${resultatPasOK1}$`,\n          statut: false\n        },\n        {\n          texte: `$${resultatPasOK2}$`,\n          statut: false\n        }]\n        if (this.interactif && this.interactifType === 'mth') {\n          this.autoCorrection[i * this.sup + jj].enonce = `${texte}\\n`\n          this.autoCorrection[i * this.sup + jj].propositions = propositionsDuQcm\n          this.autoCorrection[i * this.sup + jj].options = {}\n\n          texte += propositionsQcm(this, i * this.sup + jj).texte\n        }\n        if (context.isAmc) {\n          propositionsAMC[jj] = {\n            type: 'mthMult', // on donne le type de la première question-réponse qcmMono, qcmMult, AMCNum, AMCOpen\n            enonce: texteAMC,\n            propositions: propositionsDuQcm\n          }\n        }\n      }\n      const params = {\n        xmin: min(0, absA, absC) - 1,\n        ymin: ordC - 1,\n        xmax: max(0, absA, absC) + 1,\n        ymax: ordA + 1,\n        pixelsParCm: 20,\n        scale: 0.5\n      }\n      objetsEnonce.push(p1[0], p1[1], segment(A, N), segment(C, M), labelPoint(M, N, Ibis))\n      objetsCorrection.push(p1[0], p1[1], segment(A, N), segment(C, M), labelPoint(M, N, Ibis))\n      const figureExo = mathalea2d(params, objetsEnonce)\n      texte += '<br>' + figureExo\n      texteCorr += '<br>' + mathalea2d(params, objetsCorrection)\n      if (context.isAmc) {\n        this.autoCorrection[i] = {\n          enonce: figureExo,\n          enonceAvant: true, // EE : ce champ est facultatif et permet (si false) de supprimer l'énoncé ci-dessus avant la numérotation de chaque question.\n          enonceCentre: true, // EE : ce champ est facultatif et permet (si true) de centrer le champ 'States' ci-dessus.\n          melange: true, // EE : ce champ est facultatif et permet (si false) de ne pas provoquer le mélange des questions.\n          options: { avecSymboleMult: true }, // facultatif. Par défaut, multicols est à false. Ce paramètre provoque un multicolonnage (sur 2 colonnes par défaut) des propositions : pratique quand on met plusieurs AMCNum. !!! Attention, cela ne fonctionne pas, nativement, pour AMCOpen. !!!\n          propositions: propositionsAMC\n        }\n      }\n      this.listeQuestions.push(texte)\n      this.listeCorrections.push(texteCorr)\n      listeQuestionsToContenu(this)\n    }\n  }\n  this.besoinFormulaireNumerique = ['Number of angles to find (between 1 and 3):', 3]\n  if (context.isHtml) this.besoinFormulaire2Numerique = ['Interactive exercise', 2, '1: MCQ\\n2: Text']\n  this.besoinFormulaire3CaseACocher = ['Black and white figure']\n}\n"],"names":["titre","interactifType","interactifReady","amcType","amcReady","dateDePublication","uuid","ref","NommerUnAngle","Exercice","propositionsDuQcm","i","texteAMC","troisBonnesReponses","listePt1","listePt3","resultatOK1","resultatOK2","resultat3","resultatPasOK1","resultatPasOK2","choixAngle","pt1","pt2","pt3","tailleAngle","aleaChoixCouleurRemplissage","couleurRemplissageAngle","couleurAngle","segmentsCorrection","resultat","propositionsAMC","marquageAngle","combinaisonListes","ChoixHorizontal","choice","numB","randint","numA","numC","numM","numN","numI","ordB","B","point","lettreDepuisChiffre","absA","ordA","A","absC","ordC","C","fractionSegmentAB","fractionSegmentBC","AB","segment","BC","M","pointSurSegment","N","p1","polygoneAvecNom","I","pointIntersectionDD","droite","listePoints","objetsEnonce","objetsCorrection","sommetsDejaTrouves","choixCouleurRemplissage","rangeMinMax","texte","O","M1","texteCorr","positionIbis","Ibis","jj","marquageAngleConsigne","choixSommet","couleurTab","enleveElement","min","polyline","item1","item3","ang","angleOriente","codageAngle","context","mathalea2d","sp","numAlpha","ajouteChampTexteMathLive","setReponse","miseEnEvidence","ee","propositionsQcm","params","max","labelPoint","figureExo","listeQuestionsToContenu"],"mappings":"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"}