Aide pour "algorythme"

cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009 - 6 sept. 2005 à 21:38
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.

5 réponses

SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
7 sept. 2005 à 00:35
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 !
0
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
7 sept. 2005 à 14:05
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.
0
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
7 sept. 2005 à 16:07
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 !
0
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
7 sept. 2005 à 16:59
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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.
0
Rejoignez-nous