mtsuyugu #6208(2008/04/23 15:29 GMT) [ JavaScript ] Rating0/0=0.00
MARU: 5765 BATU: 2707 DRAW: 1528 となりました。
RandPlayer.prototype.think の部分を修正することで Player を差し替えることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
var Board = function(){ this.init(); }; Board.prototype = { cell : [], size : 3, init : function(){ for( var i = 0; i < this.size; i++ ){ this.cell[i] = []; } }, isVacant : function( x, y ){ return this.cell[x][y] == undefined; }, put : function( x, y, id ){ this.cell[x][y] = id; }, judge : function( x, y ){ var i; var size = this.size; var cell = this.cell; for( i = 1; i < size; i++ ){ if( cell[i-1][y] == undefined || cell[i-1][y] != cell[i][y] ) break; } if( i == size ) return true; for( i = 1; i < size; i++ ){ if( cell[x][i-1] == undefined || cell[x][i-1] != cell[x][i] ) break; } if( i == size ) return true; if( x == y ){ for( i = 1; i < size; i++ ){ if( cell[i-1][i-1] == undefined || cell[i-1][i-1] != cell[i][i] ) break; } if( i == size ) return true; } if( x + y == size - 1 ){ for( i = 1; i < size; i++ ){ if( cell[i-1][size-1] == undefined || cell[i-1][size-i] != cell[i][size-i-1] ) break; } if( i == size ) return true; } return false; } }; var Player = function(){}; Player.prototype = { put : function( b, x, y ){ b.put( x, y ); }, think: undefined, win : 0 }; var RandPlayer = function(){}; RandPlayer.prototype = new Player(); RandPlayer.prototype.think = function( b ){ var x,y,tmp; var size = b.size var max = size * size; while(1){ tmp = Math.floor(Math.random() * max ); x = Math.floor( tmp / size ); y = tmp % size; if( b.isVacant( x, y ) ) break; } return {x:x, y:y}; }; var b = new Board(); var max = b.size * b.size; var target; var p = [ new RandPlayer(), new RandPlayer() ]; for( var i = 0; i < 10000; i++ ){ b.init(); for( j = 0; j < max; j++ ){ target = p[j%2].think( b ); b.put(target.x, target.y, j%2 ); if( b.judge( target.x, target.y ) ) break; } if( j != max ){ p[j%2].win++; } } document.write("MARU: " + p[0].win + "<br/>" ); document.write("BATU: " + p[1].win + "<br/>" ); document.write("DRAW: " + (10000 - p[0].win - p[1].win) + "<br/>" );
Rating0/0=0.00-0+
[ reply ]
mtsuyugu
#6208()
[
JavaScript
]
Rating0/0=0.00
MARU: 5765 BATU: 2707 DRAW: 1528 となりました。
RandPlayer.prototype.think の部分を修正することで Player を差し替えることができます。
Rating0/0=0.00-0+
[ reply ]