Well, if only 16 possibilities, then just use a switch statement (not an if-else - too hairy IMO)
Jason Merrill | E-Learning Solutions | icfconsulting.com >>-----Original Message----- >>From: [EMAIL PROTECTED] [mailto:flashcoders- >>[EMAIL PROTECTED] On Behalf Of eric dolecki >>Sent: Wednesday, January 25, 2006 2:50 PM >>To: Flashcoders mailing list >>Subject: Re: [Flashcoders] checking combinations >> >>dab, abd, adb, bda, dba, ... all the same combination. >> >>On 1/25/06, Merrill, Jason <[EMAIL PROTECTED]> wrote: >>> >>> Aren't there 256 possible combinations? Or if one value can be null, >>> then 625? What about dab, cab, bac, da, ca, etc? Or are you saying for >>> the sake simplicity, cab is the same combination as abc and dab the same >>> as abd? >>> >>> Jason Merrill | E-Learning Solutions | icfconsulting.com >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>-----Original Message----- >>> >>From: [EMAIL PROTECTED] [mailto:flashcoders- >>> >>[EMAIL PROTECTED] On Behalf Of Andreas Weber >>> >>Sent: Wednesday, January 25, 2006 2:21 PM >>> >>To: Flashcoders mailing list >>> >>Subject: RE: [Flashcoders] checking combinations >>> >> >>> >>Seems to be an ispiring question/problem! >>> >> >>> >>Eric - if you'd go with the combo - Strings - these are the 16 >>> possible >>> >>combinations: >>> >> >>> >> ,a,ab,abc,abcd,abd,ac,acd,ad,b,bc,bcd,bd,c,cd,d >>> >> >>> >>(first one is an empty string if a && b && c && d are false) >>> >> >>> >>I'm not overly proud of how I found the combinations, but sometimes >>> nothing >>> >>beats brute force :-) >>> >> >>> >> >>> >>arr = ['a','b','c','d']; >>> >>numElems = arr.length; >>> >> >>> >>combos = new Array(); >>> >> >>> >>c=0; >>> >>while(c<100000){ >>> >> combo = ''; >>> >> for(var i=0; i<numElems; i++){ >>> >> if(Math.random() < 0.5){ >>> >> combo += arr[i]; >>> >> } >>> >> } >>> >> inArray = false; >>> >> for(var i=0, len=combos.length; i<len; i++){ >>> >> if(combo == combos[i]){ >>> >> inArray = true; >>> >> break >>> >> } >>> >> } >>> >> if(!inArray){ >>> >> combos.push(combo); >>> >> } >>> >> >>> >> c++; >>> >>} >>> >>combos.sort(); >>> >>trace(combos); >>> >>trace(combos.length); >>> >> >>> >> >>> >>-------------- >>> >>Andreas Weber >>> >>motiondraw.com >>> >> >>> >> >>> >> >>> >>-----Original Message----- >>> >>From: [EMAIL PROTECTED] >>> >>[mailto:[EMAIL PROTECTED] Behalf Of Martin >>> >>Wood >>> >>Sent: Wednesday, January 25, 2006 8:05 PM >>> >>To: Flashcoders mailing list >>> >>Subject: Re: [Flashcoders] checking combinations >>> >> >>> >> >>> >>i've got to go out now so cant give the full answer i have in my head, >>> >>but one way of tackling it is to make each state variable's value a >>> >>power of 2 >>> >> >>> >>a = 1 >>> >>b = 2 >>> >>c = 4 >>> >>d = 8 >>> >> >>> >>then you know that any combination of them has a unique value. (its >>> >>basically a 4 bit number) >>> >> >>> >>then to handle the dispatch depending on the state combination you can >>> >>build a function table. >>> >> >>> >>functionTable = new Array(); >>> >> >>> >>// create a handler for the combination a + b >>> >>functionTable[a + b] = Delegate.create(this,combinationAB); >>> >> >>> >>and when you check the variables just call the function directly from >>> >>the table : >>> >> >>> >>// a,b,c,d are just passed as boolean flags here >>> >>function handleUpdate(a:boolean,b:boolean,c:boolean,d:boolean) >>> >>{ >>> >> // taking advantage of a true being 1 in flash >>> >> // and ideally you would setup these numbers >>> >> // as static class variables >>> >> var state = a + (b * 2) + (c * 4) + (d * 8); >>> >> >>> >> // call the defined function >>> >> functionTable[state](); >>> >>} >>> >> >>> >>of course you could do a check first to see if the function is defined >>> >>and do something like log a warning or whatever is appropriate for >>> your >>> >>situation. >>> >> >>> >>hope that makes sense. >>> >> >>> >>martin >>> >> >>> >> >>> >>_______________________________________________ >>> >>Flashcoders mailing list >>> >>[email protected] >>> >>http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>> NOTICE: >>> This message is for the designated recipient only and may contain >>> privileged or confidential information. If you have received it in error, >>> please notify the sender immediately and delete the original. Any other use >>> of this e-mail by you is prohibited. >>> _______________________________________________ >>> Flashcoders mailing list >>> [email protected] >>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>> >>_______________________________________________ >>Flashcoders mailing list >>[email protected] >>http://chattyfig.figleaf.com/mailman/listinfo/flashcoders _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

