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/3I12-3-R_tDMbCa.js.map
{"version":3,"file":"3I12-3-R_tDMbCa.js","sources":["../../src/exercices/3e/3I12-3.js"],"sourcesContent":["import { choice, compteOccurences, enleveDoublonNum } from '../../lib/outils/arrayOutils'\nimport { lampeMessage } from '../../lib/format/message.js'\nimport { range1 } from '../../lib/outils/nombres.js'\nimport { lettreDepuisChiffre } from '../../lib/outils/outilString.js'\nimport Exercice from '../Exercice.js'\nimport { contraindreValeur, gestionnaireFormulaireTexte, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { scratchblock } from '../../modules/scratchblock.js'\nimport { context } from '../../modules/context.js'\nexport const titre = 'Complete a Scratch script - 2'\nexport const amcReady = true\nexport const amcType = 'AMCOpen'\n\nexport const dateDePublication = '22/09/2022'\nexport const dateDeModifImportante = '08/05/2023' // par EE : Le nb de questions peut être supérieur à 1.\n\n/**\n * Compléter un script sur les multiples et diviseurs\n * @author Eric Elter\n */\nexport const uuid = '52c97'\nexport const ref = '3I12-3'\nexport default function CompleterScriptDiviseurs () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.sup = 11\n  this.sup2 = 3\n  this.sup3 = 5\n  this.sup4 = 4\n  this.spacing = 2\n  this.nbQuestions = 1\n  this.typeExercice = 'Scratch'\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  this.listePackages = 'scratch3'\n  this.nouvelleVersion = function () {\n    this.introduction = lampeMessage({\n      titre: context.isHtml ? `${scratchblock('\\\\begin{scratch}[print,fill,blocks,scale=0.5]\\n\\\\ovaloperator{\\\\ovalnum{ } modulo \\\\ovalnum{ }}\\\\end{scratch}')}` : 'Information',\n      texte: (context.isHtml\n        ? ''\n        : '$\\\\setscratch{print}\\\\ovaloperator{\\\\ovalnum{ } modulo \\\\ovalnum{ }}$<br>') + 'This brick gives the remainder of the Euclidean division of the number on the left by the number on the right.',\n      couleur: 'numbers'\n    })\n\n    const nbBriquesATrouver = contraindreValeur(1, 10, this.sup2, randint(1, 10))\n    this.consigne = 'Complete'\n    this.consigne += nbBriquesATrouver > 1 ? 'the missing bricks.' : 'the missing brick.'\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    /*\n    let briquesATrouver = []\n    if (!this.sup) { // Si aucune liste n'est saisie\n      briquesATrouver = shuffle(range1(10)).slice(0, nbBriquesATrouver)\n    } else {\n      if (typeof (this.sup) === 'number') {\n        this.sup = contraindreValeur(1, 10, this.sup, 10)\n        briquesATrouver = [this.sup]\n        for (let i = 1; i < nbBriquesATrouver; i++) {\n          briquesATrouver.push(randint(1, 10, briquesATrouver))\n        }\n      } else {\n        briquesATrouver = this.sup.split('-')// Sinon on créé un tableau à partir des valeurs séparées par des -\n        for (let i = 0; i < briquesATrouver.length; i++) { // on a un tableau avec des strings : ['1', '1', '2']\n          briquesATrouver[i] = contraindreValeur(1, 10, parseInt(briquesATrouver[i]), randint(1, 10))\n        }\n        briquesATrouver = enleveDoublonNum(briquesATrouver)\n        if (nbBriquesATrouver > briquesATrouver.length) {\n          for (let i = briquesATrouver.length; i < nbBriquesATrouver; i++) {\n            briquesATrouver.push(randint(1, 10, briquesATrouver))\n          }\n        } else if (nbBriquesATrouver < briquesATrouver.length) {\n          briquesATrouver = shuffle(briquesATrouver).slice(0, nbBriquesATrouver)\n        }\n      }\n    }\n    */\n\n    let briquesATrouver = gestionnaireFormulaireTexte({\n      max: 10,\n      defaut: 11,\n      melange: 11,\n      nbQuestions: 999,\n      saisie: this.sup\n    })\n\n    briquesATrouver.push(...range1(10))\n    briquesATrouver = enleveDoublonNum(briquesATrouver).slice(0, nbBriquesATrouver)\n\n    const choixLigne2a = compteOccurences(briquesATrouver, 1) > 0\n    const choixLigne2b = compteOccurences(briquesATrouver, 2) > 0\n    const choixLigne4 = compteOccurences(briquesATrouver, 3) > 0\n    const choixLigne5a = compteOccurences(briquesATrouver, 4) > 0\n    const choixLigne5b = compteOccurences(briquesATrouver, 5) > 0\n    const choixLigne5c = compteOccurences(briquesATrouver, 6) > 0\n    const choixLigne6Extremes = compteOccurences(briquesATrouver, 7) > 0\n    const choixLigne6Centre = compteOccurences(briquesATrouver, 8) > 0\n    const choixLigne7a = compteOccurences(briquesATrouver, 9) > 0\n    const choixLigne7b = compteOccurences(briquesATrouver, 10) > 0\n\n    /*\n    let optionsBriques = []\n    if (!this.sup3) { // Si aucune liste n'est saisie\n      optionsBriques = [randint(1, 4)]\n    } else {\n      if (typeof (this.sup3) === 'number') {\n        this.sup3 = contraindreValeur(1, 5, this.sup3, 5)\n        optionsBriques = [this.sup3 === 5 ? randint(1, 4) : this.sup3]\n      } else {\n        optionsBriques = this.sup3.split('-')// Sinon on créé un tableau à partir des valeurs séparées par des -\n        for (let i = 0; i < optionsBriques.length; i++) { // on a un tableau avec des strings : ['1', '1', '2']\n          optionsBriques[i] = contraindreValeur(1, 5, parseInt(optionsBriques[i]), 5)\n        }\n        if (compteOccurences(optionsBriques, 5) > 0) optionsBriques = [randint(1, 4)]\n        else optionsBriques = combinaisonListes(optionsBriques, optionsBriques.length)\n      }\n    }\n    const briqueInitiale = optionsBriques[0]\n    */\n\n    const briqueInitiale = gestionnaireFormulaireTexte({\n      max: 4,\n      defaut: 5,\n      melange: 5,\n      nbQuestions: this.nbQuestions,\n      saisie: this.sup2\n    })\n\n    /*\n    optionsBriques = []\n    if (!this.sup4) { // Si aucune liste n'est saisie\n      optionsBriques = [randint(1, 3)]\n    } else {\n      if (typeof (this.sup4) === 'number') {\n        this.sup4 = contraindreValeur(1, 4, this.sup4, 4)\n        optionsBriques = [this.sup4 === 4 ? randint(1, 3) : this.sup4]\n      } else {\n        optionsBriques = this.sup4.split('-')// Sinon on créé un tableau à partir des valeurs séparées par des -\n        for (let i = 0; i < optionsBriques.length; i++) { // on a un tableau avec des strings : ['1', '1', '2']\n          optionsBriques[i] = contraindreValeur(1, 4, parseInt(optionsBriques[i]), 4)\n        }\n        if (compteOccurences(optionsBriques, 4) > 0) optionsBriques = [randint(1, 3)]\n        else optionsBriques = combinaisonListes(optionsBriques, optionsBriques.length)\n      }\n    }\n    const choixScript = optionsBriques[0]\n    */\n\n    const choixScript = gestionnaireFormulaireTexte({\n      max: 3,\n      defaut: 4,\n      melange: 4,\n      nbQuestions: this.nbQuestions,\n      saisie: this.sup3\n    })\n\n    for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      const tableauTouches = []\n      for (let i = 1; i < 27; i++) tableauTouches.push(String.fromCharCode(64 + i).toLowerCase())\n      for (let i = 0; i < 10; i++) tableauTouches.push(i)\n      tableauTouches.push('space')\n      tableauTouches.push('up arrow')\n      tableauTouches.push('down arrow')\n      tableauTouches.push('right arrow')\n      tableauTouches.push('left arrow')\n      const touchePressee = choice(tableauTouches)\n\n      const nb1 = randint(1, 26, [23, 9, 15, 17]) // Pour éviter I,O,Q et W\n      const var1 = lettreDepuisChiffre(nb1)\n      let texteScratch = '\\\\begin{scratch}[print,fill,blocks,scale=1]\\n'\n      switch (briqueInitiale[i]) {\n        case 1 :\n          texteScratch += '\\\\blockinit{when \\\\greenflag is clicked}\\n'\n          break\n        case 2 :\n          texteScratch += '\\\\blockinit{when this sprite is clicked}\\n'\n          break\n        case 3 :\n          texteScratch += `\\\\blockinit{when the \\\\selectmenu{${touchePressee}} key is pressed}\\n`\n          break\n        case 4 :\n          texteScratch += '\\\\blockinit{when the \\\\selectmenu{any} key is pressed}\\n'\n          break\n      }\n      const texteSansTrou = [texteScratch]\n      texteSansTrou.push(`\\\\blockvariable{set \\\\selectmenu{${var1}} to \\\\ovalnum{1}}\\n`)\n      texteScratch += `\\\\blockvariable{set \\\\selectmenu{${choixLigne2a ? '................' : var1}} to ${choixLigne2b ? '\\\\ovalnum{ ................ }' : '\\\\ovalnum{1}'}}\\n`\n\n      texteSansTrou.push('\\\\blockmove{ask \\\\ovalnum{Give me an integer.} and wait}\\n')\n      texteScratch += texteSansTrou[2]\n\n      texteSansTrou.push('\\\\blockrepeat{repeat \\\\ovalsensing{response} times}\\n{\\n')\n      texteScratch += choixLigne4\n        ? '\\\\blockrepeat{repeat \\\\ovalnum{ ................ } times}\\n{\\n'\n        : texteSansTrou[3]\n\n      texteSansTrou.push(`\\\\blockif{if \\\\booloperator{\\\\ovaloperator{\\\\ovalsensing{response} modulo \\\\ovalmove{${var1}}} = \\\\ovalnum{0}} then}\\n`)\n\n      texteScratch += '\\\\blockif{if \\\\booloperator{\\\\ovaloperator{'\n      texteScratch += choixLigne5a ? '\\\\ovalnum{ ................ }' : '\\\\ovalsensing{response}'\n      texteScratch += ' module'\n      texteScratch += choixLigne5b ? '\\\\ovalnum{ ................ }' : `\\\\ovalmove{${var1}}`\n      texteScratch += '} ='\n      texteScratch += choixLigne5c ? '\\\\ovalnum{ ................ }}' : '\\\\ovalnum{0}}'\n      texteScratch += '  then}\\n'\n\n      switch (choixScript[i]) {\n        case 1 : // .... est un multiple de ....\n          texteSansTrou.push(`{\\\\blocklook{say \\\\ovaloperator{group \\\\ovaloperator{group \\\\ovalsensing{response} and \\\\ovaloperator{group \\\\ovalnum{ is a multiple of } and \\\\ovalmove{${var1}}}} and \\\\ovalnum {.}} for \\\\ovalnum{0.5} seconds}\\n}\\n`)\n          texteScratch += `{\\\\blocklook{say \\\\ovaloperator{group \\\\ovaloperator{group ${choixLigne6Extremes ? '\\\\ovalnum{ ................ }' : '\\\\ovalsensing{response}'} and \\\\ovaloperator{group \\\\ovalnum{${choixLigne6Centre ? ' ................' : ' is a multiple of'}} and ${choixLigne6Extremes ? '\\\\ovalnum{ ................ }' : '\\\\ovalmove{' + var1 + '}'}}} and \\\\ovalnum{.}} for \\\\ovalnum{0.5} seconds}\\n}\\n`\n          break\n        case 2 : // .... divise ....\n          texteSansTrou.push(`{\\\\blocklook{say \\\\ovaloperator{group \\\\ovaloperator{group \\\\ovalmove{${var1}} and \\\\ovaloperator{group \\\\ovalnum{ divide } and \\\\ovalsensing{response}}} and \\\\ovalnum{.} } for \\\\ovalnum{0.5} seconds}\\n}\\n`)\n          texteScratch += `{\\\\blocklook{say \\\\ovaloperator{group \\\\ovaloperator{group ${choixLigne6Extremes ? '\\\\ovalnum{ ................ }' : '\\\\ovalmove{' + var1 + '}'} and \\\\ovaloperator{group \\\\ovalnum{${choixLigne6Centre ? ' ................' : ' split'}} and ${choixLigne6Extremes ? '\\\\ovalnum{ ................ }' : '\\\\ovalsensing{response}'}}} and \\\\ovalnum{.}} for \\\\ovalnum{0.5} seconds}\\n}\\n`\n          break\n        case 3 : // .... est un diviseur de  ....\n          texteSansTrou.push(`{\\\\blocklook{say \\\\ovaloperator{group \\\\ovaloperator{group \\\\ovalmove{${var1}} and \\\\ovaloperator{group \\\\ovalnum{ is a divisor of } and \\\\ovalsensing{response}}} and \\\\ovalnum {.}} for \\\\ovalnum{0.5} seconds}\\n}\\n`)\n          texteScratch += `{\\\\blocklook{say \\\\ovaloperator{group \\\\ovaloperator{group ${choixLigne6Extremes ? '\\\\ovalnum{ ................ }' : '\\\\ovalmove{' + var1 + '}'} and \\\\ovaloperator{group \\\\ovalnum{${choixLigne6Centre ? ' ................' : ' is a divisor of'}} and ${choixLigne6Extremes ? '\\\\ovalnum{ ................ }' : '\\\\ovalsensing{response}'}}} and \\\\ovalnum{.}} for \\\\ovalnum{0.5} seconds}\\n}\\n`\n          break\n      }\n      texteSansTrou.push(`\\\\blockvariable{add \\\\ovalnum{1} to \\\\selectmenu{${var1}}}\\n`)\n      texteScratch += `\\\\blockvariable{add ${choixLigne7a ? '\\\\ovalnum{ ................ }' : '\\\\ovalnum{1}'} to \\\\selectmenu{${choixLigne7b ? ' ................' : var1}}}\\n`\n\n      texteSansTrou.push('}\\n\\\\end{scratch}')\n\n      texteScratch += texteSansTrou[7]\n      texteScratch = scratchblock(texteScratch)\n\n      texte = texteScratch\n      texteCorr = scratchblock(texteSansTrou.join(''))\n\n      if (context.isAmc) {\n        this.autoCorrection = [{\n          enonce: this.consigne + '<br>' + texte + '<br>',\n          propositions: [{ statut: 3, sanscadre: true }]\n        }]\n      }\n\n      if (this.questionJamaisPosee(i, texte)) {\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this)\n  }\n  this.besoinFormulaireTexte = [\n    'Brick(s) to find',\n    'Numbers separated by hyphens\\n1: Line 2 (variable)\\n2: Line 2 (number)\\n3: Line 4\\n4: Line 5 (answer)\\n5: Line 5 (variable)\\n6: Line 5 (number) \\n7: Line 6 (variable and answer)\\n8: Line 6 (word(s))\\n9: Line 7 (number)\\n10: Line 7 (variable)\\n11: All of these choices'\n  ]\n  // 'Choice between 1 and 10. If this choice is less than the number of bricks to find, then the bricks will be chosen randomly among those to find. If this choice is greater than the number of bricks to find, then the bricks to find will be supplemented by bricks chosen randomly from the remaining ones.'\n  this.besoinFormulaire2Numerique = ['Number of bricks to find', 10]\n  this.besoinFormulaire3Texte = [\n    'Choice on the initial brick',\n    'Numbers separated by hyphens\\n1: The initial brick is a click on green flag.\\n2: The initial brick is a click on sprite.\\n3: The initial brick is a press on imposed key\\n4: The initial brick is a pressing a non-imposed key\\n5: One of the previous possibilities chosen at random'\n  ]\n  this.besoinFormulaire4Texte = [\n    'Choice on one of the final sentences',\n    'Numbers separated by hyphens\\n1: A final sentence contains: ... is a multiple of ...\\n2: A final sentence contains: ... divides ...\\n3: A final sentence contains: ... is a divisor of ...\\n4: One of the previous possibilities chosen at random'\n  ]\n}\n"],"names":["titre","amcReady","amcType","dateDePublication","dateDeModifImportante","uuid","ref","CompleterScriptDiviseurs","Exercice","lampeMessage","context","scratchblock","nbBriquesATrouver","contraindreValeur","randint","briquesATrouver","gestionnaireFormulaireTexte","range1","enleveDoublonNum","choixLigne2a","compteOccurences","choixLigne2b","choixLigne4","choixLigne5a","choixLigne5b","choixLigne5c","choixLigne6Extremes","choixLigne6Centre","choixLigne7a","choixLigne7b","briqueInitiale","choixScript","i","texte","texteCorr","cpt","tableauTouches","touchePressee","choice","nb1","var1","lettreDepuisChiffre","texteScratch","texteSansTrou","listeQuestionsToContenu"],"mappings":"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"}