exercices/2e/2N11-1.js

import Exercice from '../Exercice.js'
import { mathalea2d } from '../../modules/2dGeneralites.js'
import { listeQuestionsToContenu, randint, combinaisonListes } from '../../modules/outils.js'
import { point, segment, crochetD, crochetG, intervalle } from '../../modules/2d.js'
import { context } from '../../modules/context.js'

export const titre = 'Associer un intervalle de  $\\mathbb{R}$ à une inéquation et son schéma sur une droite graduée'

/**
 * 2N11-1, ex 2N24
 * @Stéphane Guyon
 */
export const uuid = '31c01'
export const ref = '2N11-1'
export default function IntervallesDeR () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.titre = titre
  // this.consigne = ''
  this.nbQuestions = 4
  this.nbCols = 1
  this.nbColsCorr = 1

  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    const typesDeQuestionsDisponibles = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; let typesDeQuestions
    const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
    for (let i = 0, a, b, c, s, X1, X2, A, B, c1, c2, int, int1, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      typesDeQuestions = listeTypeDeQuestions[i]

      s = segment(0, 0, 12, 0)
      s.styleExtremites = '->'
      X1 = point(0, 0)
      X2 = point(12, 0)

      int = intervalle(X1, X2, 'black', 0)

      switch (typesDeQuestions) {
        // Cas par cas, on définit le type de nombres que l'on souhaite
        // Combien de chiffres ? Quelles valeurs ?
        case 1:
          a = randint(1, 15)
          b = randint(a, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, X2, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $x>${a}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$I=]${a};+\\infty[$`
          break

        case 2:
          a = randint(1, 15)
          b = randint(a, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          X2 = point(12, 0)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, X2, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $x\\geqslant ${a}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$I=[${a};+\\infty[$`
          break

        case 3:
          a = randint(1, 15)
          b = randint(a, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(X1, A, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $x<${a}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$I=]-\\infty;${a}[$`
          break

        case 4:
          a = randint(1, 15)
          b = randint(a, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(X1, A, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $x\\leqslant ${a}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$I=]-\\infty;${a}]$`
          break

        case 5:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetD(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $${a} < x < ${b}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$I=]${a};${b}[$`
          break

        case 6:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetD(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $${a}\\leqslant x<${b}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$I=[${a};${b}[$`
          break

        case 7:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetG(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $${a}\\leqslant x\\leqslant ${b}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$I=[${a};${b}]$`
          break

        case 8:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetG(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'intervalle $I$ de $\\mathbb{R}$ correspondant à l'inéquation $${a}< x\\leqslant ${b}$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$I=]${a};${b}]$`
          break

        case 9:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetG(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'inéquation correspondant à $x \\in ]${a};${b}]$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$${a}< x\\leqslant ${b}$`
          break
        case 10:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetG(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'inéquation correspondant à $x \\in [${a};${b}]$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$${a}\\leqslant x\\leqslant ${b}$`
          break
        case 11:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(6, 0, b)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4
          c2 = crochetD(B, 'red')
          c2.taille = context.isHtml ? 0.2 : 0.4
          int1 = intervalle(A, B, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'inéquation correspondant à $x \\in [${a};${b}[$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1, c2)
          texteCorr += `$${a}\\leqslant x< ${b}$`
          break
        case 12:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(2, 0, a)
          B = point(12, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4

          int1 = intervalle(A, B, 'red', 0); texte = `Déterminer l'inéquation correspondant à $x \\in ]${a};+\\infty[$ et représenter l'intervalle sur une droite graduée.`
          int1.epaisseur = 6
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$x > ${a}$`
          break
        case 13:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(7, 0, a)
          B = point(12, 0, b)
          c1 = crochetD(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4

          int1 = intervalle(X1, A, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'inéquation correspondant à $x \\in ]-\\infty;${a}[$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$x < ${a}$`
          break
        case 14:
          a = randint(1, 15)
          c = a + 1
          b = randint(c, 25)
          A = point(7, 0, a)
          B = point(12, 0, b)
          c1 = crochetG(A, 'red')
          c1.taille = context.isHtml ? 0.2 : 0.4

          int1 = intervalle(X1, A, 'red', 0)
          int1.epaisseur = 6
          texte = `Déterminer l'inéquation correspondant à $x \\in ]-\\infty;${a}]$ et représenter l'intervalle sur une droite graduée.`
          texteCorr = mathalea2d({
            xmin: -2,
            ymin: -2,
            xmax: 15,
            ymax: 2,
            scale: 0.6
          }, s, int, int1, c1)
          texteCorr += `$x \\leqslant ${a}$`
          break
      }
      if (this.questionJamaisPosee(i, a, b, typesDeQuestions)) { // Si la question n'a jamais été posée, on en créé une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
}