exercices/4e/4C37.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, randint, combinaisonListes } from '../../modules/outils.js'
import { propositionsQcm } from '../../modules/interactif/questionQcm.js'
import { context } from '../../modules/context.js'
export const amcReady = true
export const amcType = 'qcmMono' // type de question AMC
export const titre = 'Déterminer le signe d\'une puissance'
export const interactifReady = true
export const interactifType = 'qcm'
export const dateDePublication = '30/06/2022' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag

/**
 * Déterminer le signe d'une puissance, on choisira la possibilité d'avoir un nombre positif ou négatif et un
 * exposant positif ou négatif
 * @author Delphine David
 * Référence 4C37
*/
export const uuid = '67432'
export const ref = '4C37'
export default class SignePuissance extends Exercice {
  constructor () {
    super()
    this.consigne = 'Déterminer le signe des expressions suivantes.'
    this.nbQuestions = 5
    this.nbCols = 1
    this.nbColsCorr = 1
    this.interactif = false
    this.interactifReady = interactifReady
    this.interactifType = interactifType
    this.amcType = amcType
    this.amcReady = amcReady
  }

  nouvelleVersion () {
    this.listeQuestions = []
    this.listeCorrections = []
    this.autoCorrection = []
    let listeTypeDeQuestions = ['a^n', '-a^n', '(-a)^n', '-(-a)^n']
    listeTypeDeQuestions = combinaisonListes(listeTypeDeQuestions, this.nbQuestions)
    let a = 0
    let n = 0
    for (let i = 0, texte, texteCorr, monQcm, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      switch (listeTypeDeQuestions[i]) {
        case 'a^n':
          a = randint(2, 9)
          n = randint(-9, 9, [-1, 0, 1])
          texte = `$${a}^{${n}}$`
          texteCorr = `$${a}^{${n}}$ est positif car $${a}$ est positif.`
          this.autoCorrection[i] = {}
          this.autoCorrection[i].enonce = `${texte}\n`
          this.autoCorrection[i].propositions = [
            {
              texte: 'Positif',
              statut: true
            },
            {
              texte: 'Négatif',
              statut: false
            }
          ]
          break
        case '-a^n':
          a = randint(2, 9)
          n = 2 * randint(1, 4) // permet de n'avoir que des exposant positif, cas intéressant ici
          texte = `$-${a}^{${n}}$`
          texteCorr = `$-${a}^{${n}}$ est négatif. Attention il n'y a pas de parenthèses autour de $-${a}$.`
          this.autoCorrection[i] = {}
          this.autoCorrection[i].enonce = `${texte}\n`
          this.autoCorrection[i].propositions = [
            {
              texte: 'Positif',
              statut: false
            },
            {
              texte: 'Négatif',
              statut: true
            }
          ]
          break
        case '(-a)^n':
          a = randint(2, 9)
          n = randint(-9, 9, [-1, 0, 1])
          texte = `$(-${a})^{${n}}$`
          if (n % 2 === 0) {
            texteCorr = `$(-${a})^{${n}}$ est positif car l'exposant est pair.`
            this.autoCorrection[i] = {}
            this.autoCorrection[i].enonce = `${texte}\n`
            this.autoCorrection[i].propositions = [
              {
                texte: 'Positif',
                statut: true
              },
              {
                texte: 'Négatif',
                statut: false
              }
            ]
          } else {
            texteCorr = `$(-${a})^{${n}}$ est négatif car l'exposant est impair.`
            this.autoCorrection[i] = {}
            this.autoCorrection[i].enonce = `${texte}\n`
            this.autoCorrection[i].propositions = [
              {
                texte: 'Positif',
                statut: false
              },
              {
                texte: 'Négatif',
                statut: true
              }
            ]
          }
          break
        case '-(-a)^n':
          a = randint(2, 9)
          n = randint(-9, 9, [-1, 0, 1])
          texte = `$-(-${a})^{${n}}$`
          if (n % 2 === 0) {
            texteCorr = `$-(-${a})^{${n}}$ est négatif. L'exposant est pair donc $(-${a})^{${n}}$ est positif et son opposé est négatif.`
            this.autoCorrection[i] = {}
            this.autoCorrection[i].enonce = `${texte}\n`
            this.autoCorrection[i].propositions = [
              {
                texte: 'Positif',
                statut: false
              },
              {
                texte: 'Négatif',
                statut: true
              }
            ]
          } else {
            texteCorr = `$-(-${a})^{${n}}$ est positif. L' exposant est impair donc $(-${a})^{${n}}$ est négatif et son opposé est positif.`
            this.autoCorrection[i] = {}
            this.autoCorrection[i].enonce = `${texte}\n`
            this.autoCorrection[i].propositions = [
              {
                texte: 'Positif',
                statut: true
              },
              {
                texte: 'Négatif',
                statut: false
              }
            ]
          }
          break
      }
      monQcm = propositionsQcm(this, i)
      texte += monQcm.texte
      if (this.questionJamaisPosee(i, n)) {
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        if (i === 0) this.canReponseACompleter = monQcm.texte // FIXME Dans un exercice permettant plusieurs questions il n'y a qu'un this.canReponseACompleter ???
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
    if (!context.isHtml) {
      this.canEnonce = 'Quel est le signe de ' + this.listeQuestions[0] + '?'
      this.correction = this.listeCorrections[0]
    }
  }
}