File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6G10-4-gPFYJsQE.js.map
{"version":3,"file":"6G10-4-gPFYJsQE.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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"}