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

