exercices/can/4e/can4L07.js

  1. import Exercice from '../../Exercice.js'
  2. import { randint, calcul, printlatex, texNombre, rienSi1, choice, ecritureAlgebrique, signe, ecritureParentheseSiNegatif } from '../../../modules/outils.js'
  3. export const titre = 'Réduire une expression littérale'
  4. export const interactifReady = true
  5. export const interactifType = 'mathLive'
  6. // Les exports suivants sont optionnels mais au moins la date de publication semble essentielle
  7. export const dateDePublication = '23/02/2022' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag
  8. // export const dateDeModifImportante = '24/10/2021' // Une date de modification importante au format 'jj/mm/aaaa' pour affichage temporaire d'un tag
  9. /**
  10. * Modèle d'exercice très simple pour la course aux nombres
  11. * @author Gilles Mora
  12. * Référence
  13. */
  14. export const uuid = '97664'
  15. export const ref = 'can4L07'
  16. export default function ReduireExp () {
  17. Exercice.call(this) // Héritage de la classe Exercice()
  18. this.typeExercice = 'simple' // Cette ligne est très importante pour faire faire un exercice simple !
  19. this.nbQuestions = 1
  20. this.tailleDiaporama = 2
  21. // Dans un exercice simple, ne pas mettre de this.listeQuestions = [] ni de this.consigne
  22. this.nouvelleVersion = function () {
  23. this.formatChampTexte = 'largeur15 inline'
  24. let a, b, c, choix, d, e
  25. switch (randint(1, 3)) {
  26. case 1: // ax+bx+c
  27. choix = choice([1, 2, 3])// 1,2
  28. if (choix === 1) {
  29. a = randint(1, 10)
  30. b = randint(1, 10)
  31. c = randint(1, 10)
  32. this.question = `Écrire le plus simplement possible : <br>
  33. $${rienSi1(a)}x+${rienSi1(b)}x+${texNombre(c)}$.`
  34. this.correction = `$${rienSi1(a)}x+${rienSi1(b)}x+${texNombre(c)}=(${a}+${b})x+${c}=${texNombre(calcul(a + b))}x+${texNombre(c)}$=`
  35. this.reponse = printlatex(`${texNombre(calcul(a + b))}x+${texNombre(c)}`)
  36. }
  37. if (choix === 2) {
  38. a = randint(1, 5)
  39. b = randint(1, 5)
  40. c = randint(1, 5)
  41. this.question = `Écrire le plus simplement possible : <br>
  42. $${rienSi1(b)}x+${texNombre(c)}+${rienSi1(a)}x$.`
  43. this.correction = `$${rienSi1(b)}x+${texNombre(c)}+${rienSi1(a)}x=(${a}+${b})x+${c}=${texNombre(calcul(a + b))}x+${texNombre(c)}$`
  44. this.reponse = printlatex(`${texNombre(calcul(a + b))}x+${texNombre(c)}`)
  45. }
  46. if (choix === 3) {
  47. a = randint(-4, -1)
  48. b = randint(-4, -1)
  49. c = randint(1, 10)
  50. this.question = `Écrire le plus simplement possible : <br>
  51. $${rienSi1(b)}x+${texNombre(c)}${rienSi1(a)}x$.`
  52. this.correction = `$${rienSi1(b)}x+${texNombre(c)}${rienSi1(a)}x=(${a}${b})x+${c}=${texNombre(calcul(a + b))}x+${texNombre(c)}$`
  53. this.reponse = printlatex(`${texNombre(calcul(a + b))}x+${texNombre(c)}`)
  54. }
  55. break
  56. case 2: // ax^2+bx+c+dx^2+/-x
  57. choix = choice([1, 2])// 1,2
  58. if (choix === 1) {
  59. b = randint(1, 3)
  60. c = randint(1, 3)
  61. d = randint(1, 5)
  62. e = choice([-1, 1])
  63. a = randint(1, 4, d)
  64. this.question = `Écrire le plus simplement possible : <br>
  65. $${rienSi1(a)}x^2+${rienSi1(b)}x+${texNombre(c)}+${rienSi1(d)}x^2${signe(e)}x$.`
  66. if (b + e === 0) {
  67. this.correction = `$${rienSi1(a)}x^2+${rienSi1(b)}x+${texNombre(c)}+${rienSi1(d)}x^2+x=(${a} + ${d})x^2+(${b}${ecritureAlgebrique(e)})x+${texNombre(c)}=${texNombre(calcul(a + d))}x^2+${texNombre(c)}$`
  68. this.reponse = printlatex(`${texNombre(calcul(a + d))}x^2+${texNombre(c)}`)
  69. } else {
  70. this.correction = `$${rienSi1(a)}x^2+${rienSi1(b)}x+${texNombre(c)}+${rienSi1(d)}x^2+x=(${a} + ${d})x^2+(${b}${ecritureAlgebrique(e)})x+${texNombre(c)}=${texNombre(calcul(a + d))}x^2+${texNombre(calcul(b + e))}x+${texNombre(c)}$`
  71. this.reponse = printlatex(`${texNombre(calcul(a + d))}x^2+${texNombre(calcul(b + e))}x+${texNombre(c)}`)
  72. }
  73. }
  74. if (choix === 2) {
  75. b = randint(-5, -2)
  76. c = randint(1, 5)
  77. d = randint(-5, -2)
  78. e = choice([-1, 1])
  79. a = randint(-5, 5, 0)
  80. this.question = `Écrire le plus simplement possible : <br>
  81. $${rienSi1(a)}x^2${ecritureAlgebrique(b)}x${ecritureAlgebrique(c)}${ecritureAlgebrique(d)}x^2${signe(e)}x$.`
  82. if (a + d === 0) {
  83. this.correction = `$${rienSi1(a)}x^2${ecritureAlgebrique(b)}x${ecritureAlgebrique(c)}${ecritureAlgebrique(d)}x^2+x=
  84. (${a}${ecritureAlgebrique(d)})x^2+(${b}${ecritureAlgebrique(e)})x${ecritureAlgebrique(c)}=
  85. ${ecritureAlgebrique(b + e)}x+${texNombre(c)}$`
  86. this.reponse = printlatex(`${texNombre(calcul(b + e))}x+${texNombre(c)}`)
  87. } else {
  88. this.correction = `$${rienSi1(a)}x^2${ecritureAlgebrique(b)}x${ecritureAlgebrique(c)}${ecritureAlgebrique(d)}x^2+x=
  89. (${a}${ecritureAlgebrique(d)})x^2+(${b}${ecritureAlgebrique(e)})x${ecritureAlgebrique(c)}=
  90. ${rienSi1(a + d)}x^2${ecritureAlgebrique(b + e)}x+${texNombre(c)}$`
  91. this.reponse = printlatex(`${texNombre(calcul(a + d))}x^2${texNombre(calcul(b + e))}x+${texNombre(c)}`)
  92. }
  93. }
  94. break
  95. case 3: // ax*bx ou ax*b
  96. choix = choice([1, 2])// 1,2
  97. if (choix === 1) {
  98. a = randint(-9, 9, 0)
  99. b = randint(-9, 9, [0, -1, 1])
  100. if (b > 0) {
  101. this.question = `Écrire le plus simplement possible : <br>
  102. $${rienSi1(a)}x\\times${b}x$.`
  103. } else { this.question = `Écrire le plus simplement possible : <br>$${rienSi1(a)}x\\times(${b}x)$=` }
  104. if (b > 0) { this.correction = `$${rienSi1(a)}x\\times${b}x=(${texNombre(a)}\\times ${ecritureParentheseSiNegatif(b)})x^2=${texNombre(calcul(a * b))}x^2$` } else { this.correction = `$${rienSi1(a)}x\\times (${b}x)=(${texNombre(a)}\\times ${ecritureParentheseSiNegatif(b)})x^2=${texNombre(calcul(a * b))}x^2$` }
  105. this.reponse = printlatex(`${texNombre(calcul(a * b))}x^2`)
  106. }
  107. if (choix === 2) {
  108. a = randint(-9, 9, 0)
  109. b = randint(-9, 9, [0, -1, 1])
  110. this.question = `Écrire le plus simplement possible : <br>
  111. $${rienSi1(a)}x\\times${ecritureParentheseSiNegatif(b)}$.`
  112. this.correction = `$${rienSi1(a)}x\\times${ecritureParentheseSiNegatif(b)}=${texNombre(calcul(a * b))}x$`
  113. this.reponse = printlatex(`${texNombre(calcul(a * b))}x`)
  114. }
  115. break
  116. }
  117. this.canEnonce = this.question// 'Compléter'
  118. this.canReponseACompleter = ''
  119. }
  120. }