Poster un nouveau sujet Poster une réponse
mise au point de code
Auteur Message
monsalbert
Invité
Posté le : Ven 31 Aoû 2012, 17:22   Citer 

bonjour,

à propos de la course L - T ce code m'interpelle

enoncé : on tire au dé
-si le 6 sort le lièvre a gagné (en 1 coup).
-la tortue doit faire 5 avancées. elle fait une avancée si le dé fait 1 ,2,3,4 ou 5.
qui a le meilleur sort?

on propose ce code dont j'ai remplacé : If int(rand*6+1) <6 ( que signifie ?) par
If entAleat (1,6) <6

CODE
0-> P
0-> V
prompt N
While P < N
P+1->P
0->1
0->A
While I<6
I+1->I
If entAleat (1,6) <6
Then
A+1->A
End
End
If A=6
Then
Disp “TORTUE”
V+1->V
Else
Disp “LIEVRE”
End
End
Disp V

Si N=5 par exemple l'écran affiche 5 fois tortue.
A quoi sert la variable I?
De plus ici est-ce bien un 6 qui fait gagner le lèvre?

merci.

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 31 Aoû 2012, 18:10   Citer 

Un sujet portant sur cet algorithme existe il me semble.

Quelqu'un a ajoûté une boucle en fonction de N pour réitérer plusieurs fois l'expérience.
La boucle en fonction de I sert à générer 6 avancées de la tortue à chaque expérience.
Lorsqu'un tirage donne un aléatoire inférieur à 6, le compteur A d'avancée de la tortue est incrémenté.
Le programmeur a supposé que si le compteur A d'avancées de la tortue est inférieur à 6 après les 6 tirages, cela signifie que le lièvre a avancé au moins une fois, d'où une victoire automatique du lièvre.

Traductions :
rand=NbrAléat
int(X)=ent(X)
randInt(A,B)=entAléat(A,B) // n'est pas disponible dans la TI82 non-stat
Equivalence :
randInt(1,N)=int(1+N*rand)

If int(rand*6+1)<6 // si l'aléatoire compris entre 1 et 6 est inférieur à 6

La boucle For() est préférable à la boucle Repeat qui l'est à la boucle While dans la plupart des situations pouvant être abordées par cet algorithme.

Code
EffVar VPrompt N  // édité pour ajouter EffVar V
For(P,1,N
0->A
For(I,1,5
If entAleat(1,6)<6
A+1->A
End
If A=5
Then
Disp “TORTUE”
V+1->V
Else
Disp “LIEVRE”
End
End
Disp V



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Ven 31 Aoû 2012, 22:39   Citer 

@Linkakro: tu as oublie d initialiser la valeur de V a zero au debut du code winkle.gif

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Sam 01 Sep 2012, 12:06   Citer 

Bien que ce ne soit pas le but du sujet j'ai essayé d'optimiser ton code

Code

EffVar VPrompt N
For(B,1,N
If 5=somme(entaleat(1,6,5)<6
Then
V+1 -> V
Disp "TORTUE
Else
Disp"LIEVRE
End
End
V


Et si on remplace LIEVRE par LAPIN, on peut économiser 1 octet

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 01 Sep 2012, 18:00   Citer 

Bien ! happy.gif
Je n'utilise pas toujours les fonctions de liste, surtout quand il s'agit de rester cohérent avec les attentes de débutants à qui l'algorithmie est enseignée au lycée.
Pour mes amours de bourrins :

Code
Prompt N
sum(seq(5=sum(6>randInt(1,6,5)),B,1,N



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Sam 01 Sep 2012, 18:45   Citer 

Bein flute
Je dirai juste qu'on en apprend tous les jours godgrace.gif

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes