Project Euler 175
@see http://projecteuler.net/index.php?section=problems&id=
♥0 |
Line 66 |
Modified 2010-05-06 10:57:52 |
MIT License
archived:2017-03-20 06:44:34
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;
}
}
}