Project Euler 191

by uwi
@see http://projecteuler.net/index.php?section=problems&id=191
♥0 | Line 33 | Modified 2009-06-27 18:02:48 | 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/1o8R
 */

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.getTimer;
    // @see http://projecteuler.net/index.php?section=problems&id=191
    public class Euler191 extends Sprite {
        private var _tf : TextField;
  
        public function Euler191() {
            _tf = new TextField();
            _tf.width = 465;
            _tf.height = 465;
            addChild(_tf);
            
            var s : int = getTimer();
            _tf.appendText(solve(30).toString() + "\n");
            var g : int = getTimer();
            _tf.appendText((g - s).toString() + " ms\n");
        }
        
        private function solve(n : int) : Number
        {
            // (L,last A)=(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)
            var prev : Array = [1, 0, 0, 0, 0, 0];
            for(var i : int = 1;i <= n;i++){
                var cur : Array = [0, 0, 0, 0, 0, 0];
                cur[0] = prev[0] + prev[1] + prev[2];
                cur[1] = prev[0];
                cur[2] = prev[1];
                cur[3] = prev[3] + prev[4] + prev[5] + prev[0] + prev[1] + prev[2];
                cur[4] = prev[3];
                cur[5] = prev[4];
                prev = cur;
            }
            
            return prev[0] + prev[1] + prev[2] + prev[3] + prev[4] + prev[5];
        }
    }
}