forked from: flash on 2009-8-1

by uwi
♥0 | Line 44 | Modified 2009-08-02 11:34:10 | MIT License
play

ActionScript3 source code

/**
 * Copyright uwi ( http://wonderfl.net/user/uwi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/nlIw
 */

// forked from uwi's flash on 2009-8-1
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.getTimer;
    // @see http://projecteuler.net/index.php?section=problems&id=
    public class Euler extends Sprite {
        private var _tf : TextField;
  
        public function Euler() {
            _tf = new TextField();
            _tf.width = 465;
            _tf.height = 465;
            addChild(_tf);
            
            var s : int = getTimer();
            t(solve(2000));
            var g : int = getTimer();
            t((g - s) + " ms");
        }

        private function solve(M : int) : int
        {
            var a : Array = new Array(M);
            var i : int;
            for(i = 0;i < M;i++)a[i] = int(Math.random() * 1000000) - 500000;
//            for(i = 0;i < M;i++)a[i] = int(Math.random() * 10) - 5;
            var sums : Array = [];
            var sum : Number = 0;
            for(i = 0;i < M;i++){
                if(
                    (a[i] >= 0 && sum < 0) ||
                    (a[i] < 0 && sum >= 0)
                ){
                    if(sum != 0)sums.push(sum);
                    sum = a[i];
                }else{
                    sum += a[i];
                }
            }
            if(sum != 0)sums.push(sum);
//            t(a);
            t(sums.length);
//            t(sums);
            return 0;
        }

	private function t(o : *) : void
	{
            _tf.appendText("" + o + "\n");
	}
    }
}