flash on 2009-11-9

by uwi
♥0 | Line 57 | Modified 2009-11-10 03:10:31 | 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/3Erj
 */

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    public class FlashTest extends Sprite {
        private const N : int = 5;
        private var _d : Array;
        private var _ate : Array;
        
        private var _tf : TextField;
        
        public function FlashTest() {
            _d = new Array(N * N);
            var i : int, j : int;
            for(i = 0;i < N;i++){
                for(j = 0;j <= i;j++){
                    _d[i * N + j] = 0;
                }
            }
            
            _ate = [];
            _ate[-1] = 0;
            _ate[1] = 0;
            
            _tf = new TextField();
            addChild(_tf);
            _tf.text = "" + rec(1) + "\t" + _g;
        }
        
        private var _g : int = 0;
        
        private function rec(turn : int) : Boolean
        {
            _g++;
            if(_d[0] != 0)return false;
            var i : int, j : int, k : int;
            var u : int, v : int;
            
            // put
            var put : Boolean = false;
            for(i = 0;i < N;i++){
                for(j = 0;j <= i;j++){
                    if(_d[i * N + j] != 0)continue;
                    if(i == N - 1 || (_d[(i + 1) * N + j] != 0 && _d[(i + 1) * N + j + 1] != 0)){
                        if(i < N - 1 && _d[(i + 1) * N + j] == turn && _d[(i + 1) * N + j + 1] == turn){
                            continue;
                        }
                        put = true;
                        _d[i * N + j] = turn;
                        if(!rec(-turn)){
                            _d[i * N + j] = 0;
                            return true;
                        }
                        if(rec(turn)){
                            _d[i * N + j] = 0;
                            return true;
                        }
                        _d[i * N + j] = 0;
                    }
                }
            }
            if(!put)return !rec(-turn);
            return false;
        }
    }
}