マルバツゲーム
Posted feedbacks - diff
1行ミスってました。コピペはいけませんね・・・。あらためて
player1 won: 5826
player2 won: 2857
draw : 1317
という感じです。
1 2 3 4 5 6 7 8 9 | @@ -4,7 +4,7 @@
protected val field = new Array[Array[char]](size,size)
val len = size*size
val lines = _stline((v,v2) => (v,v2))++_stline((v,v2) => (v2,v))++
- List(((size-1).until(-1,-1)).map(v=>(v,v))) ++
+ List(((size-1).until(-1,-1)).map(v=> (v,(size-1-v)))) ++
List((0 until size).map(v=>(v,v)))
def _stline(f:(int,int) => Pair[int,int]) =
|
終了判定にバグ発見してしまいました。 ここを直して、100万回実行した結果以下のようになりました。 これでほぼ合っていそうです。 Result: Player1 won: 582337 Player2 won: 290884 draw game : 126779
1 2 3 4 | 15c15
< {new Pair(2,2), new Pair(1,1), new Pair(0,0)},
---
> {new Pair(0,2), new Pair(1,1), new Pair(2,0)},
|
判定おかしかったですね。 修正しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 79c79
< for ($i = 0; $i < 2; $i++) {
---
> for ($i = 0; $i < 3; $i++) {
92,95c92,95
< ($this->field[0][0] == $player &&
< $this->field[2][2] == $player) ||
< ($this->field[0][2] == $player &&
< $this->field[2][0] == $player)) {
---
> (($this->field[0][0] == $player &&
> $this->field[2][2] == $player) ||
> ($this->field[0][2] == $player &&
> $this->field[2][0] == $player))) {
|





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