linkakro le 31/08/2012 à 18:10
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
Samos le 01/09/2012 à 12:06
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
linkakro le 01/09/2012 à 18:00
Bien !

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