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/4P10-1-rkRlUeit.js.map
{"version":3,"file":"4P10-1-rkRlUeit.js","sources":["../../src/exercices/4e/4P10-1.js"],"sourcesContent":["import { courbe } from '../../lib/2d/courbes.js'\nimport { point } from '../../lib/2d/points.js'\nimport { repere } from '../../lib/2d/reperes.js'\nimport { segment } from '../../lib/2d/segmentsVecteurs.js'\nimport { choice, combinaisonListesSansChangerOrdre } from '../../lib/outils/arrayOutils'\nimport { texteEnCouleur } from '../../lib/outils/embellissements'\nimport { numAlpha } from '../../lib/outils/outilString.js'\nimport { prenom } from '../../lib/outils/Personne'\nimport { premierMultipleSuperieur } from '../../lib/outils/primalite'\nimport { texPrix, texteGras } from '../../lib/format/style'\nimport Exercice from '../deprecatedExercice.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { listeQuestionsToContenu, randint, calculANePlusJamaisUtiliser } from '../../modules/outils.js'\nexport const titre = 'Solve a proportionality problem using a graph'\n\n/**\n * fork de 4P10-1 par Jean-Claude Lhote\n * @author Sébastien LOZANO // je reprécise car j'avais disparu :D\n */\n\nexport const uuid = 'c668a'\nexport const ref = '4P10-1'\nexport default function GraphiquesEtProportionnalite2 () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.debug = false\n  if (this.debug) {\n    this.nbQuestions = 2\n  } else {\n    this.nbQuestions = 1\n  }\n\n  this.titre = titre\n  this.consigne = ''\n  this.spacingCorr = 2\n\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  // this.nbQuestionsModifiable = false;\n  context.isHtml ? this.spacing = 2 : this.spacing = 1\n  // context.isHtml? this.spacingCorr = 3 : this.spacingCorr = 2;\n\n  let typesDeQuestionsDisponibles\n\n  this.nouvelleVersion = function () {\n    if (this.debug) {\n      typesDeQuestionsDisponibles = [1]\n    } else {\n      typesDeQuestionsDisponibles = [1]\n    }\n\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n\n    // AvailableQuestionTypes=[1];\n\n    // let listTypeOfQuestions = combinationLists(availablequestiontypes, this.nbQuestions) // All types of questions are asked but the order differs for each \"cycle\"\n    const listeTypeDeQuestions = combinaisonListesSansChangerOrdre(typesDeQuestionsDisponibles, this.nbQuestions) // Tous les types de questions sont posées --> à remettre comme ci-dessus\n\n    for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      // we anticipate a bit of randomness for the unit prices\n      const prixUnitaireOranges = choice([1.2, 1.4, 1.6, 1.8])\n      const prixUnitaireBaguettes = choice([0.6, 0.8, 1.2])\n      // we provide a table with situations\n      const situations = [\n        { lieu: 'the grocery store', prenom: prenom(), articles: 'oranges', art_articles: 'oranges', prix_unitaire: prixUnitaireOranges, qte: 'weight', qte_max: 10, qte2: 3, unite: 'kg of', legendeX: 'weight in kg', legendeY: 'price in €', fig: {}, figureCorr: {} },\n        { lieu: 'the bakery', prenom: prenom(), articles: 'chopsticks', art_articles: 'of chopsticks', prix_unitaire: prixUnitaireBaguettes, qte: 'number', qte_max: 10, qte2: 3, unite: '', legendeX: 'quantity', legendeY: 'price in €', fig: {}, figureCorr: {} }\n      ]\n      // we choose one\n      const situation = situations[randint(0, situations.length - 1)]\n      let r\n      const xscale = 1\n      const yscale = choice([1, 2, 5])\n      // to randomize the step on the price axis a little\n      let stepAxeSecondaire\n      if (yscale === 1) stepAxeSecondaire = choice([0.5, 0.2, 0.25])\n      else stepAxeSecondaire = choice([0.5, 0.2, 0.25])\n      // we end the calls\n      const mesAppels = [\n        r = repere({\n          xMin: 0,\n          yMin: 0,\n          yMax: premierMultipleSuperieur(yscale, (situation.qte_max + 1) * situation.prix_unitaire + yscale),\n          xMax: situation.qte_max + 1,\n          xUnite: 1,\n          yUnite: 1 / yscale,\n          yThickDistance: yscale,\n          xLegende: situation.legendeX,\n          yLegende: situation.legendeY,\n          grille: true,\n          grilleOpacite: 0.5,\n          grilleXDistance: 1,\n          grilleYDistance: yscale,\n          grilleXMin: 0,\n          grilleYMin: 0,\n          grilleSecondaire: true,\n          grilleSecondaireXDistance: 0.2,\n          grilleSecondaireYDistance: yscale / 5,\n          grilleSecondaireXMin: 0,\n          grilleSecondaireYMin: 0,\n          grilleSecondaireXMax: situation.qte_max + 1,\n          grilleSecondaireYMax: premierMultipleSuperieur(yscale, (situation.qte_max + 1) * situation.prix_unitaire + yscale),\n          yLegendePosition: [0, premierMultipleSuperieur(yscale, (situation.qte_max + 1) * situation.prix_unitaire + yscale) / yscale + 0.5],\n          xLegendePosition: [situation.qte_max + 1 + 0.2, 0]\n        })\n      ]\n      const f = x => situation.prix_unitaire * x\n      mesAppels.push(r, courbe(f, { repere: r, xMin: 0, xMax: situation.qte_max + 1, color: 'black', epaisseur: 1.5 }))\n      // we prepare the figure object\n      const fig = mathalea2d(\n        {\n          xmin: -xscale,\n          ymin: -1,\n          xmax: situation.qte_max / xscale + 3,\n          ymax: ((situation.qte_max + 1) * situation.prix_unitaire + yscale) / yscale + 2,\n          pixelsParCm: 30\n        },\n        mesAppels\n      )\n      situation.fig = fig\n\n      // we prepare the additional calls for the correction\n      const mesAppelsCorr = mesAppels\n      const A = point(situation.qte_max, 0)\n      const B = point(situation.qte_max, calculANePlusJamaisUtiliser(situation.qte_max * situation.prix_unitaire / yscale))\n      const s1 = segment(A, B, 'red')\n      s1.epaisseur = 2\n      s1.pointilles = 5\n      s1.styleExtremites = '->'\n      const C = point(0, calculANePlusJamaisUtiliser(situation.qte_max * situation.prix_unitaire / yscale))\n      const s2 = segment(B, C, 'red')\n      s2.epaisseur = 2\n      s2.pointilles = 5\n      s2.styleExtremites = '->'\n\n      const D = point(situation.qte2, 0)\n      const E = point(situation.qte2, calculANePlusJamaisUtiliser(situation.qte2 * situation.prix_unitaire / yscale))\n      const s3 = segment(D, E, 'blue')\n      s3.epaisseur = 2\n      s3.pointilles = 5\n      s3.styleExtremites = '->'\n      const F = point(0, calculANePlusJamaisUtiliser(situation.qte2 * situation.prix_unitaire / yscale))\n      const s4 = segment(E, F, 'blue')\n      s4.epaisseur = 2\n      s4.pointilles = 5\n      s4.styleExtremites = '->'\n\n      // we add the calls for the correction\n      mesAppelsCorr.push(\n        s1,\n        s2,\n        s3,\n        s4\n      )\n\n      // we prepare the figure correction object\n      const figureCorr = mathalea2d(\n        {\n          xmin: -xscale,\n          ymin: -1,\n          xmax: situation.qte_max / xscale + 3,\n          ymax: (situation.qte_max * situation.prix_unitaire + 4) / yscale + 1,\n          pixelsParCm: 30\n        },\n        mesAppelsCorr\n      )\n      situation.figureCorr = figureCorr\n\n      // a counter for sub-questions\n      let k = 0\n      let kCorr = 0\n\n      const enonces = []\n      enonces.push({\n        enonce:\n        `At ${situation.lieu}, ${situation.prenom} uses the chart below to indicate the price of its ${situation.articles}s as a function of ${situation.qte} ${situation.art_articles}.<br>${situation.fig}<br>${numAlpha(k++)} Justify that this is a proportionality situation using the chart.<br> ${numAlpha(k++)} What is the price of $${situation.qte_max}$ ${situation.unite} ${situation.articles}?<br> ${numAlpha(k++)} What is the price of $${situation.qte2}$ ${situation.unite} ${situation.articles}?`,\n        correction: `${numAlpha(kCorr++)} This graph is a straight line which passes through the origin.<br> ${texteEnCouleur('It is therefore indeed the graph of a situation of proportionality.')}<br> ${numAlpha(kCorr++)} By reading graphically, using the red dotted lines of the graph below, ${texteEnCouleur(`${situation.qte_max} ${situation.unite} ${situation.articles} cost $\\\\$$${texPrix(calculANePlusJamaisUtiliser(situation.qte_max * situation.prix_unitaire))}.`)}<br> ${situation.figureCorr} <br> ${numAlpha(kCorr++)} For $${situation.qte2}$ ${situation.unite} ${situation.articles}, the graphical reading is less easy, we will detail two methods.<br><br> ${texteGras('First method by graphic reading:')}<br> It is necessary to take into account that each small square represents $\\\\$${texPrix(stepAxeSecondaire * yscale)}$ and use the blue dotted lines.<br><br> ${texteGras('Second method by calculating a fourth proportional:')}<br> $${situation.qte_max}$ ${situation.unite} ${situation.articles} costs $\\\\$${texPrix(calculANePlusJamaisUtiliser(situation.qte_max * situation.prix_unitaire))}$ so $${situation.qte2}$ ${situation.unite} ${situation.articles} costs: <br> $(\\\\$${texPrix(calculANePlusJamaisUtiliser(situation.qte_max * situation.prix_unitaire))}$ $\\\\div ${situation.qte_max}$ ${situation.articles} $)\\\\times (${situation.qte2}$ ${situation.articles}) $= \\\\$${texPrix(calculANePlusJamaisUtiliser(situation.qte2 * situation.prix_unitaire))}$ <br><br>${texteEnCouleur(`Regardless of the method used, ${situation.qte2} ${situation.unite} ${situation.articles} costs $\\\\$$${texPrix(calculANePlusJamaisUtiliser(situation.qte2 * situation.prix_unitaire)).replace('{.}', '.')}.`)}`\n      })\n      switch (listeTypeDeQuestions[i]) {\n        case 1:\n          texte = `${enonces[0].enonce}`\n          if (this.debug) {\n            texte += '<br>'\n            texte += `<br> =====CORRECTION======<br>${enonces[0].correction}`\n            texteCorr = ''\n          } else {\n            texteCorr = `${enonces[0].correction}`\n          }\n          break\n      }\n\n      if (this.listeQuestions.indexOf(texte) === -1) { // Si la question n'a jamais été posée, on en créé une autre\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this)\n  }\n}\n"],"names":["titre","uuid","ref","GraphiquesEtProportionnalite2","Exercice","context","typesDeQuestionsDisponibles","listeTypeDeQuestions","combinaisonListesSansChangerOrdre","i","texte","texteCorr","cpt","prixUnitaireOranges","choice","prixUnitaireBaguettes","situations","prenom","situation","randint","r","xscale","yscale","stepAxeSecondaire","mesAppels","repere","premierMultipleSuperieur","f","x","courbe","fig","mathalea2d","mesAppelsCorr","A","point","B","calculANePlusJamaisUtiliser","s1","segment","C","s2","D","E","s3","s4","figureCorr","k","kCorr","enonces","numAlpha","texteEnCouleur","texPrix","texteGras","listeQuestionsToContenu"],"mappings":"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"}