flash on 2010-7-12

by enecre
♥0 | Line 60 | Modified 2010-07-16 19:34:58 | MIT License
play

ActionScript3 source code

/**
 * Copyright enecre ( http://wonderfl.net/user/enecre )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/gIQc
 */

package {
    import flash.text.TextField;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        private var tf:TextField;
        
        public function FlashTest() {
            // write as3 code here..
            tf = new TextField();
            tf.width = 465; tf.height = 465;
            tf.text = "32人で完全ランダムに4回戦しての平順上位5名を表示。大会10回分シミュレート。\n";
            addChild(tf);
            for(var i:int = 0; i<10;i++){
                combat(i);
            }
        }    
        
        private function combat(n:int):void{
            var players:Vector.<Player> = new Vector.<Player>(32);
            for(var i:int = 0; i<32; i++){
                players[i] = new Player();
            }

            for(var j:int = 0; j<4; j++){
                players = ExArray.shuffle(players);
                for(var k:int = 0; k < 32; k++){
                    players[k].addResult(k % 4 + 1);
                }
            }
            //5ninsensyutu
            players.sort(function(x:Player, y:Player):Number{return x.sum() - y.sum()});
            //hyouji
            tr((n+1) + "回目"); 
            tr(players.slice(0,5));
        }
        private function tr(...o:Array):void{
            tf.appendText(o + "\n");
            tf.scrollV = tf.maxScrollV;
        }
    }
}
class Player {
    private var results:Vector.<int>= new Vector.<int>(); 
    public function addResult(n:int):void{
        results.push(n);
    }
    
    public function sum():int{
        return results[0] + results[1] + results[2] + results[3];
    }
    
    public function toString():String{
        return "[" + results.join(",") + "]";
    }

}

class ExArray {
    static public function shuffle(arr:Vector.<Player>):Vector.<Player>{
        var l:int = arr.length;
        var newArr:Vector.<Player> = arr.concat();
        while(l){
            var m:int = Math.floor(Math.random()*l);
            var n:Player = newArr[--l];
            newArr[l] = newArr[m];
            newArr[m] = n;
            
        }
        return newArr;
    }
}