exercices/3e/3F10.js

import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, randint, choice, shuffle2tableaux } from '../../modules/outils.js'
import { setReponse } from '../../modules/gestionInteractif.js'
import { ajouteChampTexteMathLive } from '../../modules/interactif/questionMathLive.js'
import { context } from '../../modules/context.js'
export const titre = 'Lectures d\'images et d\'antécédents depuis un tableau de valeurs'
export const interactifReady = true
export const interactifType = 'mathLive'

/**
 * Un nombre à 2 chiffres (non multiple de 10) + 9
 * @author Rémi Angot
 * Référence 3F10
*/
export const uuid = 'b92da'
export const ref = '3F10'
export default function ImageAntecedentDepuisTableauOuFleche () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.titre = titre
  this.interactifReady = interactifReady
  this.interactifType = interactifType
  this.consigne = ''
  this.nbQuestionsModifiable = false
  this.nbCols = 1
  this.nbColsCorr = 1
  this.nbQuestions = 4

  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    const a = randint(-20, 20)
    const b = randint(-20, 20, [a])
    const c = randint(-20, 20, [a, b])
    const d = randint(-20, 20, [a, b, c])
    const e = randint(-20, 20, [a, b, c, d])
    const f = randint(-20, 20, [a, b, c, d, e])
    // a->b ; c->d ; e->d ; d->a ; f->c
    const ligneX = [a, c, e, d, f]
    const ligneY = [b, d, d, a, c]
    shuffle2tableaux(ligneX, ligneY) // mélange les 2 lignes de la même manière
    this.introduction = "Voici un tableau de valeurs d'une fonction $f$ : "
    this.introduction += '<br><br>'
    this.introduction += `$\\def\\arraystretch{1.5}\\begin{array}{|l|c|c|c|c|c|}
    \\hline
    x & ${ligneX[0]} & ${ligneX[1]} & ${ligneX[2]} & ${ligneX[3]} & ${ligneX[4]} \\\\
    \\hline
    f(x) & ${ligneY[0]} & ${ligneY[1]} & ${ligneY[2]} & ${ligneY[3]} & ${ligneY[4]} \\\\
    \\hline
    \\end{array}
    $
    `
    let texte = `Quelle est l'image de $${a}$ par la fonction $f$ ?`
    let texteCorr = `L'image de $${a}$ par la fonction $f$ est $${b}$, on note $f(${a})=${b}$.`
    setReponse(this, 0, b)
    texte += ajouteChampTexteMathLive(this, 0)
    this.listeQuestions.push(texte)
    this.listeCorrections.push(texteCorr)

    texte = `Quelle est l'image de $${c}$ par la fonction $f$ ?`
    texteCorr = `L'image de $${c}$ par la fonction $f$ est $${d}$, on note $f(${c})=${d}$.`
    texte += ajouteChampTexteMathLive(this, 1)
    setReponse(this, 1, d)
    this.listeQuestions.push(texte)
    this.listeCorrections.push(texteCorr)

    let texte3 = `Déterminer le(s) antécédent(s) de $${a}$ par la fonction $f$.`
    const texteCorr3 = `$${a}$ a un seul antécédent par la fonction $f$ qui est $${d}$, on note $f(${d})=${a}$.`
    setReponse(this, 2, d)
    texte3 += ajouteChampTexteMathLive(this, 2)

    let texte4 = `Déterminer le(s) antécédent(s) de $${d}$ par la fonction $f$.`
    const texteCorr4 = `$${d}$ a deux antécédents par la fonction $f$ qui sont $${c}$ et $${e}$, on note $f(${c})=f(${e})=${d}$.`
    setReponse(this, 3, [`${c};${e}`, `${e};${c}`], { formatInteractif: 'texte' })
    texte4 += ajouteChampTexteMathLive(this, 3)

    if (choice([true, false])) { // Une fois sur 2 on inverse les questions 3 et 4
      this.listeQuestions.push(texte3)
      this.listeCorrections.push(texteCorr3)
      this.listeQuestions.push(texte4)
      this.listeCorrections.push(texteCorr4)
    } else {
      this.listeQuestions.push(texte4)
      this.listeCorrections.push(texteCorr4)
      this.listeQuestions.push(texte3)
      this.listeCorrections.push(texteCorr3)
    }

    texte = `Recopier et compléter : $f(${c})=\\ldots$`
    texteCorr = `$f(${c})=${d}$`
    texte += ajouteChampTexteMathLive(this, 4)
    setReponse(this, 4, [`f(${c})=${d}`, `${d}`], { formatInteractif: 'texte' })
    this.listeQuestions.push(texte)
    this.listeCorrections.push(texteCorr)

    texte = `Recopier et compléter : $f(\\ldots)=${c}$`
    texteCorr = `$f(${f})=${c}$`
    texte += ajouteChampTexteMathLive(this, 5)
    setReponse(this, 5, [`f(${f})=${c}`, `${f}`], { formatInteractif: 'texte' })
    this.listeQuestions.push(texte)
    this.listeCorrections.push(texteCorr)

    if (this.interactif && context.isHtml) this.introduction = this.introduction + "<br><br> <em>S'il y a plusieurs réponses, séparer-les avec le point-virgule</em>.<br>"

    listeQuestionsToContenu(this)
  }
  // this.besoinFormulaireNumerique = ['Niveau de difficulté',3];
}