Forum Programmation.shell Produire un certain nombre de question aleatoire

Posté par  .
Étiquettes : aucune
0
24
juil.
2005
J essaye de produire un certains nombres de question aleatoire ayant un theme(A, B ou C) et ayant une difficulte(facile, pas tres difficile et difficile). Je viens de me rendre compte que la boucle que j ai faite n est pas tres efficiente, parce que je recois au lieu de par exemple 10 question parfois 12, ou moins. Ce qui est d apres ce que j ai programme normale, mais en ce moment je ne trouve pas une autre solution. Est ce quelqu´un aurait une idee. Voici le code:

MAX_QUESTION_THEME=20
MAX_THEME=3
MAX_QUESTION=10

for i in $(cat abc.txt | head -$MAX_THEME); do
echo "theme$i" >> tmp_t
done

liste_diff=(facile pas_tres_difficile difficile);
for i in ${liste_diff[*]}; do
echo $i >> tmp_d
done

while [ `cat tmp_q | wc -l` -lt $MAX_QUESTION ]; do
for i in $(seq 0 $MAX_QUESTION ); do
NUM=$[($RANDOM%$MAX_QUESTION) + 1]
echo "f$NUM" >> tmp_q
i=$[ $i + 1 ];
done
sort tmp_q | uniq > tmp_q
done

Themes="`cat tmp_t`"
Difficultes="`cat tmp_d`"
Questions="`cat tmp_q`"

question=($Questions)
theme=($Themes)
difficulte($Difficultes)

nombre_de_question=${#questions[*]}
nombre_de_theme=${#themes[*]}
nombre_de_difficulte=${difficulltes[*]}


while [ `cat tmp | wc -l` -lt $MAX_QUESTION_THEME ]; do
for i in $(seq 0 $MAX_MAX_QUESTION_THEME ); do
echo -n "question(${question[$((RANDOM%nombre_de_question))]}, " >> tmp
echo -n "${theme[$((RANDOM%nombre_de_theme))]}, " >> tmp
echo "${difficulte[$((RANDOM%nombre_de_difficulte))]})." >> tmp
i=$[ $i + 1 ];
done
  • # Quelques remarques

    Posté par  . Évalué à 2.

    Je ne suis pas sur de bien comprendre ton problème mais il y a plein de truc que je trouve bizarre :

    - d'abord remplacer les `cat toto | wc -l` par des `wc -l toto` simplifierait ton code ;

    - Quand tu initialise nombre_de_difficulte, il n'y a pas de "#" ;

    - A quoi servent les "i=$[ $i + 1 ]; " dans tes boucles for ? Enfin je pense que tu les a rajouté pour tenter de résoudre le point suivant.

    - Dans le dernier for tu utilise la variable "$MAX_MAX_QUESTION_THEME", c'est une typo je suppose ;

    - Il semble qu'il manque un done à la fin (copier/coller foireux ?) ;

    - Et enfin surtout, tu utilise des fichiers temporaire, hors ces fichiers restent d'une exécution sur l'autre. Tu devrais les supprimer au début de ton script.
    • [^] # Okay

      Posté par  . Évalué à 1.

      - C est vrai il manque une # avant nombre_de_difficulté

      - je n ai pas fait attention, il manque un done a la fin

      - et MAX_MAX_QUESTION_THEME est MAX_QUESTION_THEME

      -i=$[ $i+1 ] n a pas de sens a cette place, j ai oublié d´effacer. J e crois que c est le fruit de mes nombreux essais.

      -Les fichiers temporaire je les supprime. Je n ai pas ecrit tout le code parce qu il est long.

      Je m excuse pour toutes ces erreurs.

      Sinon mon but est de genérer des questions aleatoires ayant un thème et une difficulté. Comme vous pouvez le constater, je fais mes premiers pas et ce que j ai programmé n est pas tres efficient et rapide.

    • [^] # Quelques remarques

      Posté par  . Évalué à 1.

      Il y a qq erreurs de frappe dans le code. Je n ai pas donné le code entier parce qu il est long. En faite ceci est la partie la plus importante.
      Sinon:
      - je supprime les fichier temp a la fin de mon script.

      - MAX_MAX_QUESTION_THEME est MAX_QUESTION_THEME

      - i=$[ $i+1 ] est le fruit de mes nombreux essais, il n a pas sa place là.

      - done manque éffectivement à la fin.

      En faite j ai donné le code pour que vous ayez une idée de ce que j ai déja fait, et peut être m aider a l ameliorer. Je m excuse pour toutes ces erreurs.

Suivre le flux des commentaires

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