exercices/can/2e/can2F01.js

import Exercice from '../../Exercice.js'
import {
  randint, calcul, choice, ecritureParentheseSiNegatif, texNombrec,
  ecritureAlgebrique, rienSi1, texteEnCouleur
} from '../../../modules/outils.js'
export const titre = 'Calculer une image avec le second degré'
export const interactifReady = true
export const interactifType = 'mathLive'

/**
 * Modèle d'exercice très simple pour la course aux nombres
 * @author Gilles Mora
 * Référence can2F01
 * Date de publication
*/
export const uuid = 'b2c31'
export const ref = 'can2F01'
export default function CalculImageSecondDegre () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.typeExercice = 'simple' // Cette ligne est très importante pour faire faire un exercice simple !
  this.formatChampTexte = 'largeur15 inline'
  this.nbQuestions = 1
  this.tailleDiaporama = 2
  // Dans un exercice simple, ne pas mettre de this.listeQuestions = [] ni de this.consigne

  this.nouvelleVersion = function () {
    let x, a, b, c, d, expression
    switch (choice(['a', 'b', 'c', 'd'])) { //,
      case 'a':
        x = randint(1, 4)
        a = randint(1, 2)
        b = randint(1, 2)
        c = randint(2, 5)

        expression = `${rienSi1(a)}x^2+${rienSi1(b)}x+${c}`
        this.question = `On considère la fonction $f$ définie par $f(x)= ${expression}$. <br>

    Calculer $f(${x})$.`

        if (a === 1 & b !== 1) {
          this.correction = `$f(${x})=
          ${x}^2+${b}\\times ${ecritureParentheseSiNegatif(x)}+${c}=
          ${x * x}${ecritureAlgebrique(b * x)}+${c}=
          ${a * x * x}${ecritureAlgebrique(b * x)}+${c}=
          ${a * x * x + b * x + c}$<br>`
          this.correction += texteEnCouleur(` Mentalement : <br>
          On commence par calculer le carré de $${x}$, soit $${x}^2=${texNombrec(x ** 2)}$. <br>
   On calcule $${b}\\times ${x}$ que l'on ajoute à $${texNombrec(a * x ** 2)}$, soit $${a * x ** 2}+${b * x}=${a * x ** 2 + b * x}$.<br>
  Pour finir, on ajoute   $${c}$, ce qui donne $${texNombrec(a * x ** 2 + b * x)}+${c}$, soit $${texNombrec(a * x ** 2 + b * x + c)}$.<br>
    `)
        }
        if (a !== 1 & b !== 1) {
          this.correction = `$f(${x})=
          ${a}\\times${x}^2+${b}\\times ${x}+${c}=
          ${a}\\times ${x * x}${ecritureAlgebrique(b * x)}+${c}=
          ${a * x * x}${ecritureAlgebrique(b * x)}+${c}=
          ${a * x * x + b * x + c}$<br>`
          this.correction += texteEnCouleur(` Mentalement : <br>
              On commence par calculer le carré de $${x}$, soit $${x}^2=${texNombrec(x ** 2)}$. <br>
     On multiplie ensuite cette valeur par le coefficient devant $x^2$, soit $${a}\\times ${texNombrec(x ** 2)}=${texNombrec(a * x ** 2)}$.<br>
      On calcule $${b}\\times ${x}$ que l'on ajoute à $${texNombrec(a * x ** 2)}$, soit $${a * x ** 2}+${b * x}=${a * x ** 2 + b * x}$.<br>
      Pour finir, on ajoute   $${c}$, ce qui donne $${texNombrec(a * x ** 2 + b * x)}+${c}$, soit $${texNombrec(a * x ** 2 + b * x + c)}$.<br>
        `)
        }
        if (a === 1 & b === 1) {
          this.correction = `$f(${x})=
          ${x}^2+ ${x}+${c}=
          ${x * x}+${x}+${c}=
          ${x * x}${ecritureAlgebrique(b * x)}+${c}=
          ${x * x + b * x + c}$<br>`
          this.correction += texteEnCouleur(` Mentalement : <br>
          On commence par calculer le carré de $${x}$, soit $${x}^2=${texNombrec(x ** 2)}$. <br>
   On ajoute  $${x}$ soit $${a * x ** 2}+${x}=${x ** 2 + b * x}$.<br>
  Pour finir, on ajoute   $${c}$, ce qui donne $${texNombrec(a * x ** 2 + b * x)}+${c}$, soit $${texNombrec(a * x ** 2 + b * x + c)}$.<br>
    `)
        }
        if (a !== 1 & b === 1) {
          this.correction = `$f(${x})=
          ${a}\\times${x}^2+${b}\\times ${ecritureParentheseSiNegatif(x)}+${c}=
          ${a}\\times ${x * x}${ecritureAlgebrique(b * x)}=
          ${a * x * x}${ecritureAlgebrique(b * x)}+${c}=
          ${a * x * x + b * x + c}$<br>`
          this.correction += texteEnCouleur(` Mentalement : <br>
          On commence par calculer le carré de $${x}$, soit $${x}^2=${texNombrec(x ** 2)}$. <br>
 On multiplie ensuite cette valeur par le coefficient devant $x^2$, soit $${a}\\times ${texNombrec(x ** 2)}=${texNombrec(a * x ** 2)}$.<br>
 On ajoute  $${x}$ soit $${a * x ** 2}+${x}=${a * x ** 2 + b * x}$.<br>
  Pour finir, on ajoute   $${c}$, ce qui donne $${texNombrec(a * x ** 2 + b * x)}+${c}$, soit $${texNombrec(a * x ** 2 + b * x + c)}$.<br>
    `)
        }
        this.reponse = calcul(a * x * x + b * x + c)
        break
      case 'b':
        a = randint(1, 3)
        b = randint(-2, 2, [0])
        c = randint(1, 3)
        d = randint(-3, 3, [0, b])
        x = randint(-3, 3, [0])

        expression = `(${rienSi1(a)}x${ecritureAlgebrique(b)})(${rienSi1(c)}x${ecritureAlgebrique(d)})`
        this.question = `On considère la fonction $f$ définie par $f(x)= ${expression}$. <br>

          Calculer $f(${x})$.`
        if (a === 1 & c === 1) {
          this.correction = `$f(${x})=\\left(${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}\\right)\\left(${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}\\right)=(${a * x}${ecritureAlgebrique(b)})(${c * x}${ecritureAlgebrique(d)})=
          ${a * x + b}\\times${ecritureParentheseSiNegatif(c * x + d)}=${(a * x + b) * (c * x + d)}$<br>`
          this.reponse = calcul((a * x + b) * (c * x + d))
          this.correction += texteEnCouleur(` Mentalement : <br>
          On commence par "calculer" la première parenthèse :  $${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}=${a * x + b}$.<br>
           Puis la deuxième : $${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}=${c * x + d}$.<br>
        On fait le produit des nombres obtenus : $${a * x + b}\\times ${c * x + d}=${(a * x + b) * (c * x + d)}$.
    `)
        }
        if (a !== 1 & c !== 1) {
          this.correction = `$f(${x})=\\left(${rienSi1(a)}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}\\right)\\left(${c}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}\\right)=(${a * x}${ecritureAlgebrique(b)})(${c * x}${ecritureAlgebrique(d)})=
        ${a * x + b}\\times${ecritureParentheseSiNegatif(c * x + d)}=${(a * x + b) * (c * x + d)}$<br>`
          this.reponse = calcul((a * x + b) * (c * x + d))
          this.correction += texteEnCouleur(` Mentalement : <br>
        On commence par "calculer" la première parenthèse :  $${rienSi1(a)}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}=${a * x + b}$.
        <br>Puis la deuxième : $${c}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}=${c * x + d}$.<br>
        On fait le produit des nombres obtenus : $${a * x + b}\\times ${ecritureParentheseSiNegatif(c * x + d)}=${(a * x + b) * (c * x + d)}$.
    `)
        }
        if (a === 1 & c !== 1) {
          this.correction = `$f(${x})=\\left(${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}\\right)\\left(${c}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}\\right)=(${a * x}${ecritureAlgebrique(b)})(${c * x}${ecritureAlgebrique(d)})=
        ${a * x + b}\\times${ecritureParentheseSiNegatif(c * x + d)}=${(a * x + b) * (c * x + d)}$<br>`
          this.reponse = calcul((a * x + b) * (c * x + d))
          this.correction += texteEnCouleur(` Mentalement : <br>
        On commence par "calculer" la première parenthèse :  $${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}=${a * x + b}$.
        <br>Puis la deuxième : $${c}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}=${c * x + d}$.<br>
        On fait le produit des nombres obtenus : $${a * x + b}\\times ${c * x + d}=${(a * x + b) * (c * x + d)}$.
    `)
        }
        if (a !== 1 & c === 1) {
          this.correction = `$f(${x})=\\left(${a}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}\\right)\\left(${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}\\right)=(${a * x}${ecritureAlgebrique(b)})(${c * x}${ecritureAlgebrique(d)})=
        ${a * x + b}\\times${ecritureParentheseSiNegatif(c * x + d)}=${(a * x + b) * (c * x + d)}$<br>`
          this.reponse = calcul((a * x + b) * (c * x + d))
          this.correction += texteEnCouleur(` Mentalement : <br>
        On commence par "calculer" la première parenthèse :  $${a}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}=${a * x + b}$.
        <br>Puis la deuxième : $${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(d)}=${c * x + d}$.<br>
        On fait le produit des nombres obtenus : $${a * x + b}\\times ${ecritureParentheseSiNegatif(c * x + d)}=${(a * x + b) * (c * x + d)}$.
    `)
        }
        break
      case 'c':
        a = randint(-3, 3, 0)
        b = randint(1, 3)
        x = randint(-3, 3, [0])

        expression = `${a}-${rienSi1(b)}x^2`
        this.question = `On considère la fonction $f$ définie par $f(x)= ${expression}$. <br>

          Calculer $f(${x})$.`

        this.correction = `$f(${x})=${a}- ${ecritureParentheseSiNegatif(x)}^2=${a - b * x * x}$.<br>`
        this.reponse = calcul(a - b * x * x)
        if (b === 1) {
          this.correction += texteEnCouleur(` Mentalement : <br>
          On commence par "calculer" le carré de $${x}$ :  $${ecritureParentheseSiNegatif(x)}^2=${x * x}$.<br>
          On calcule alors $${a}-${x * x}=${a - x * x}$.<br>
    `)
        } else {
          this.correction = `$f(${x})=${a}- ${b}\\times ${ecritureParentheseSiNegatif(x)}^2=${a - b * x * x}$.<br>`
          this.correction += texteEnCouleur(` Mentalement : <br>
    On commence par "calculer" le carré de $${x}$ :  $${ecritureParentheseSiNegatif(x)}^2=${x * x}$.<br>
    Puis on multiplie le résultat par $${b}$ : $${b}\\times ${x ** 2}=${b * x * x}$.<br>
    On calcule alors : $${a}-${b * x * x}=${a - b * x * x}$.`)
        }
        break
      case 'd':
        a = randint(-4, 4, [0, -1, 1])
        b = randint(-4, 4, [0])
        c = randint(-4, 4, [0, -1, 1])
        d = randint(-4, 4, [0])
        x = randint(-2, 2, [0])

        expression = `(${a}x${ecritureAlgebrique(b)})^2`
        this.question = `On considère la fonction $f$ définie par $f(x)= ${expression}$. <br>

        Calculer $f(${x})$.`

        this.correction = `$f(${x})=
        \\left(${a}\\times${ecritureParentheseSiNegatif(x)}${ecritureAlgebrique(b)}\\right)^2=
        (${a * x}${ecritureAlgebrique(b)})^2=${ecritureParentheseSiNegatif(a * x + b)}^2
        =${(a * x + b) * (a * x + b)}$. <br>`
        this.reponse = calcul(a * x + b) * (a * x + b)

        this.correction += texteEnCouleur(` Mentalement : <br>
          On commence par "calculer" l'intérieur de la parenthèse, puis on élève le résultat au carré. 
    `)

        break
    }
    this.canEnonce = this.question// 'Compléter'
    this.canReponseACompleter = ''
  }
}