exercices/4e/4G20-2.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, combinaisonListes } from '../../modules/outils.js'
import { ajouteChampTexte, setReponse } from '../../modules/gestionInteractif.js'
import { context } from '../../modules/context.js'
export const titre = 'Déterminer la racine carrée d\'un carré parfait (calcul mental)'
export const amcReady = true
export const amcType = 'AMCNum'
export const interactifType = 'mathLive'
export const interactifReady = true

/**
 * Déterminer la racine carrée d'un carré parfait compris entre 1 et 256
 * @author Stéphane Guyon et Guillaume Valmont
 * Référence 4G20-2
 * Mis à jour le 08/08/2021
 */
export const uuid = 'f5cbd'
export const ref = '4G20-2'
export default function RacineCareeDeCarresParfaits () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.titre = titre
  this.amcReady = amcReady
  this.amcType = amcType
  this.interactifReady = interactifReady
  this.interactifType = interactifType
  this.nbQuestions = 4
  this.nbCols = 2
  this.nbColsCorr = 2
  this.besoinFormulaireNumerique = ['Formulation de la question', 3, '1 : Calculer la racine de ...\n2 : Trouver le nombre positif dont le carré est ...\n3 : Mélange']
  this.besoinFormulaire2Numerique = ['Entier maximum', 2, '1 : 144\n2 : 256']
  this.sup = 1
  this.sup2 = 2

  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    this.autoCorrection = []
    let listeRacines = []
    let listeQuestions = []
    this.sup = parseInt(this.sup)
    this.sup2 = parseInt(this.sup2)
    if (this.sup === 1) {
      listeQuestions = [1]
    } else if (this.sup === 2) {
      listeQuestions = [2]
    } else if (this.sup === 3) {
      listeQuestions = [1, 2]
    }
    listeQuestions = combinaisonListes(listeQuestions, this.nbQuestions) // pour varier les questions
    if (this.sup2 === 1) {
      listeRacines = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    } else {
      listeRacines = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
    }
    listeRacines = combinaisonListes(listeRacines, this.nbQuestions) // pour avoir une meilleure randomisation que randint
    for (let i = 0, texte, texteCorr, a, c, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      a = listeRacines[i]
      c = a * a
      if (listeQuestions[i] === 1) {
        texte = `Calculer de tête $\\sqrt{${c}}=$` + ajouteChampTexte(this, i)
      } else if (listeQuestions[i] === 2) {
        texte = `Quel est le nombre positif dont le carré est $${c}$ ?` + ajouteChampTexte(this, i)
      }
      texteCorr = `$\\sqrt{${c}}=${a}$`
      setReponse(this, i, a)

      if (this.listeQuestions.indexOf(texte) === -1) {
        if (context.isAmc) {
          if (listeQuestions[i] === 1) {
            this.autoCorrection[i].enonce = `$\\sqrt{${c}}=\\dots$`
            this.autoCorrection[i].propositions = [{ texte: `$\\sqrt{${c}}=${a}$`, statut: '' }]
          } else {
            this.autoCorrection[i].enonce = `$${c} = \\dots^2$`
            this.autoCorrection[i].propositions = [{ texte: `$${c}=${a}^2$`, statut: '' }]
          }
          this.autoCorrection[i].reponse.param = { digits: 2, decimals: 0, exposantNbChiffres: 0, exposantSigne: false, signe: false }
        }
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
}