Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Simulateur de lancé de dé a 6 face - Page 1 / 2
leo_85 le 12/04/2015 à 22:25
un programme a la con tout est dans le titre se serait juste pas mal de l'optimiser vue qu'au delà de 50 lancé ça rame:
Code
EffEcr
0->A
0->B
0->C
0->D
0->E
0->F
0->G
0->H
Disp "Combiens de","lancé?
Input B
EffEcr
Lbl 1
If B>0
entAléat(1,6->A
B-1->B
If A=1
Then
C+1->C
End
If A=2
Then
D+1->D
End
If A=3
Then
E+1->E
End
If A=4
Then
F+1->F
End
If A=5
Then
G+1->G
End
If A=6
Then
H+1->H
End
If B>0
Goto 1
Disp "1","2","3","4","5","6
Output(1,4,C
Output(2,4,D
Output(3,4,E
Output(4,4,F
Output(5,4,G
Output(6,4,H
snap le 12/04/2015 à 22:39
Toujours jouer avec des listes, c'est beaucoup mieux <3
Code
EffEcr
effList L1
Disp "Combiens de","lancé?
Input B
EffEcr
for(A,1,B
entaleat(1,6->C
1+L1(C->L1(C
end
Disp "1","2","3","4","5","6
for(A,1,6
Output(A,4,L1(A
end
m@thieu41 le 12/04/2015 à 22:43
Salut !
entAleat(1,6,x permet de renvoyer une liste de x lances, quelques opérations sur les listes et c'est joue

snap le 12/04/2015 à 22:46
Malheureusement,je ne me souviens plus de ce que les listes ont a offrir comme fonctions

Faudrait que je m'y remette !
Dans tous les cas, je pense que pour ce résultat même avec les fonctions sur les listes, ça prendrait autant de place^^
leo_85 le 12/04/2015 à 22:57
a
j'ai une erreur sur le symbole sto
snap le 12/04/2015 à 23:05
Tu n'as pas écris le deuxième L1 dans la ligne, faute de frappe? Si oui, alors essaie de fermer les parenthese

m@thieu41 le 12/04/2015 à 23:12
En version courte :p
Code
Input "NB LANCES:",X
entAleat(1,6,X->L1
EffEcr
Disp 1,2,3,4,5,6
For(A,1,6
Output(A,4,somme(L1=A
End
snap le 12/04/2015 à 23:17
Ah gg ! Je sais pas si ça marche mais je pense que tu l'as testé ^^
Je savais pas que ça donnerais ce résultat somme (L1=A) c'est quand même bizarre faut l'avouer ! ^^ je pense pas pouvoir faire mieux la xDsnap le 12/04/2015 à 23:20
Ah bah je viens de penser à quelque chose !
Test ça stp <3
Code
Input "NB LANCES:",X
EffEcr
entAleat(1,6,X
For(A,1,6
Disp A
Output(A,4,somme(rep=A
End
Si ça marche on gagne 4 octets !! oO
m@thieu41 le 12/04/2015 à 23:24
Je n'ai pas pu le tester mais pour explication :
L1=A renvoie une liste de booleens de la meme taille que L1 avec chaque terme qui vaut 1 si celui de L1 valait A et 0 sinon.
En prenant la somme on a donc le nombre de termes égaux a A

Ex :
{1,3,2,1}=1 renvoie {1,0,0,1}
Et somme({1,0,0,1} renvoie 2 ce qui est bien le résultat voulu
Edit: Oui effectivement il restait des optimisations a faire bien vu

leo_85 le 13/04/2015 à 10:57
le prog de M@thieu41 marche a la perfection et rame beaucoup moin que le miens

200 lancé en 20sec

celui de snap aussi je viens de le tester
je pensais pas être aussi mauvais quand je vois la page que j'ai écris...

leo_85 le 14/04/2015 à 11:34
problème que je ne constate que maintenant : impossible de dépasser la barre des 950 lancé : erreur mémoire contrairement a ma version pas du tout optim@thieu41 le 14/04/2015 à 13:51
Oui la taille des listes est limitée a 999... Mais on peut se débrouiller quand même je poste ça ce soir j'ai pas le temps la ^^leo_85 le 14/04/2015 à 15:30
ok alors j’attends

snap le 14/04/2015 à 20:07
Comme ça je dirais que ça devrais marcher, mais je suis pas très sur xD
Faudrait tester <3
Code
Input "NB LANCES:",X
EffEcr
effList L1
for(I,1,X/900+1
entAleat(1,6,900-(-X+900(I+1))(I=partEnt(X/900+1
For(A,1,6
L1(A)+somme(rep=A->L1(A
end
end
for(A,1,6
Disp A
Output(A,4,L1(A
End
leo_85 le 15/04/2015 à 11:26
erreur de domaine a la 5ème ligne de ton code
Code
entAleat(1,6,900-(-X+900(I+1))(I=partEnt(X/900+1

snap le 15/04/2015 à 15:39
Ah oui, je pense avoir trouvé le problème ! Essaie ça :
Code
entAleat (1,6,900-(900I-X)(I=partEnt (X/900+1
leo_85 le 16/04/2015 à 11:15
du coup maintenant l'erreur est a
je sais pas si c'est du au fait que j'ai essayé qu'avec 10 lancés

snap le 16/04/2015 à 14:20
C'est peut-être dû au EffList L1, je sais plus si ça supprime la liste ou si ça met tout à 0, essaie, à la place de ce EffList L1 de mettre :
Et normalement ça devrais marcher avec n'importe quel nombre de lancé

Mingerton le 16/04/2015 à 18:40
EffList supprime la liste en effet. Pour la ramener à 0, tu peux aussi utiliser ceci qui est plus léger :
Si c'est juste ponctuel et que tu penses réutiliser L1 telle qu'elle était avant d'être effacée, tu peux aussi écrire 0L1 quand tu en as besoin.
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.