On 7/25/06, Mark Winterhalder <[EMAIL PROTECTED]> wrote:
Hmm... now that I'm having coffee and slowly waking up, I'm getting
serious doubts about how to do depth-first without function calls. I'm
probably wrong, sorry.

Interesting problem, though. Got me thinking.

So, here's my proposal for a function to flatten an array without
calling it recursively:



class Main {

        public static function main () : Void {
                var foo : Array = [0, [1, 2], 3, [4, [5, 6], 7], 8, [], 9];
                var out : String = flatten( foo ).toString();
                _root.createTextField(  "tf", 100, 0, 0, 1000, 100 );
                _root.tf.text = out;

        }
        
        public static function flatten( inArray : Array ) : Array {
                var outArray : Array = [];
                var list = inArray;
                list.index = 0;
                var item : Object;
                var index : Number;
                var length : Number;
                do {
                        index = list.index;
                        length = list.length;
                        while( index < length ) {
                                item = list[ index++ ];
                                if( item.__proto__ == Array.prototype ) {
                                        item.parent = list;
                                        list.index = index;
                                        list = item;
                                        index = 0;
                                        length = list.length;
                                } else {
                                        outArray.push( item );
                                }
                        }
                } while( list = list.parent );
                
                return outArray;
        }
}

<<<

I hope you have a big enough testcase to compare performance, it would
be interesting which one is faster.

Mark
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to