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 olosta . Évalué à 2.
- 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 jony . Évalué à 1.
- 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 jony . Évalué à 1.
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.