exercices/can/2e/can2G13.js

import Exercice from '../../Exercice.js'
import { randint, choice, ecritureParentheseSiNegatif, texteEnCouleur, extraireRacineCarree, lettreMinusculeDepuisChiffre } from '../../../modules/outils.js'
export const titre = 'Calculer la norme d’un vecteur'
export const interactifReady = true
export const interactifType = 'mathLive'
export const dateDePublication = '6/12/2021'

/**
 * Modèle d'exercice très simple pour la course aux nombres
 * @author Florence Tapiero
 * Référence can2G13
 * Date de publication décembre 2021
*/
export const uuid = '3a0e1'
export const ref = 'can2G13'
export default function NormeVecteur () {
  Exercice.call(this)
  this.typeExercice = 'simple'
  this.nbQuestions = 1
  this.tailleDiaporama = 2
  this.formatChampTexte = 'largeur15 inline'
  this.nouvelleVersion = function () {
    let a, b, nom, reduction
    switch (choice(['a'])) {
      case 'a':
        a = randint(-9, 9)
        b = randint(-6, 6, a)
        nom = lettreMinusculeDepuisChiffre(randint(11, 26, [15, 24, 25]))
        reduction = extraireRacineCarree(a ** 2 + b ** 2)
        if (a ** 2 + b ** 2 === 1 || a ** 2 + b ** 2 === 4 || a ** 2 + b ** 2 === 9 || a ** 2 + b ** 2 === 16 || a ** 2 + b ** 2 === 25 || a ** 2 + b ** 2 === 36 || a ** 2 + b ** 2 === 49 || a ** 2 + b ** 2 === 64 || a ** 2 + b ** 2 === 81 || a ** 2 + b ** 2 === 100) {
          this.question = `Dans un repère orthonormé du plan, on donne $\\overrightarrow{${nom}}(${a};${b})$ .<br>

        Déterminer la norme du vecteur $\\overrightarrow{${nom}}$.<br>
        
        Donner le résultat sous la forme $\\sqrt{a}$ ou d'un nombre entier le cas échéant.`
          this.optionsChampTexte = { texteApres: '' }
          this.correction = `D'après le cours, si $\\overrightarrow{u}(x;y)$ alors $\\| \\overrightarrow{u} \\|=\\sqrt{x^2+y^2}$. On a donc : <br><br>
          $ \\| \\overrightarrow{${nom}} \\|=
          \\sqrt{${ecritureParentheseSiNegatif(a)}^2+${ecritureParentheseSiNegatif(b)}^2}=
          \\sqrt{${a ** 2}+ ${b ** 2}}=
          \\sqrt{${a ** 2 + b ** 2}}=
          ${Math.sqrt(a ** 2 + b ** 2)}$.<br><br>`
          this.correction += texteEnCouleur(`Comme $${a ** 2 + b ** 2}$ est un carré parfait, on simplie la racine carrée.
           `)
          this.reponse = Math.sqrt(a ** 2 + b ** 2)
        } else {
          this.question = `Dans un repère orthonormé du plan, on donne $\\overrightarrow{${nom}}(${a};${b})$ .<br>

          Déterminer la norme du vecteur $\\overrightarrow{${nom}}$.<br>

          Donner le résultat sous la forme $\\sqrt{a}$ ou d'un nombre entier le cas échéant.`
          this.optionsChampTexte = { texteApres: '' }
          this.correction = `D'après le cours, si $\\overrightarrow{u}(x;y)$ alors $\\| \\overrightarrow{u} \\|=\\sqrt{x^2+y^2}$. On a donc : <br><br>
          $\\| \\overrightarrow{${nom}} \\| =
          \\sqrt{${ecritureParentheseSiNegatif(a)}^2+${ecritureParentheseSiNegatif(b)}^2}=
          \\sqrt{${a ** 2}+ ${b ** 2}}=
          \\sqrt{${a ** 2 + b ** 2}}$<br><br>`
          this.correction += texteEnCouleur(`Comme $${a ** 2 + b ** 2}$ n'est pas un carré parfait, on ne simplifie pas (la réponse doit être sous la forme $\\sqrt{a}$ ou d'un entier). <br>
          `)
          this.reponse = [`\\sqrt{${a ** 2 + b ** 2}}`, `${Math.sqrt(a ** 2 + b ** 2)}`]
          if (reduction[0] !== 1) {
            this.correction += texteEnCouleur(`Remarque : sous forme simplifiée, la réponse est $${reduction[0]}\\sqrt{${reduction[1]}}$ car $${a ** 2 + b ** 2}=${reduction[0]}^2 \\times ${reduction[1]}$.`)
          }
        }
        break
    }
    this.canEnonce = this.question// 'Compléter'
    this.canReponseACompleter = ''
  }
}