Project Euler 151
@see http://projecteuler.net/index.php?section=problems&id=151
♥0 |
Line 49 |
Modified 2009-07-26 05:07:23 |
MIT License
archived:2017-03-09 17:04:24
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/jg8h
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.getTimer;
// @see http://projecteuler.net/index.php?section=problems&id=151
public class Euler151 extends Sprite {
private var _tf : TextField;
public function Euler151() {
_tf = new TextField();
_tf.width = 465;
_tf.height = 465;
addChild(_tf);
var s : int = getTimer();
t(solve());
var g : int = getTimer();
t((g - s) + " ms");
}
private function solve() : Number
{
var env : Array = [0, 1, 0, 0, 0, 0];
return rec(env, 0) - 2.0;
}
private function rec(env : Array, d : int) : Number
{
if(d == 16){
return 0;
}
var sum : int = 0;
for each(var v : int in env)sum += v;
var p : Number = sum == 1 ? 1.0 : 0.0;
for(var i : int = 1;i <= 5;i++){
if(env[i] == 0)continue;
var nenv : Array = env.concat();
nenv[i]--;
if(i <= 4){
for(var j : int = i + 1;j <= 4;j++){
nenv[j]++;
}
nenv[5]++;
}
p += env[i] / sum * rec(nenv, d + 1);
}
return p;
}
private function t(o : *) : void
{
_tf.appendText("" + o + "\n");
}
}
}