Aide pour "algorythme"

Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- - Dernière réponse : cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- 9 oct. 2005 à 17:15
Bonsoir,





J'aimerai réaliser l'algorythme suivant sans utiliser 50 "if" etc..





J'ai une trame T de 12 symboles.


Parmis ces douze symboles, certains sont pareils. (Le 3e, le 8e et le
10e sont pareils et le 5e et le 12e sont également identiques)


Il y'a trois variables : sp1, sp2, sp3, et pour chacune d'entre elles,
un symbole aléatoire n (donc 1<n<12) de la trame T.


Je voudrais que lorsqu'au moins deux variables sont égales (deux
symboles qui leurs sont associés sont pareils), la fonction x
retourne "1" pour les variables dont le symbole est le 3e, le 8e ou le
10e


ou qu'elle retourne "2" lorsque le symbole est le 5e ou le 12e...





Je ne sais pas si c'est très clair..





N'étant pas un roi des conditions, je souhaiterais un peu d'aide.





Je vous remercie.
Afficher la suite 

5 réponses

Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
0
Merci
function x(sp1, sp2, sp3) {

// 1 // Récupérer la valeur éventuelement commune à deux sp.

var sp (sp1 sp2 || sp1 == sp3) ? sp1 : ((sp2 == sp3) ? sp2 : Number.NaN);

// 2 // Trier : on renvoie le résultat souhaité suivant la valeur de sp.

switch (sp) {

case Number.NaN : return 1;

case 5 : return 2;

case 12 : return 2;

default : return 1;

}

}

SuperDevy, c la !
Commenter la réponse de SuperDevy
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Merci beaucoup.



Lorsque je fais :



var sp (sp1
sp2 || sp1 == sp3) ? sp1 : ((sp2 == sp3) ? sp2 : Number.NaN);


// 2 // Trier : on renvoie le résultat souhaité suivant la valeur
de sp.

switch (sp) {

case Number.NaN : gain=199;

case 2 : gain=(5555);

case 3 : gain=(1/100);

case 5 : gain=(5/10);

case 7 : gain=(1/10);

case 8 : gain=(1/100);

case 10 : gain=(1/100);

case 11 : gain=(1/10);

default : gain=1000;

}



J'ai toujours gain = 1, je ne comprend pas. Même si je n'ai pas au moins deux symboles pareil.
Commenter la réponse de cs_Aaron
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
0
Merci
C'est juste un oubli de ma part concernant la syntaxe de switch : il manquait les break!



var sp (sp1 sp2 || sp1 == sp3) ? sp1 : ((sp2 == sp3) ? sp2 : Number.NaN);

// 2 // Trier : on renvoie le résultat souhaité suivant la valeur de sp.

switch (sp) {

case Number.NaN :gain = 199;

case 2 : gain = (5555); break

case 3 : gain = (1/100); break

case 5 : gain = (5/10); break

case 7 : gain = (1/10); break

case 8 : gain = (1/100); break

case 10 : gain = (1/100); break

case 11 : gain = (1/10); break

default : gain = 1000;

}

trace(gain);

SuperDevy, c la !
Commenter la réponse de SuperDevy
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
La fonction trace me retourne :



0

0.01

0

0.01

0

0.1



On dirait que ça marche un essai sur deux ! Comment cela est-il possible ?
Commenter la réponse de cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Hello.



Je vais tenter d'écrire ce qui va suivre avec le plus de clarté
possible malgré l'atroce migraine névrotique que le problème dont il
est question m'a causé.



Tout d'abord, je reprend ce qui précède cette réponse :



sp1=Random(12)+1;

spin1.gotoAndPlay(Number(sp1));

sp2=Random(12)+1;

spin2.gotoAndPlay(Number(sp2));

sp3=Random(12)+1;

spin3.gotoAndPlay(Number(sp3));



var Val (sp1 sp2 || sp1 == sp3) ? sp1 : ((sp2 == sp3) ? sp2 : Number.NaN);

switch (Val) {

case Number.NaN : gain = 0; break;

case 2 :
gain = 1;
break;

case 3 :
gain = 0,01;
break;

case 5 :
gain = 0,5;
break;

case 7 :
gain = 0,1;
break;

case 8 :
gain = 0,01;
break;

case 10
: gain = 0,01;
break;

case 11
: gain = 0,1;
break;

default :
gain = 0;
break;

}



Je m'explique,

Le script ci-dessus génère trois nombres différents correspondant aux variables sp1, sp2, sp3

Ces nombres correspondent à différents symboles (12 au total) sur la trame T d'un clip C.

Certains de ces symboles sont les mêmes mais correspondent à des
nombres différents, autrement sur la trame T de ce clip C, il y'a des
frames identiques.

Pour le symbole A : 3, 8 et 10

Pour le symbole B : 7 et 11.

C'est à dire que les frames 3, 8 et 10 sont pareilles et il en va de même pour la 7e et la 11e.

Or, le code ci-dessus renvoie à une Case du Switch seulement si deux variables parmis sp1, sp2, sp3 sont identiques.

Par exemple : si sp1=3, sp2= 3, sp3=4 alors la valeur de la variable gain sera égal à 0,01

Le problème est que si sp1=3, sp2= 10, sp3=4 alors gain sera égal à Number.NaN (alors que les deux symboles sont identiques...Mais pas les chiffres.)



Est-ce qu'une âme dévouée pourrait m'aider dans ce casse-tête? Je la remercie par avance.



Arsenine.
Commenter la réponse de cs_Aaron