Project Euler 175

by uwi
@see http://projecteuler.net/index.php?section=problems&id=
♥0 | Line 66 | Modified 2010-05-06 10:57:52 | 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/n639
 */

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();
//            tr(solve(13, 17));
            tr(solve(123456789, 987654321));
            var g : int = getTimer();
            tr((g - s) + " ms");
        }

        private function solve(A : uint, B : uint) : String
        {
        		var g : uint = GCD(A, B);
        		A /= g;
        		B /= g;
        		tr(A, B);
        		var count : uint = 0;
        		var ret : Array = [];
        		var prev : uint = 2;
        		var ct : uint = 0;
        		while(A > 1 || B > 0){
        			if(A <= B){
        				B -= A;
        				if(prev != 0){
        					if(ct != 0)ret.push(ct);
        					ct = 0;
        					prev = 0;
        				}
        			}else{
        				A -= B;
        				if(prev != 1){
        					if(ct != 0)ret.push(ct);
        					ct = 0;
        					prev = 1;
        				}
        			}
        			ct++;
        		}
			if(prev != 2){
				if(ct != 0)ret.push(ct);
			}
			ret.reverse();
        		return ret.join(',');
        }
        
        private function GCD(a : uint, b : uint) : uint
        {
        		while(b > 0){
        			var c : uint = a;
        			a = b;
        			b = c % b;
        		}
        		return a;
        }

        private function tr(...o : Array) : void
        {
            _tf.appendText(o + "\n");
            _tf.scrollV = _tf.maxScrollV;
        }
    }
}