exercices/6e/6D10.js

import { choice, combinaisonListes, listeQuestionsToContenu, randint, texNombre } from '../../modules/outils.js'
import Exercice from '../Exercice.js'

export const titre = 'Convertir des durées'

/**
 * Conversions de durées.
 * * 1 : H vers min ou H ou min ou Hmin vers s
 * * 2 : h vers j-h
 * * 3 : s vers h min s
 * * 4 : h vers semaines j h
 * * 5 : toutes les conversions
 * @author Rémi Angot
 * Référence 6D10
 */
export const uuid = '8b0f9'
export const ref = '6D10'
export default function ConversionsDeDurees () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.sup = 5
  this.titre = titre
  this.consigne = 'Convertir.'
  this.nbCols = 1
  this.nbColsCorr = 1
  this.spacing = 2
  this.nbQuestions = 5

  this.nouvelleVersion = function (numeroExercice) {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    this.autoCorrection = []
    const listeSousTypeDeQuestionV1 = combinaisonListes(
      [1, 2, 3, 4],
      this.nbQuestions
    )
    const listeSousTypeDeQuestionV2 = combinaisonListes(
      [0, 1, 2],
      this.nbQuestions
    )
    let typesDeQuestions = []
    if (this.sup < 5) {
      typesDeQuestions = combinaisonListes([this.sup], this.nbQuestions)
    }
    if (parseInt(this.sup) === 5) {
      typesDeQuestions = combinaisonListes([1, 2, 3, 4], this.nbQuestions)
    }

    for (
      let i = 0, h, m, s, j, texte, texteCorr, cpt = 0;
      i < this.nbQuestions && cpt < 50;

    ) {
      if (typesDeQuestions[i] === 1) {
        const sousTypeDeQuestion = listeSousTypeDeQuestionV1[i]
        if (sousTypeDeQuestion === 1) {
          h = randint(2, 11)
          texte = `$${h}~\\text{h en minutes.}$`
          texteCorr = `$${h}~\\text{h} = ${h}\\times60~~\\text{min} = ${texNombre(
              h * 60
            )}~\\text{min}$`
        }
        if (sousTypeDeQuestion === 2) {
          h = choice([1, 2, 10, 20])
          texte = `$${h}~\\text{h en secondes.}$`
          texteCorr = `$${h}~\\text{h} = ${h}\\times3~600~\\text{s} = ${texNombre(
              h * 3600
            )}~\\text{s}$`
        }
        if (sousTypeDeQuestion === 3) {
          m = randint(2, 59)
          texte = `$${m}~\\text{min en secondes.}$`
          texteCorr = `$${m}~\\text{min} = ${m}\\times60~\\text{s} = ${texNombre(
              m * 60
            )}~\\text{s}$`
        }
        if (sousTypeDeQuestion === 4) {
          h = randint(1, 2)
          m = randint(2, 59)
          texte = `$${h}~\\text{h}~${m}~\\text{min en secondes.}$`
          texteCorr = `$${h}~\\text{h}~${m}~\\text{min} = ${h}\\times3~600~\\text{s} + ${m}\\times60~\\text{s} = ${texNombre(
              h * 3600
            )}+${texNombre(m * 60)}~\\text{s} = ${texNombre(
              h * 3600 + m * 60
            )}~\\text{s}$`
        }
      }
      if (typesDeQuestions[i] === 2) {
        j = randint(1, 6)
        h = randint(1, 23)
        texte = `$${texNombre(h + 24 * j)}~\\text{h en jours et heures.}$`
        texteCorr = `$${texNombre(
            h + 24 * j
          )}~\\text{h} = ${j}\\times24~\\text{h} + ${h}~\\text{h} = ${j}~\\text{j}~${h}~\\text{h}$`
      }

      if (typesDeQuestions[i] === 3) {
        h = listeSousTypeDeQuestionV2[i]
        m = randint(1, 59)
        s = randint(1, 59)
        if (h > 0) {
          texte = `$${texNombre(
              h * 3600 + m * 60 + s
            )}~\\text{s en heures, minutes et secondes.}$`
          texteCorr = `$${texNombre(
              h * 3600 + m * 60 + s
            )}~\\text{s} = ${texNombre(h * 3600)}~\\text{s}+${
              m * 60 + s
            }~\\text{s} =${h}~\\text{h}+${m}\\times60~\\text{s}+${s}~\\text{s}=${h}~\\text{h}~${m}~\\text{min}~${s}~\\text{s}$`
        } else {
          texte = `$${texNombre(m * 60 + s)}~\\text{s en heures, minutes et secondes.}$`
          texteCorr = `$${texNombre(
              m * 60 + s
            )}~\\text{s} = ${m}\\times60~\\text{s}+${s}~\\text{s}=${m}~\\text{min}~${s}~\\text{s}$`
        }
      }
      if (typesDeQuestions[i] === 4) {
        s = randint(1, 9) // nombre de semaines
        j = randint(1, 6)
        h = randint(1, 23)
        texte = `$${texNombre(
            h + 24 * j + 24 * 7 * s
          )}~\\text{h en semaines jours et heures.}$`
        if (s > 1) {
          // pour la gestion du pluriel de semaines
          texteCorr = `$${texNombre(h + 24 * j + 24 * 7 * s)}~\\text{h} = ${
              j + 7 * s
            }\\times24~\\text{h} + ${h}~\\text{h} = ${
              j + 7 * s
            }~\\text{j}~${h}~\\text{h} = ${s}\\times7~\\text{j} + ${j}~\\text{j}~${h}~\\text{h} = ${s}~\\text{semaines}~${j}~\\text{j}~${h}~\\text{h}$`
        } else {
          texteCorr = `$${texNombre(h + 24 * j + 24 * 7 * s)}~\\text{h} = ${
              j + 7 * s
            }\\times24~\\text{h} + ${h}~\\text{h} = ${
              j + 7 * s
            }~\\text{j}~${h}~\\text{h} = ${s}\\times7~\\text{j} + ${j}~\\text{j}~${h}~\\text{h} = ${s}~\\text{semaine}~${j}~\\text{j}~${h}~\\text{h}$`
        }
      }
      if (this.listeQuestions.indexOf(texte) === -1) {
        // Si la question n'a jamais été posée, on en crée une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
  this.besoinFormulaireNumerique = [
    'Niveau de difficulté',
    5,
    '1 : Conversions en secondes ou minutes\n2 : Conversions en jours-heures\n3 : Conversions en heures-minutes-secondes\n4 : Conversions en semaines-jours-heures\n5 : Mélange'
  ]
}