exercices/HP/HPC100.js

/* eslint-disable no-unused-vars */
/* eslint-disable no-sequences */
/* eslint-disable no-unexpected-multiline */
import { xcas, listeQuestionsToContenu, randint } from '../../modules/outils.js'
import Exercice from '../Exercice.js'
import { context } from '../../modules/context.js'
export const dateDePublication = '30/10/2021'
export const titre = 'Division de polynômes'

/**
 * Description didactique de l'exercice
 * @author Eric Schrafstetter
 * Référence
*/
export const uuid = 'ad6a2'
export const ref = 'HPC100'
export default function DivisionDePolynomes () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.consigne = 'Calculer le quotient Q(x) de la division de P(x) par D(x)'

  this.nbQuestions = 2
  this.nbCols = 1 // Uniquement pour la sortie LaTeX
  this.nbColsCorr = 1 // Uniquement pour la sortie LaTeX
  context.isHtml ? (this.spacingCorr = 2) : (this.spacingCorr = 1)
  this.sup = 1 // Niveau de difficulté
  this.tailleDiaporama = 3 // Pour les exercices chronométrés. 50 par défaut pour les exercices avec du texte
  this.video = '' // Id YouTube ou url
  this.typeExercice = 'XCas'

  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées

    for (let i = 0, texte, etape, texteCorr, a, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      // Boucle principale où i+1 correspond au numéro de la question
      a = randint(-5, 5, 0)
      // Diviseur D(x)
      etape = [`D:=x+${a}`,
        'P:=simplify(D*product(randint(2)*x+(2*randint(1)-1)*randint(1,3),k,1,2)))',
        'E1:=simplify(lcoeff(P)*x^2*D)', // Etapes de la division
        'E2:=simplify(P-E1)',
        'E3:=simplify(lcoeff(E2)*x^(degree(E2)-1)*D)',
        'E4:=simplify(E2-E3)',
        'E5:=simplify(lcoeff(E4)*D)',
        'E6:=simplify(E4-E5)'
      ].forEach(e => `${xcas(e)}`)
      // Enoncé
      texte = `$P(x)=${xcas('P')} \\text{ par } D(x)=${xcas('D')}$`
      // Corrigé
      texteCorr = `$\\begin{array}{r|l} ${xcas('P')} & ${xcas('D')}\\\\`
      texteCorr += `\\underline{-(${xcas('E1')})} & \\overline{${xcas('quo(P,D)')}}\\\\`
      texteCorr += `${xcas('E2')} & \\\\`
      texteCorr += `\\underline{-(${xcas('E3')})} & \\\\`
      texteCorr += `${xcas('E4')} & \\\\`
      texteCorr += `\\underline{-(${xcas('E5')})} & \\\\`
      texteCorr += `${xcas('E6')} & \\end{array}$`
      texteCorr += `<br>D'où $Q(x)=${xcas('quo(P,D)')}$`

      if (this.listeQuestions.indexOf(texte) === -1) {
        // Si la question n'a jamais été posée, on en crée une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
  // this.besoinFormulaireNumerique = ['Niveau de difficulté', 3]
}

// python3 list-to-js.py pour faire apparaître l'exercice dans le menu