マルバツゲーム
Posted feedbacks - R
初めて投稿します。
そろっているかの判定には[1..100]>>=penさんの6228を利用させてもらいました。
> table(sapply(1:1000,function(x){marubatu()}))
Player1 Player2 draw
571 295 134
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | marubatu <- function(){
prime <- c(2*7*17,2*11,2*13*19,3*7,3*11*17*19,3*13,5*7*19,5*11,5*13*17)
my_rand <- sample(9,9)
ban <- c()
for(i in seq(9)){
if(i %% 2 != 0){
vec <- prime[(my_rand[((1:9) %% 2) * (1:9)])[(1:((i+1)/2))]]
if(c(2*3*5*7*11*13*17*19)^2 %% prod(vec) != 0){
return("Player1")
}else{}
}else{
vec <- prime[(my_rand[(1-((1:9) %% 2)) * (1:9)])[(1:(i/2))]]
if(c(2*3*5*7*11*13*17*19)^2 %% prod(vec) != 0){
return("Player2")
}else{
}
}
}
return("draw")
}
table(sapply(1:10000,function(x){marubatu()}))
|

syat
#6190()
Rating5/5=1.00
マルバツゲームは3×3の格子に交互に○と×を書き込み、先に縦・横・斜めに記号をそろえたほうが勝ちというおなじみのゲームです。
「毎ターン乱数を使って手を決めるランダムプレイヤー同士を対戦させる」というのが今回のお題です。 1万回対戦させ、勝ち・負け・引き分けの数を表示してください。 そして先手が有利であることを確かめてください。
良い手を思考するプレイヤーについては別のお題にしようと思っています。 プレイヤーを簡単に差し換えることができる設計を目指してください。
[ reply ]