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/6G10-4-IlApU2oS.js.map
{"version":3,"file":"6G10-4-IlApU2oS.js","sources":["../../src/exercices/6e/6G10-4.js"],"sourcesContent":["import { cercle } from '../../lib/2d/cercle.js'\nimport { droite } from '../../lib/2d/droites.js'\nimport { point, pointAdistance, pointIntersectionLC, tracePoint } from '../../lib/2d/points.js'\nimport { polygoneAvecNom } from '../../lib/2d/polygones.js'\nimport { longueur, segment } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { combinaisonListes, shuffle } from '../../lib/outils/arrayOutils'\nimport { texteEnCouleurEtGras } from '../../lib/outils/embellissements'\nimport { choisitLettresDifferentes } from '../../lib/outils/aleatoires.js'\nimport { numAlpha, premiereLettreEnMajuscule } from '../../lib/outils/outilString.js'\nimport Exercice from '../Exercice.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { contraindreValeur, listeQuestionsToContenu } from '../../modules/outils.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\nimport { context } from '../../modules/context.js'\nimport { clone } from 'mathjs'\nexport const interactifReady = true\nexport const interactifType = ['qcm', 'mathLive']\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\nexport const titre = 'Know the vocabulary of the circle'\n\nexport const dateDePublication = '19/08/2022'\nexport const dateDeModifImportante = '07/11/2023'\n\n/**\n * Exercice testant les connaissances des élèves sur le vocabulaire du cercle dans les deux sens (Un rayon est ... et [AB] est ...)\n * et en travaillant la reconnaissance et la production (QCM ou réponse libre)\n * @author Guillaume Valmont\n * Référence 6G10-4\n */\nexport const uuid = '03b49'\nexport const ref = '6G10-4'\n\nfunction ajouterAlternatives (fonction, reponses) {\n  const copieReponses = []\n  for (const reponse of reponses) {\n    copieReponses.push(reponse)\n  }\n  for (const reponse of copieReponses) {\n    reponses.push(fonction(reponse))\n  }\n  return reponses\n}\n\nfunction longueurAlternative (longueur) {\n  return longueur.slice(1) + longueur.slice(0, 1)\n}\n\n// @todo relire la définition de cette fonction et la déplacer\nfunction segmentAlternatif (reponses) {\n  if (reponses[0] != null) {\n    return '[' + reponses[0].slice(2, 3) + reponses[0].slice(1, 2) + ']'\n  } else {\n    window.notify('segmentAlternatif n\\'a pas de matière pour choisir', { reponses })\n  }\n}\n\nexport default function VocabulaireDuCercle () {\n  Exercice.call(this)\n  this.nbQuestions = 1\n\n  this.besoinFormulaireNumerique = ['Meaning of the questions', 3, '1: A ray is...\\n2: [AB] is...\\n3: Mixture']\n  this.sup = 3\n  this.besoinFormulaire2CaseACocher = ['MCQ']\n  this.sup2 = true\n  this.correctionDetailleeDisponible = true\n  this.sup3 = 5\n  this.besoinFormulaire3Numerique = ['Number of sub-questions', 5]\n\n  this.spacing = 1.5 // Interligne des questions\n  this.spacingCorr = 1.5 // Interligne des réponses\n\n  this.nouvelleVersion = function () {\n    this.consigne = this.sup2 ? 'Check the correct answer(s).' : 'Complete.'\n    this.listeQuestions = []\n    this.listeCorrections = []\n    this.autoCorrection = []\n    this.interactifType = this.sup2 ? 'mth' : 'mathLive'\n    const nbSousQuestionMax = 5 // Il y a 5 types de sous-questions pour l'instant... si ça venait à changer, mettre à jour ce paramètre\n    let sensDesQuestionsDisponibles\n    switch (this.sup) {\n      case 1:\n        sensDesQuestionsDisponibles = ['A ray is...']\n        break\n      case 2:\n        sensDesQuestionsDisponibles = ['[AB] is...']\n        break\n      default:\n        sensDesQuestionsDisponibles = ['A ray is...', '[AB] is...']\n        break\n    }\n    const nbSousQuestions = contraindreValeur(1, 5, this.sup3, nbSousQuestionMax)\n    const sensDesQuestions = combinaisonListes(sensDesQuestionsDisponibles, this.nbQuestions * nbSousQuestionMax)\n    const distanceMinEntrePoints = 2\n    const distanceMinCorde = 3\n    const distanceMaxCorde = 5.9\n    for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n      const propositionsAMC = []\n\n      texte = ''\n      texteCorr = ''\n      const nomsDesPoints = choisitLettresDifferentes(6)\n      const O = point(0, 0, nomsDesPoints[0])\n      const leCercle = cercle(O, 3)\n      const A = pointAdistance(O, 3, nomsDesPoints[1])\n      let B, C, D, E\n      do {\n        B = pointAdistance(O, 3, nomsDesPoints[2])\n        C = pointIntersectionLC(droite(O, B), leCercle, nomsDesPoints[3])\n      } while (longueur(A, B) < distanceMinEntrePoints || longueur(A, C) < distanceMinEntrePoints || longueur(B, C) < distanceMinEntrePoints)\n      do {\n        D = pointAdistance(O, 3, nomsDesPoints[4])\n      } while (longueur(A, D) < distanceMinEntrePoints || longueur(B, D) < distanceMinEntrePoints || longueur(C, D) < distanceMinEntrePoints)\n      do {\n        E = pointAdistance(O, 3, nomsDesPoints[5])\n      } while (longueur(A, E) < distanceMinEntrePoints || longueur(B, E) < distanceMinEntrePoints || longueur(C, E) < distanceMinEntrePoints || longueur(D, E) < distanceMinCorde || longueur(D, E) > distanceMaxCorde)\n      const OA = segment(O, A)\n      const BC = segment(B, C)\n      const DE = segment(D, E)\n      const polygon = polygoneAvecNom(A, B, C, D, E)\n      objetsEnonce.push(leCercle, labelPoint(O), tracePoint(O), OA, BC, DE, polygon[1])\n      const params = { xmin: -4, ymin: -4, xmax: 4, ymax: 4, pixelsParCm: 20, scale: 1 }\n      // We add to the text of the statement, the freehand figure and the figure of the statement.\n      const figure = mathalea2d(params, objetsEnonce)\n      texte += figure + '<br>'\n      // We add to the text of the correction, the figure of the correction\n      texteCorr += texte\n\n      let questions = [\n        {\n          nom: `[$${O.nom + A.nom}$]`,\n          nature: 'a ray',\n          commentaire: `${texteEnCouleurEtGras('A', 'blue')} radius is a ${texteEnCouleurEtGras('segment', 'blue')}, so it is noted with brackets.`,\n          commentaireAlt: `${texteEnCouleurEtGras('THE', 'blue')} radius is a ${texteEnCouleurEtGras('length', 'blue')}, it is therefore noted without a bracket.`,\n          sens: sensDesQuestions[i * nbSousQuestions]\n        },\n        {\n          nom: `[$${B.nom + C.nom}$]`,\n          nature: 'a diameter',\n          commentaire: `${texteEnCouleurEtGras('A', 'blue')} diameter is a ${texteEnCouleurEtGras('segment', 'blue')}, so it is noted with brackets.<br>A diameter is a chord that passes through the center of the circle.`,\n          commentaireAlt: `${texteEnCouleurEtGras('THE', 'blue')} diameter is a ${texteEnCouleurEtGras('length', 'blue')}, it is therefore noted without brackets.`,\n          sens: sensDesQuestions[i * nbSousQuestions + 1]\n        },\n        {\n          nom: `$${O.nom + A.nom}$`,\n          nature: 'the Ray',\n          commentaire: `${texteEnCouleurEtGras('THE', 'blue')} radius is a ${texteEnCouleurEtGras('length', 'blue')}, it is therefore noted without a bracket.`,\n          commentaireAlt: `${texteEnCouleurEtGras('A', 'blue')} radius is a ${texteEnCouleurEtGras('segment', 'blue')}, so it is noted with brackets.`,\n          sens: sensDesQuestions[i * nbSousQuestions + 2]\n        },\n        {\n          nom: `$${B.nom + C.nom}$`,\n          nature: 'the diameter',\n          commentaire: `${texteEnCouleurEtGras('THE', 'blue')} diameter is a ${texteEnCouleurEtGras('length', 'blue')}, it is therefore noted without brackets.`,\n          commentaireAlt: `${texteEnCouleurEtGras('A', 'blue')} diameter is a ${texteEnCouleurEtGras('segment', 'blue')}, so it is noted with brackets.`,\n          sens: sensDesQuestions[i * nbSousQuestions + 3]\n        },\n        {\n          nom: `[$${D.nom + E.nom}$]`,\n          nature: 'a rope',\n          commentaire: '',\n          commentaireAlt: '',\n          sens: sensDesQuestions[i * nbSousQuestions + 4]\n        }\n      ]\n      questions = shuffle(questions).slice(0, nbSousQuestions)\n      const propositionsUnRayonEst = []\n      for (const question of questions) {\n        const texteProposition = question.nom\n        propositionsUnRayonEst.push({\n          texte: texteProposition,\n          statut: false,\n          feedback: question.commentaire,\n          feedbackAlt: question.commentaireAlt\n        })\n      }\n      const propositionsABEst = []\n      for (const question of questions) {\n        const texteProposition = question.nature\n        propositionsABEst.push({\n          texte: texteProposition,\n          statut: false,\n          feedback: question.commentaire,\n          feedbackAlt: question.commentaireAlt\n        })\n      }\n      let j = 0\n      let nomDiametre = ''\n      for (const question of questions) {\n        if (question.nature === 'a diameter') {\n          nomDiametre = question.nom\n          break\n        }\n      }\n      for (const question of questions) {\n        let enonce\n        const propositionsEE = []\n        texte += numAlpha(j)\n        texteCorr += numAlpha(j)\n        if (question.sens === 'A ray is...') {\n          enonce = `${premiereLettreEnMajuscule(question.nature)} is...`\n          texte += enonce\n          texteCorr += `${premiereLettreEnMajuscule(question.nature)} is ${texteEnCouleurEtGras(question.nom)}.<br>`\n          if (question.nature === 'a rope') texteCorr += `${texteEnCouleurEtGras(nomDiametre)} being a diameter, it is also a chord.<br>`\n        }\n        if (question.sens === '[AB] is...') {\n          enonce = `${question.nom} is...`\n          texte += enonce\n          texteCorr += `${premiereLettreEnMajuscule(question.nom)} is ${texteEnCouleurEtGras(question.nature)}${question.nom === nomDiametre ? ' and also' + texteEnCouleurEtGras('a rope') : ''}.<br>`\n        }\n        if (this.correctionDetaillee && question.commentaire !== '') texteCorr += question.commentaire + '<br>'\n        if (this.sup2 || context.isAmc) {\n          let propositions = []\n          if (question.sens === 'A ray is...') {\n            // clone performs the deep copy of an array or an object... which makes propositions independent of proposition changesUnRayonEst\n            propositions = clone(propositionsUnRayonEst)\n          }\n          if (question.sens === '[AB] is...') {\n            // clone performs the deep copy of an array or an object... which makes propositions independent of proposition changesABEst\n            propositions = clone(propositionsABEst)\n          }\n          for (let ee = 0; ee < propositions.length; ee++) {\n            const statut = propositions[ee].texte === question.nom || propositions[ee].texte === question.nature || (question.nature === 'a diameter' && propositions[ee].texte === 'a rope') || (question.nature === 'a rope' && propositions[ee].texte === nomDiametre)\n            let feedback\n            statut ? feedback = propositions[ee].feedback : feedback = propositions[ee].feedbackAlt\n            propositionsEE.push({\n              texte: propositions[ee].texte,\n              statut,\n              feedback\n            })\n          }\n          if (!context.isAmc) {\n            this.autoCorrection[i * questions.length + j] = {\n              enonce,\n              options: { ordered: false },\n              propositions: propositionsEE\n            }\n            texte += propositionsQcm(this, i * questions.length + j).texte + '<br>'\n          } else if (context.isAmc) {\n            propositionsAMC[j] = {\n              type: 'mthMult', // on donne le type de la première question-réponse qcmMono, qcmMult, AMCNum, AMCOpen\n              enonce,\n              propositions: propositionsEE\n            }\n          }\n        } else {\n          let reponses\n          if (question.sens === 'A ray is...') {\n            reponses = [question.nom.replace(/\\$/g, '')]\n            switch (question.nature) {\n              case 'the Ray':\n                reponses.push(O.nom + B.nom, O.nom + C.nom, O.nom + D.nom, O.nom + E.nom)\n                reponses = ajouterAlternatives(longueurAlternative, reponses)\n                break\n              case 'the diameter':\n                reponses.push(longueurAlternative(reponses))\n                break\n              case 'a ray':\n                reponses.push('[' + O.nom + B.nom + ']', '[' + O.nom + C.nom + ']', '[' + O.nom + D.nom + ']', '[' + O.nom + E.nom + ']')\n                reponses = ajouterAlternatives(segmentAlternatif, reponses)\n                break\n              case 'a diameter':\n                reponses.push(segmentAlternatif(reponses))\n                break\n              case 'a rope':\n                for (const point1 of [A, B, C, D, E]) {\n                  for (const point2 of [A, B, C, D, E]) {\n                    if (point1.nom !== point2.nom) {\n                      reponses.push('[' + point1.nom + point2.nom + ']')\n                    }\n                  }\n                }\n                reponses = ajouterAlternatives(segmentAlternatif, reponses)\n                break\n            }\n            texte += ajouteChampTexteMathLive(this, i * questions.length + j, 'inline width25 nospacebefore college6eme alphanumericWithSpace')\n            setReponse(this, i * questions.length + j, reponses, { formatInteractif: 'textWithSpace' })\n          }\n          if (question.sens === '[AB] is...') {\n            reponses = [question.nature]\n            texte += ajouteChampTexteMathLive(this, i * questions.length + j, 'inline width25 nospacebefore college6eme alphanumericWithSpace')\n            // setAnswer(this, i * questions.length + j, answers, {Interactiveformat: 'ignoreCase' })\n            setReponse(this, i * questions.length + j, reponses, { formatInteractif: 'textWithSpace' })\n          }\n        }\n        texte += '<br>'\n        if (this.correctionDetaillee) texteCorr += '<br>'\n        j++\n      }\n\n      // If the question has never been asked, we save it\n      if (this.questionJamaisPosee(i, nomsDesPoints, objetsEnonce)) { // <- laisser le i et ajouter toutes les variables qui rendent les exercices différents (par exemple a, b, c et d)\n        // In this exercise, we do not use a, b, c and d but A, B, C and D so replace them!\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n\n        if (context.isAmc) {\n          this.autoCorrection[i] = {\n            enonce: figure + 'From the figure above, complete the following sentences.',\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\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this)\n  }\n}\n"],"names":["interactifReady","interactifType","amcReady","amcType","titre","dateDePublication","dateDeModifImportante","uuid","ref","ajouterAlternatives","fonction","reponses","copieReponses","reponse","longueurAlternative","longueur","segmentAlternatif","VocabulaireDuCercle","Exercice","nbSousQuestionMax","sensDesQuestionsDisponibles","nbSousQuestions","contraindreValeur","sensDesQuestions","combinaisonListes","distanceMinEntrePoints","distanceMinCorde","distanceMaxCorde","texte","texteCorr","cpt","objetsEnonce","propositionsAMC","nomsDesPoints","choisitLettresDifferentes","O","point","leCercle","cercle","A","pointAdistance","B","C","D","E","pointIntersectionLC","droite","OA","segment","BC","DE","polygon","polygoneAvecNom","labelPoint","tracePoint","figure","mathalea2d","questions","texteEnCouleurEtGras","shuffle","propositionsUnRayonEst","question","texteProposition","propositionsABEst","j","nomDiametre","enonce","propositionsEE","numAlpha","premiereLettreEnMajuscule","context","propositions","clone","ee","statut","feedback","propositionsQcm","point1","point2","ajouteChampTexteMathLive","setReponse","listeQuestionsToContenu"],"mappings":"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"}