exercices/CM/CM019.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu } from '../../modules/outils.js'
import TrouverSolutionMathador from './_TrouverSolutionMathador.js'
export const titre = 'Générateur de compte est bon'
export const amcReady = true
export const interactifReady = false
export const amcType = 'AMCOpen'

/**
 * Générateur de tirages pour un compte est bon avec en correction la solution mathador (4 opérations différentes).
 * @author Jean-Claude Lhote
 * référence CM019
 */

export const uuid = '1e528'
export const ref = 'CM019'
export default function LeCompteEstBonV3 () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.consigne =
    'Écrire un calcul égal au nombre cible en utilisant les 5 nombres, 4 opérations différentes et éventuellement des parenthèses.'
  this.nbQuestions = 5
  this.nbCols = 2
  this.nbColsCorr = 2
  this.sup = 30
  this.sup2 = 70
  let maxSolution = 70

  this.nouvelleVersion = function () {
    this.autoCorrection = []
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    let solutionMathador = []
    let tirage, solution, expression
    let minSolution = parseInt(this.sup)
    maxSolution = parseInt(this.sup2)
    if (minSolution > maxSolution) {
      minSolution = maxSolution
      this.sup = this.sup2
    }
    for (
      let i = 0, texte, texteCorr, cpt = 0;
      i < this.nbQuestions && cpt < 50;

    ) {
      this.autoCorrection[i] = {}
      solutionMathador = TrouverSolutionMathador(minSolution, maxSolution)
      tirage = solutionMathador[0]
      solution = solutionMathador[1]
      expression = solutionMathador[3]

      texte = `Le tirage est le suivant : $${tirage[0]}~;~${tirage[1]}~;~${tirage[2]}~;~${tirage[3]}~;~${tirage[4]}$ <br>La cible est : $${solution}$`
      texteCorr = `Pour le tirage $${tirage[0]}~;~${tirage[1]}~;~${tirage[2]}~;~${tirage[3]}~;~${tirage[4]}$ et pour la cible $${solution}$, la solution est : $${expression}=${solution}$ `
      texteCorr += `ou $${solutionMathador[4]}$.<br>`
      texteCorr += 'En effet : <br>'
      for (let j = 0; j < 4; j++) {
        texteCorr += `$${solutionMathador[2][j]}$<br>`
      }
      if (this.questionJamaisPosee(i, ...solutionMathador)) {
        // Si la question n'a jamais été posée, on en crée une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        this.autoCorrection[i] = { enonce: texte, propositions: [{ texte: texteCorr, statut: 4, feedback: '' }] }
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
  this.besoinFormulaireNumerique = ['Limite inférieure', maxSolution]
  this.besoinFormulaire2Numerique = ['Limite supérieure', 100]
}