Journal Amis matheux, quel générateur d'exercice?

Posté par .
3
31
mai
2012

Ce journal, je le précise tout de suite, ne s'adresse presque qu'aux matheux. Comment reconnaître un matheux? C'est très simple, il a ri la première fois qu'on lui a donné l'anagramme de Banach-Tarski.

Je recherche une solution pour générer des exercices de maths (en latex, sinon je ne m'adresserais pas aux matheux) avec un dose réaliste d'aléatoire dedans, par exemple créer un exercice sur le théorème de Pythagore en tapant au hasard dans une liste de triplets pythagoriciens plutôt qu'en multipliant (3,4,5) par un nombre entier au hasard entre 1 et 3.

J'ai cherché, je suis même allé jusqu'à demander à mon ex-ami google, et il m'a proposé un certain nombre de solutions :

  • le célébrissime pyromaths, qui marche très bien, bien qu'il soit codé en python.
  • Le générateur d’interrogations qui utilise giac en interne à Latex pour gérer les calculs (si j'ai bien compris).
  • Megua, un paquetage pour sagemaths dont je ne suis pas encore très bien sûr s'il peut convenir ou pas. Il faut ajouter que c'est encore du python et qu'en outre, il faut installer sagemaths, ce qui fait deux gros inconvénients.

En outre, j'aimerais bien que le résultat puisse facilement s'intégrer dans un système de flashcards répétition espacée, genre Anki ou OpenCards (pardon, pas celui-là, il lui faut java7).

Peut-être un matheux, un physicien, voire éventuellement un informaticien (ne soyons pas trop sectaire, il peut sûrement arriver à un informaticien d'avoir une idée), aurait-il des idées ?

  • # Anagramme ?

    Posté par (page perso) . Évalué à 3.

    Comment reconnaître un matheux? C'est très simple, il a ri la première fois qu'on lui a donné l'anagramme de Banach-Tarski.

    On ne me l'a jamais donné, suis-je un matheux ?

  • # Pourquoi pas Python ?

    Posté par (page perso) . Évalué à 7.

    Tu n'as pas l'air de porter python dans ton coeur, une raison à cela ?
    Pourtant, pour avoir utilisé un peu sagemath et sympy pour du calcul formel (mais je suis informaticien, pas mathématicien), j'ai trouvé ça vraiment très intéressant et plutôt bien foutu. Etant écrit en python, c'est en plus facilement extensible et intégrable avec d'autres outils (matplotlib, numpy, scipy).

  • # Commentaire supprimé

    Posté par . Évalué à 10.

    Ce commentaire a été supprimé par l'équipe de modération.

  • # From scratch ?

    Posté par . Évalué à 1.

    Si tu n'aimes pas pyromath, tu peux toujours refaire ça à la main.

    Idée :
    Il faut définir un template latex, et puis générer quelques exercices dedans.
    Ca pourrait même faire une seule ligne en bash (ainsi trois fichiers, dont un dans ton langage favori.)
    cat head.tex - tail.tex <( ./script.py ) >> exo.tex && pdflatex exo.tex

    Pour moi python reste le plus simple à utiliser. Il dispose d'outils mathématiques puissants et reste concis.
    Bien que LaTeX soit lui-même un langage d programmation Turing-complet, je te déconseille d'essayer de programmer ce genre de choses avec.

    Résumé : Utilise pyromaths, parce que plus simple que ça, je ne pense pas que ça existe.

  • # LuaTeX ?

    Posté par . Évalué à 2.

    le nouveau moteur TeX s'appelle LuaTeX. Entre autres joyeusetés (utf8, fontes open Type, tout ça), il a la bonne idée de permettre des appels au langage Lua.
    Je ne dis pas que c'est aisé, mais il me semble que ça ouvre énormément de possibilités au niveau de la génération de documents (beaucoup, beaucoup de flexibilité). D'ici à créer un Framework pour générer des vrais exercices, tu risques d'en avoir pour un moment, mais c'est une piste à explorer.
    Tu peux peut-être commencer par jeter un œil sur cette première doc.

  • # Context MKIV

    Posté par . Évalué à 4.

    Avec ConTeXt (et LuaTeX), c’est relativement simple. Voilà un exemple vite fait (l’algorithme n’est peut-être pas parfait) :

    \startluacode
      userdata = userdata or {}
    
      math.randomseed(os.time())
    
      function userdata.randomx (xmax)
        return (math.random(3, xmax))
      end
    
      function userdata.getx()
        return (x)
      end
    
      function userdata.gety()
        if x%2 == 1 then
          return ((x^2 - 1) / 2)
        else
          return ((x / 2)^2 - 1)
        end
      end
    
      function userdata.getz()
        if x%2 == 1 then
          return ((x^2 + 1) / 2)
        else
          return ((x / 2)^2 + 1)
        end
      end
    \stopluacode
    
    \def\randomx#1%
      {\ctxlua{x = userdata.randomx(#1)}}
    
    \def\getx%
      {\ctxlua{context("\%.0f", userdata.getx())}}
    
    \def\gety%
      {\ctxlua{context("\%.0f", userdata.gety())}}
    
    \def\getz%
      {\ctxlua{context("\%.0f", userdata.getz())}}
    
    
    \starttext
    
      \dorecurse{10}{
        \randomx{100}
        \math{x = \getx}\\
        \math{y = \gety}\\
        \math{z = \getz}\blank[big]}
    
    \stoptext
    
    
    • [^] # Re: Context MKIV

      Posté par . Évalué à 2.

      Merci pour l'exemple. Cela fait longtemps que j'entends parler de luatex, mais je n'avais pas encore essayé.

      J'ai eu un mal fou à obtenir un pdf. Il faut dire que l'installation debian a un bug, il y a une commande luatools à lancer à la main pour que ça marche.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.