File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/_Yohaku-8sQ3YLUT.js.map
{"version":3,"file":"_Yohaku-8sQ3YLUT.js","sources":["../../src/exercices/6e/_Yohaku.js"],"sourcesContent":["import { contraindreValeur, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport Exercice from '../Exercice.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\nimport { Yohaku } from '../../lib/outils/Yohaku'\nimport { ComputeEngine } from '@cortex-js/compute-engine'\nimport { context } from '../../modules/context.js'\n\nexport const titre = 'Yohaku Generator'\nexport const interactifReady = true\nexport const interactifType = 'custom'\nexport const amcReady = true\nexport const amcType = 'AMCOpen'\n\nexport const uuid = '3a377'\nexport const ref = 'Yohaku'\nexport const dateDeModificationImportante = '16/12/2023'\n/**\n * @author Jean-Claude Lhote\n * @constructor\n */\nexport default function FabriqueAYohaku () {\n Exercice.call(this)\n this.nbQuestions = 3\n this.sup = 30\n this.sup2 = 1\n this.sup3 = 3\n this.sup4 = false\n this.type = 'whole'\n this.yohaku = []\n this.besoinFormulaireNumerique = ['Maximum data value', 999]\n this.besoinFormulaire2Numerique = ['Operation', 2, '1: Addition\\n2: Multiplication']\n this.besoinFormulaire3Numerique = ['Grid size (number of horizontal boxes)', 5]\n this.besoinFormulaire4CaseACocher = ['With help', false]\n this.nouvelleVersion = function () {\n this.listeQuestions = []\n this.listeCorrections = []\n const type = this.type\n for (let i = 0, cpt = 0, texte, texteCorr; i < this.nbQuestions && cpt < 50;) {\n const donnees = []\n const taille = contraindreValeur(2, 5, this.sup3, 3)\n const valeurMax = contraindreValeur(taille ** 2 + 1, 999, this.sup, 30)\n const operateur = this.sup2 === 1 ? 'addition' : 'multiplication'\n const Case = this.sup4 ? randint(0, taille ** 2 - 1) : null\n const largeur = this.type === 'literals' ? operateur === 'addition' ? 4 : 5 : 2\n const yohaku = new Yohaku({\n type,\n taille,\n largeur,\n operation: operateur,\n cellules: donnees,\n Case,\n valeurMax\n })\n yohaku.calculeResultats()\n const mot = type === 'literals' ? ['expressions', 'contained'] : ['numbers', 'contents']\n this.introduction = operateur === 'addition'\n ? `The ${mot[0]} at the end of the row or column are the sums of the ${mot[0]} ${mot[1]} in the row or column.`\n : `The ${mot[0]} at the end of the row or column are the products of the ${mot[0]} ${mot[1]} in the row or column.`\n this.introduction += `<br>Complete ${this.nbQuestions === 1 ? 'there' : 'each'} grid with suitable ${mot[0]} (several possible solutions).<br>`\n texte = yohaku.representation({ numeroExercice: this.numeroExercice, question: i, isInteractif: this.interactif })\n texteCorr = 'The grid below is given as an example only, there are other solutions.<br><br>'\n yohaku.solution = true\n texteCorr += yohaku.representation({ numeroExercice: this.numeroExercice, question: i, isInteractif: false })\n const arrayReponses = []\n for (let l = 0; l < taille; l++) {\n for (let c = 0; c < taille; c++) {\n arrayReponses.push([`L${l + 1}C${c + 1}`, yohaku.cellules[l * taille + c]])\n }\n }\n const reponses = Object.fromEntries(arrayReponses)\n setReponse(this, i, reponses, { formatInteractif: 'tableMathlive' })\n this.yohaku[i] = yohaku\n if (this.questionJamaisPosee(i, ...yohaku.cellules)) {\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n if (context.isAmc) {\n this.autoCorrection[i] = {\n enonce: this.introduction + texte,\n propositions: [\n {\n texte: '',\n statut: 1, // OBLIGATOIRE (ici c'is the number of lines of the frame for the answer of the'élève sur AMC)\n sanscadre: true // EE : ce champ est facultatif et permet (si true) de cacher le cadre et les lignes acceptant la réponse de l'élève\n }\n ]\n }\n }\n i++\n }\n cpt++\n }\n listeQuestionsToContenu(this)\n }\n\n this.correctionInteractive = (i) => {\n const taille = parseInt(this.sup3)\n let cell\n const spanFeedback = []\n const saisies = []\n for (let l = 0; l < taille; l++) {\n spanFeedback[l] = []\n for (let c = 0; c < taille; c++) {\n cell = document.getElementById(`fieldTextEx${this.numeroExercice}Q${i}L${l + 1}C${c + 1}`)\n if (cell != null) {\n spanFeedback[l][c] = document.querySelector(`span#feedbackEx${this.numeroExercice}Q${i}L${l + 1}C${c + 1}`)\n if (this.yohaku[i].type === 'literals') { // on ne parse pas si c'est du littéral. On blinde pour les champs vide.\n if (cell.value != null) saisies[l * taille + c] = cell.value.replace(',', '.') ?? '0'\n } else {\n if (cell.value != null) saisies[l * taille + c] = cell.value.replace(',', '.').replace(/\\((\\+?-?\\d+)\\)/, '$1') ?? '0'\n // you can type integers in Yohaku fractions, but they must be changed to fractions for the calculation\n if (!isNaN(saisies[l * taille + c]) && this.yohaku[i].type.includes('frac')) {\n saisies[l * taille + c] = `\\\\frac{${saisies[l * taille + c]}}{1}`\n }\n }\n } else if (cell == null && l * taille + c !== this.yohaku[i].Case) {\n window.notify(`No L${l + 1}C${c + 1} cell in the document`)\n } else {\n saisies[l * taille + c] = this.yohaku[i].cellules[this.yohaku[i].Case]\n }\n }\n }\n let resultat\n if (this.saisieCoherente(saisies, taille, i)) {\n for (let l = 0; l < taille; l++) {\n for (let c = 0; c < taille; c++) {\n if (spanFeedback[l][c] != null) {\n spanFeedback[l][c].innerHTML = '😎'\n }\n }\n }\n resultat = 'OK'\n } else {\n for (let l = 0; l < taille; l++) {\n for (let c = 0; c < taille; c++) {\n if (spanFeedback[l][c] != null) {\n spanFeedback[l][c].innerHTML = '☹️'\n }\n }\n }\n resultat = 'KO'\n }\n return resultat\n }\n\n this.saisieCoherente = function (saisies, taille, question) {\n const engine = new ComputeEngine()\n let resultatOK = true\n const test = function (yohaku, i, valeurs, resultatOK) {\n const resultVal = engine.parse(yohaku[question].operate(valeurs))\n const resultatAttendu = engine.parse(yohaku[question].resultats[i])\n if (yohaku.type === 'literals') {\n resultatOK = resultatOK && resultVal.isSame(resultatAttendu)\n } else {\n resultatOK = resultatOK && resultVal.isEqual(resultatAttendu)\n }\n return resultatOK\n }\n for (let i = 0; i < taille; i++) {\n const valeurs = []\n for (let j = 0; j < taille; j++) {\n valeurs.push(saisies[i + j * taille] ?? '0')\n }\n resultatOK = test(this.yohaku, i, valeurs, resultatOK)\n }\n for (let i = taille; i < taille * 2; i++) {\n const valeurs = []\n for (let j = 0; j < taille; j++) {\n valeurs.push(saisies[(i - taille) * taille + j] ?? '0')\n }\n resultatOK = test(this.yohaku, i, valeurs, resultatOK)\n }\n return resultatOK\n }\n}\n"],"names":["titre","interactifReady","interactifType","amcReady","amcType","uuid","ref","dateDeModificationImportante","FabriqueAYohaku","Exercice","type","i","cpt","texte","texteCorr","donnees","taille","contraindreValeur","valeurMax","operateur","Case","randint","largeur","yohaku","Yohaku","mot","arrayReponses","l","c","reponses","setReponse","context","listeQuestionsToContenu","cell","spanFeedback","saisies","resultat","question","engine","ComputeEngine","resultatOK","test","valeurs","resultVal","resultatAttendu","j"],"mappings":"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"}