exercices/can/2e/can2F09.js

import Exercice from '../../Exercice.js'
import { listeQuestionsToContenu, extraireRacineCarree, randint, sp, calcul, choice, texFractionReduite } from '../../../modules/outils.js'
import { propositionsQcm } from '../../../modules/interactif/questionQcm.js'
export const titre = 'Résoudre une équation avec une fonction de référence'
export const interactifReady = true
export const interactifType = 'qcm'

// Les exports suivants sont optionnels mais au moins la date de publication semble essentielle
export const dateDePublication = '27/12/2021' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag

/**
 * Modèle d'exercice très simple pour la course aux nombres
 * @author Gilles Mora
 * Référence
*/
export const uuid = 'a7515'
export const ref = 'can2F09'
export default function ResoudreEquationsFonctionDeReference () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.nbQuestions = 1
  this.tailleDiaporama = 2
  this.spacing = 2
  // Dans un exercice simple, ne pas mettre de this.listeQuestions = [] ni de this.consigne
  this.nouvelleVersion = function () {
    this.listeQuestions = []
    this.listeCorrections = []
    let texte, texteCorr, a, k, b, c
    switch (choice([1, 1, 2, 3])) { //
      case 1 :
        a = calcul(randint(0, 10) ** 2)
        b = choice([2, 3, 5, 7, 10, 11, 13, 14, 15, 17, 19, 21, 23])
        c = choice([-1, -2, -3, -5, -7, -10, -11, -13, -14, -15, -4, -9, -16, -25, -36, -49, -64, -81, -100])
        k = choice([a, a, b, b, c])
        if (this.interactif) {
          texte = `L'ensemble des solutions $S$ de l'équation $x^2=${k}$ est :
               `
          if (k === a) {
            if (k === 0) {
              this.autoCorrection[0] = {
                enonce: texte,
                options: { horizontal: true },
                propositions: [
                  {
                    texte: '$S=\\{0\\}$',
                    statut: true
                  },
                  {
                    texte: '$S=\\emptyset$',
                    statut: false
                  },
                  {
                    texte: '$S=\\{1\\}$',
                    statut: false
                  }
                ]
              }
            } else {
              this.autoCorrection[0] = {
                enonce: texte,
                options: { horizontal: true },
                propositions: [
                  {
                    texte: `$S=\\{-${Math.sqrt(k)};${Math.sqrt(k)}\\}$`,
                    statut: true
                  },
                  {
                    texte: `$S=\\{${Math.sqrt(k)}\\}$`,
                    statut: false
                  },
                  {
                    texte: `$S=\\{${k}\\}$`,
                    statut: false
                  }
                ]
              }
            }
          }
          if (k === b) {
            this.autoCorrection[0] = {
              enonce: texte,
              options: { horizontal: true },
              propositions: [
                {
                  texte: `$S=\\{-\\sqrt{${k}};\\sqrt{${k}}\\}$`,
                  statut: true
                },
                {
                  texte: `$S=\\{\\sqrt{${k}}\\}$`,
                  statut: false
                },
                {
                  texte: '$S=\\emptyset$',
                  statut: false
                }
              ]
            }
          }
          if (k === c) {
            this.autoCorrection[0] = {
              enonce: texte,
              options: { horizontal: true },
              propositions: [
                {
                  texte: '$S=\\emptyset$',
                  statut: true
                },
                {
                  texte: `$S=\\{-\\sqrt{${-k}};\\sqrt{${-k}}\\}$`,
                  statut: false
                },
                {
                  texte: `$S=\\{\\sqrt{${-k}}\\}$`,
                  statut: false
                }
              ]
            }
          }

          texte += propositionsQcm(this, 0).texte
        } else {
          texte = `Résoudre dans $\\mathbb{R}$ :<br>

       $x^2=${k}$`
        }

        texteCorr = ''
        if (k > 0) {
          texteCorr += `L'équation est de la forme $x^2=k$ avec $k=${k}$. Comme  $${k}>0$ alors l'équation admet deux solutions : $-\\sqrt{${k}}$ et $\\sqrt{${k}}$.<br>
          `
          if (extraireRacineCarree(k)[1] === k) {
            if (k === 1) {
              texteCorr += `Comme $-\\sqrt{${k}}=-${Math.sqrt(k)}$ et $\\sqrt{${k}}=${Math.sqrt(k)}$ alors
          les solutions de l'équation peuvent s'écrire plus simplement : $-${Math.sqrt(k)}$ et $${Math.sqrt(k)}$.<br>
          Ainsi,  $S=\\{-${Math.sqrt(k)}${sp(1)};${sp(1)}${Math.sqrt(k)}\\}$.`
            } else {
              texteCorr += `Ainsi, $S=\\{-\\sqrt{${k}}${sp(1)};${sp(1)}\\sqrt{${k}}\\}$.`
            }
          } else {
            if (k === a) {
              texteCorr += `Comme $-\\sqrt{${k}}=-${Math.sqrt(k)}$ et $\\sqrt{${k}}=${Math.sqrt(k)}$ alors
          les solutions de l'équation peuvent s'écrire plus simplement : $-${Math.sqrt(k)}$ et $${Math.sqrt(k)}$.<br>
          Ainsi,  $S=\\{-${Math.sqrt(k)}${sp(1)};${sp(1)}${Math.sqrt(k)}\\}$.`
            } else {
              texteCorr += `Comme $-\\sqrt{${k}}=-${extraireRacineCarree(k)[0]}\\sqrt{${extraireRacineCarree(k)[1]}}$ et $\\sqrt{${k}}=${extraireRacineCarree(k)[0]}\\sqrt{${extraireRacineCarree(k)[1]}}$ alors
              les solutions de l'équation peuvent s'écrire plus simplement : $-${extraireRacineCarree(k)[0]}\\sqrt{${extraireRacineCarree(k)[1]}}$ et $${extraireRacineCarree(k)[0]}\\sqrt{${extraireRacineCarree(k)[1]}}$.<br>
              Ainsi,  $S=\\{-${extraireRacineCarree(k)[0]}\\sqrt{${extraireRacineCarree(k)[1]}}${sp(1)};${sp(1)}${extraireRacineCarree(k)[0]}\\sqrt{${extraireRacineCarree(k)[1]}}\\}$.`
            }
          }
        } else {
          if (k === 0) {
            texteCorr += `L'équation est de la forme $x^2=k$ avec $k=${k}$. Comme $k=${k}$ alors L'équation admet une unique solution : $0$.<br>
          Ainsi, $S=\\{0\\}$.`
          } else {
            texteCorr += `L'équation est de la forme $x^2=k$. Comme $k=${k}$ et $${k}<0$, alors l'équation n'admet aucune solution.<br>
            Ainsi, $S=\\emptyset$.`
          }
        }
        this.canEnonce = `Résoudre dans $\\mathbb{R}$ l'équation $x^2=${k}$.`
        this.canReponseACompleter = ''
        break
      case 2 :
        k = randint(-5, 10)
        if (this.interactif) {
          texte = `L'ensemble des solutions $S$ de l'équation $\\sqrt{x}=${k}$ est :
                 `
          if (k > 0) {
            if (k !== 1) {
              if (k !== 1) {
                if (k === 2) {
                  this.autoCorrection[0] = {
                    enonce: texte,
                    options: { horizontal: true },
                    propositions: [
                      {
                        texte: `$S=\\{${k ** 2}\\}$`,
                        statut: true
                      },
                      {
                        texte: '$S=\\emptyset$',
                        statut: false
                      },
                      {
                        texte: `$S=\\{${k}\\}$`,
                        statut: false
                      }
                    ]
                  }
                } else {
                  this.autoCorrection[0] = {
                    enonce: texte,
                    options: { horizontal: true },
                    propositions: [
                      {
                        texte: `$S=\\{${k ** 2}\\}$`,
                        statut: true
                      },
                      {
                        texte: `$S=\\{${2 * k}\\}$`,
                        statut: false
                      },
                      {
                        texte: `$S=\\{${k}\\}$`,
                        statut: false
                      }
                    ]
                  }
                }
              }
            } else {
              this.autoCorrection[0] = {
                enonce: texte,
                options: { horizontal: true },
                propositions: [
                  {
                    texte: `$S=\\{${k}\\}$`,
                    statut: true
                  },
                  {
                    texte: '$S=\\emptyset$',
                    statut: false
                  },
                  {
                    texte: `$S=\\{${2 * k}\\}$`,
                    statut: false
                  }
                ]
              }
            }
          }

          if (k < 0) {
            this.autoCorrection[0] = {
              enonce: texte,
              options: { horizontal: true },
              propositions: [
                {
                  texte: '$S=\\emptyset$',
                  statut: true
                },
                {
                  texte: `$S=\\{\\sqrt{${-k}}\\}$`,
                  statut: false
                },
                {
                  texte: `$S=\\{${k ** 2}\\}$`,
                  statut: false
                }
              ]
            }
          }
          if (k === 0) {
            this.autoCorrection[0] = {
              enonce: texte,
              options: { horizontal: true },
              propositions: [
                {
                  texte: '$S=\\{0\\}$',
                  statut: true
                },
                {
                  texte: `$S=\\{${k + 1}\\}$`,
                  statut: false
                },
                {
                  texte: '$S=\\emptyset$',
                  statut: false
                }
              ]
            }
          }

          texte += propositionsQcm(this, 0).texte
        } else {
          texte = `Résoudre dans $[0${sp(1)};${sp(1)}+\\infty[$ :<br>

              $\\sqrt{x}=${k}$`
        }

        texteCorr = `Pour tout réel $x$ positif ou nul, l'équation $\\sqrt{x}=k$ admet :<br>
            $\\bullet~$ une solution  si $k\\geqslant 0$ : $k^2$ ;<br>
            $\\bullet~$  aucune solution si $k<0$.<br>
           `

        if (k < 0) {
          texteCorr += `L'équation est de la forme $\\sqrt{x}=k$. Comme $k=${k}$ et $${k}<0$ alors l'équation n'admet pas de solution.<br>
          Ainsi,   $S=\\emptyset$.
          `
        }
        if (k > 0 || k === 0) {
          texteCorr += `$k=${k}$ et $${k}>0$ donc l'équation admet une solution : $${k}^2=${k ** 2}$.<br>
           Ainsi $S=\\{${k ** 2}\\}$.
          `
        }
        this.canEnonce = `Résoudre dans $[0${sp(1)};${sp(1)}+\\infty[$ l'équation $\\sqrt{x}=${k}$.`
        this.canReponseACompleter = ''
        break

      case 3 :
        k = randint(-10, 10)
        if (this.interactif) {
          texte = `L'ensemble des solutions $S$ de l'équation $\\dfrac{1}{x}=${k}$ est :
                   `
          if (k !== 0) {
            if (k === 1) {
              this.autoCorrection[0] = {
                enonce: texte,
                options: { horizontal: true },
                propositions: [
                  {
                    texte: `$S=\\left\\{${texFractionReduite(1, k)}\\right\\}$`,
                    statut: true
                  },
                  {
                    texte: `$S=\\left\\{${texFractionReduite(1, -k)}\\right\\}$`,
                    statut: false
                  },
                  {
                    texte: '$S=\\emptyset$',
                    statut: false
                  }
                ]
              }
            } else {
              this.autoCorrection[0] = {
                enonce: texte,
                options: { horizontal: true },
                propositions: [
                  {
                    texte: `$S=\\left\\{${texFractionReduite(1, k)}\\right\\}$`,
                    statut: true
                  },
                  {
                    texte: `$S=\\left\\{${texFractionReduite(1, -k)}\\right\\}$`,
                    statut: false
                  },
                  {
                    texte: `$S=\\left\\{${k}\\right\\}$`,
                    statut: false
                  }
                ]
              }
            }
          }
          if (k === 0) {
            this.autoCorrection[0] = {
              enonce: texte,
              options: { horizontal: true },
              propositions: [
                {
                  texte: '$S=\\emptyset$',
                  statut: true
                },
                {
                  texte: '$S=\\left\\{0\\right\\}$',
                  statut: false
                },
                {
                  texte: '$S=\\left\\{-1\\right\\}$',
                  statut: false
                }
              ]
            }
          }
          texte += propositionsQcm(this, 0).texte
        } else {
          texte = `Résoudre dans $\\mathbb{R}^*$ :<br>

                $\\dfrac{1}{x}=${k}$`
        }

        texteCorr = `L'équation $\\dfrac{1}{x}=k$ admet :<br>
          $\\bullet~$ une unique solution si $k\\neq 0$ : $\\dfrac{1}{k}$.<br>
          $\\bullet~$ aucune solution si $k= 0$.<br>`

        if (k === 0) {
          texteCorr += `L'équation est de la forme $\\dfrac{1}{x}=k$ avec $k=${k}$. Comme $k=${k}$, alors l'équation n'admet pas de solution.<br>
            Ainsi,   $S=\\emptyset$.
            `
        }
        if (k !== 0) {
          texteCorr += `L'équation est de la forme $\\dfrac{1}{x}=k$ avec $k=${k}$. Comme $${k}\\neq 0$ alors l'équation admet une solution :
            $${texFractionReduite(1, k)}$.<br>
           Ainsi $S=\\left\\{${texFractionReduite(1, k)}\\right\\}$.
          `
        }
        this.canEnonce = `Résoudre dans $\\mathbb{R}^*$ l'équation $\\dfrac{1}{x}=${k}$.`
        this.canReponseACompleter = ''
        break
    }

    this.listeQuestions.push(texte)
    this.listeCorrections.push(texteCorr)
    listeQuestionsToContenu(this)
  }
}